Files
SoundGame/docs/audio/round4-report.md
T
SoundGame Dev cc0f8c008d HTML5 重写:6 款游戏 + 用户系统 + 全局设置 + 5 轮迭代重构
- 新增 web/ 纯音频 HTML5 平台:共享引擎(手势/WebAudio 三层/设置/震动)、
  Node 零依赖服务器(静态 + 注册登录 + 进度存档 API)
- 游戏:剑与声(RPG 新作)、声命线、暗室(重设计)、音序回响(重设计)、
  节拍行者(跟随领奏重构)、盲航(同向闪避重构);声东击西删除
- 全局功能:男声/女声双套 TTS 资产、三档语速、BGM 音量三档、
  震动反馈语言(10 种震型)、服务器进度同步
- 资产:899 ogg + 899 m4a(Qwen3-TTS 双性别语音、Stable Audio 3 音效、
  Mureka BGM 4+3 首),终检零缺失
- 文档:docs/design/ 13 篇设计审查文档、docs/audio/ 资产管线、
  web/server/README.md API 文档
2026-08-29 21:55:44 +08:00

8.0 KiB
Raw Blame History

R4 音频轮次报告(2026-08-29,音乐音效总监)

本轮主题:新 RPG《剑与声》第一章全套音频资产 + space menu_main 改词重录。依据 docs/design/05-rpg-ch1-voice-ids.md、05-rpg-chapter1.md、05-rpg-addendum.md。Mureka 本轮 $0.12 / $0.30,累计 $0.42 / $2.00。

1. 语音(107 旁白 ×2 + 14 NPC)

类别 数量 总时长 落点
旁白 male(Uncle_Fu·说书人) 107 282.8s web/rpg/audio/voice/male/
旁白 female(Serena·武侠故事) 107 242.6s web/rpg/audio/voice/female/
NPC 单音色(村长/老猎人/头目/寨主) 14 50.9s web/rpg/audio/voice/ 平铺
  • 台词表照录 05-rpg-ch1-voice-ids.md(104 句)+ addendum §6.2 补录 foe_hp_high/mid/low(3 句)= 107 句,已合入 tools/gen_voice_dual.py(新增 rpg 条目与 NPCS 平铺机制,管线断点续跑/--only/--check/--convert 全部适用)。
  • 计数勘误:台词表头写"NPC 16 句",实表只有 14 句(headman 4 + hunter 4 + elite 3 + boss1 3);合计 107×2+14 = 228 条(×2 格式 = 456 文件),以此为准。
  • QC:时长/峰值/两性离群(>3 倍)ALL OK,零重生成。
  • 已知风险:村长与黑风寨主同 speaker(Uncle_Fu)不同 instruct(慈祥和缓 vs 低沉阴狠),按设计"从不在同场景出现"处理,需人工试听确认区分度。

2. BGM(4 首,Mureka)

id task/choice 选用 成品
village 157968630808577 / 157968750477315 候选 1(229.2s) 90.00s 循环,mean -23.0dB
battle 157968792551426 / 157968893214722 候选 0(212.8s) 90.00s,mean -20.5dB
boss 157968932864001 / 157969029332994 候选 1(178.2s) 90.00s,mean -22.6dB
ending 157969071407105 / 157969188913155 候选 1(248.4s) 90.00s,mean -21.9dB
  • 4 任务一次成功无重试。处理:强 onset 起点 → 90s 裁剪 + 首尾 3s crossfade 无缝循环 → loudnorm -20 LUFS → ogg q3 + m4a。RPG 无节拍网格,BPM 不做硬校验。
  • addendum §3 裁定:bgm/explore 取消(探索期无音乐),amb 走 sfx 层。花费已追加 tools/mureka_log.md。

3. SFX(35 件)

  • SA3 29 件(tools/gen_rpg_sfx.sh,staging tools/gen_rpg_sfx_wav/):前摇 tel_* ×9(含 ch2/3 备用 croc/shaman/puppet/boss2,统一裁 1.0s 格挡窗口)、战斗 atk_swing atk_hit parry skill_slash enemy_die potion、探索 chest drink_water rest door_heavy、环境 amb_* ×11(含备用 swamp/peak,6s→1s 首尾交叉淡化成 5s 循环)。
  • SYN 5 件(tools/gen_rpg_syn.py):hurt(60Hz 低频闷击,与 atk_hit 区分)、flee(渐远脚步)、step(单步)、coin(硬币叮当)、levelup(A 小调五声 A4-C5-D5-E5-A5 上行钟声琶音)。
  • 响度:one-shot 峰值 -1dBFS;amb 均值 -25dB(amb_hunter/amb_hall 因 crackle 峰值封顶初次仅 -31dB,已用 alimiter level=false 限幅重做至 -25.9dB——R2 学到的 level=true 陷阱的反向应用)。
  • ui_deny 按设计不做。web/rpg/gen/README.md 有完整清单与再生成方法。

4. space menu_main 改词重录

按 round2-review 裁决②(全球菜单约定:单击切换/双击确认),文本由「菜单。左右滑选择,单击确认。」改为「菜单。单击切换选项,双击确认。」,双性别重录覆盖 web/space/audio/voice/male|female/menu_main.*。 同类遗留:rhythm menu_main 文本同为旧约定("左右滑选择,单击确认"),且 rpg 的 sys_menu/shop_open 按 RPG 豁免条款保持"左右滑+单击"不变(正确)。rhythm 那句建议 R5 一并处理(rhythm 选曲界面非模态菜单仍用左右滑+单击,仅模态菜单改新约定——需策划确认文案后我重录)。

5. 给开发的 id 总表(可直接 import)

语音 id 分组(旁白 male/female 同集,NPC 平铺单集):

const RPG_VOICE = {
  intro:   ['intro_1','intro_2','intro_3'],
  system:  ['sys_continue_ask','sys_new_game','sys_saved','sys_rest','sys_drink',
            'sys_menu','sys_menu_resume','sys_menu_save','sys_menu_help',
            'help_explore','help_battle','settings_hint'],
  status:  ['st_hp_high','st_hp_mid','st_hp_low','st_gold_poor','st_gold_some','st_gold_rich',
            'st_lv_low','st_lv_mid','st_lv_high',
            'st_weapon_none','st_weapon_iron','st_weapon_steel','st_weapon_wind',
            'st_armor_none','st_armor_leather','st_armor_iron'],
  foeHp:   ['foe_hp_high','foe_hp_mid','foe_hp_low'],           // 敌方血量档位(addendum §6.2)
  desc:    ['desc_village','desc_village_re','desc_path','desc_path_re','desc_fork','desc_fork_re',
            'desc_chest','desc_chest_re','desc_stream','desc_stream_re','desc_hunter','desc_hunter_re',
            'desc_deepwood','desc_deepwood_re','desc_gate','desc_hall'],
  option:  ['opt_go_path','opt_go_fork','opt_go_chest','opt_go_stream','opt_go_hunter',
            'opt_go_deepwood','opt_go_gate','opt_back','opt_shop','opt_rest','opt_status',
            'opt_investigate','opt_open_chest','opt_drink','opt_talk_hunter','opt_assault',
            'opt_sneak','opt_leave'],
  event:   ['evt_gold15','evt_nothing','evt_chest','evt_hunter_gift','evt_gate_open','evt_ch1_end'],
  battle:  ['btl_start_wolf','btl_start_bandit','btl_start_spider','btl_start_elite','btl_start_boss1',
            'cmd_attack','cmd_skill','cmd_defend','cmd_item','btl_nomp','btl_noitem','btl_flee',
            'btl_noflee','btl_enemy_die','btl_win','btl_loot_small','btl_loot_mid','btl_loot_big',
            'btl_levelup','btl_lose','btl_lose_hint','tut_b1','tut_b2','tut_b3','tut_b4','tut_b5'],
  shop:    ['shop_open','shop_price_sword','shop_price_armor','shop_price_potion',
            'shop_owned','shop_poor','shop_buy'],
  npc:     ['npc_headman_1','npc_headman_2','npc_headman_3','npc_headman_4',
            'npc_hunter_1','npc_hunter_2','npc_hunter_3','npc_hunter_4',
            'npc_elite_1','npc_elite_half','npc_elite_die',
            'npc_boss1_1','npc_boss1_2','npc_boss1_die'],          // 平铺 voice/,无性别目录
};
const RPG_BGM = ['village','battle','boss','ending'];
const RPG_SFX = {
  telegraph: ['tel_wolf','tel_bandit','tel_spider','tel_elite','tel_boss1',      // 1.0s 格挡窗口
              'tel_croc','tel_shaman','tel_puppet','tel_boss2'],                  // ch2/3 备用
  combat:    ['atk_swing','atk_hit','parry','skill_slash','enemy_die','potion','hurt','flee'],
  explore:   ['step','coin','chest','drink_water','rest','levelup','door_heavy'],
  ambient:   ['amb_village','amb_path','amb_fork','amb_chest','amb_stream','amb_hunter',
              'amb_deepwood','amb_gate','amb_hall','amb_swamp','amb_peak'],      // 5s 循环,手动 loop 接 sfx 总线
};

配合要点:

  1. amb_* 需手动 BufferSource loop 接 _sfxBus(addendum §3 对实现的唯一新要求;不受 bgm=off 设置影响)。
  2. 前摇音 tel_<enemy> 起点即格挡窗口起点(1.0s),Boss 二阶段 tel_boss1 以 playbackRate 1.2 重播(不加资产)。
  3. foe_hp_* 为战斗态上滑敌方档位句;降档才播 st_hp_mid/low。
  4. 场景 desc_* 首次/回访成对(_re 后缀为回访短句)。
  5. 设计缺口(请策划补):敌人表中山贼标了半血句 btl_half_bandit,但台词表无此 id(头目有 npc_elite_half)——按 chapter1 §3"无此语音的敌人跳过"可运行,如需补齐请发文案我重录。npc_boss3_warn/btl_half_shaman/btl_half_shadow 属 ch2/3 最小集(addendum §5),等 ch2 台词表。

6. 遗留问题

  • 村长/寨主同 speaker 区分度、全部新语音发音准确性:未做人工试听(QC 均为自动检查)。
  • rhythm menu_main 旧菜单约定文案(§4)。
  • rhythm 乐器音 inst_accent 与设计文档 §4 的 accent 命名差异(R3 已按 inst_accent 落盘,开发以此为准)。

7. Mureka 花费

本轮 $0.12(4 任务全成功);累计 $0.42 / $2.00,剩 $1.58。明细见 tools/mureka_log.md R4 节。