Files

4.0 KiB
Raw Permalink Blame History

web/rpg 音频资产清单与再生成方法(R4;R6 更新)

设计依据:docs/design/05-rpg-ch1-voice-ids.md(台词)、05-rpg-chapter1.md(场景/战斗/资产清单)、05-rpg-addendum.md(层叠修正)、docs/design/11-rpg-battle-rebalance.md(R6 战斗重构缺口资产)。

目录结构

web/rpg/audio/
├── voice/
│   ├── male/      # 旁白 118 id(Uncle_Fu,说书人)×{ogg,m4a}
│   ├── female/    # 旁白 118 id(Serena,讲武侠故事)×{ogg,m4a}
│   └── npc_*.     # NPC 14 id 单音色平铺(引擎平铺回退,同 storyline 角色模式)
├── bgm/           # village / battle / boss / ending(R4)+ menu / explore(R6);90s 无缝循环
└── sfx/           # 37 件(tel_* 9 / 战斗 7 / 探索 4 / SYN 6 / amb_* 11)

voice(118 旁白 id + 14 NPC id)

  • 旁白 id 分组:A 序章 intro_1..3;S 系统 sys_* help_* settings_hint st_*(28)+ R6 skip_hint;D 场景 desc_*(16,gate/boss1 按设计无 _re 回访句);O 选项 opt_*(18);E 事件 evt_*(6);B 战斗 btl_* cmd_* tut_*(32,含 R5 补录 btl_half_bandit、R6 首战教学 tut_battle_1..5 与 11 号文档补录 tut_b0 tut_b6 btl_flee_fail boss1_warn);SH 商店 shop_*(7);addendum 补录敌方档位 foe_hp_high/mid/low(3)。
  • NPC(平铺,speaker+instruct 恒定):村长 npc_headman_1..4(Uncle_Fu·慈祥和缓的老者);老猎人 npc_hunter_1..4(Eric·沙哑粗犷豪爽);寨丁头目 npc_elite_1/half/die(Dylan·凶狠粗鲁);黑风寨主 npc_boss1_1/2/die(Uncle_Fu·低沉阴狠——与村长同 speaker 不同 instruct,请试听区分度)。
  • 再生成:source env.d/tts.sh && flock .gpu.lock .venv-tts/bin/python tools/gen_voice_dual.py --game rpg --gender both(staging 在 tools/gen_voice_dual_wav/rpg/,断点续跑;--only id1,id2 单句重录;--check 两性时长离群检查;--convert 转 ogg+m4a)。
  • R6 缺口 4 句(tut_b0 tut_b6 btl_flee_fail boss1_warn):flock .gpu.lock .venv-tts/bin/python web/rpg/gen/gen_gap_voice.py,再 --check / --convert(staging 在 web/rpg/gen/staging/voice/,音色/instruct/质控同主管线)。

bgm(6 首,Mureka)

village(村庄/安全区)battle(普通战斗)boss(Boss 战)ending(章结算)+ R6 新增 menu(模态菜单 pad,-24 LUFS)与 explore(探索轻垫,引擎 volume 0.35,10 文档 §7 恢复)。amb_* 仍由游戏层手动 loop 接 sfx 总线(不变)。再生成:source env.d/mureka.sh && python3 tools/mureka_gen.py --prompt ... --out tools/mureka_out/rpg_<id>(prompt 见 tools/mureka_log.md;R6 两首的 task id 见 docs/audio/round6-report.md §2)。

sfx(37 件)

  • SA3 生成 30 件(R4 批 tools/gen_rpg_sfx.sh,staging tools/gen_rpg_sfx_wav/;R6 victory 用 web/rpg/gen/gen_gap_sfx.sh,staging web/rpg/gen/staging/sfx/):前摇 tel_wolf tel_bandit tel_spider tel_elite tel_boss1 tel_croc tel_shaman tel_puppet tel_boss2(裁 1.0s 格挡窗口);战斗 atk_swing atk_hit parry skill_slash enemy_die potion victory(胜利号角 1.2s);探索 chest drink_water rest door_heavy;环境 amb_village amb_path amb_fork amb_chest amb_stream amb_hunter amb_deepwood amb_gate amb_hall amb_swamp amb_peak(6s→1s 首尾交叉淡化成 5s 循环,均值 -25dB)。
  • 程序合成 6 件(numpy;R4 五件 tools/gen_rpg_syn.py,R6 turn_player 由 web/rpg/gen/gen_gap_sfx.py 合成):hurt(低频闷击)flee(渐远脚步)step(单步)coin(硬币叮当)levelup(A 小调五声上行钟声琶音)turn_player(E5→A5 上行双音拨弦 0.36s,"轮到你"听觉标点)。
  • one-shot 统一 R6 标准:去直流 + 首尾 8ms cos² 淡入淡出 + 峰值 -3dBFS(ogg 解码回读真峰值校验);ui_deny 按设计不做(反馈走震动)。

双格式约定

全部 .ogg(libvorbis q3, 44.1kHz)+ .m4a(aac 128k, 44.1kHz)。