- 新增 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 文档
web/rpg 音频资产清单与再生成方法(R4)
设计依据:docs/design/05-rpg-ch1-voice-ids.md(台词)、05-rpg-chapter1.md(场景/战斗/资产清单)、05-rpg-addendum.md(层叠修正)。
目录结构
web/rpg/audio/
├── voice/
│ ├── male/ # 旁白 107 id(Uncle_Fu,说书人)×{ogg,m4a}
│ ├── female/ # 旁白 107 id(Serena,讲武侠故事)×{ogg,m4a}
│ └── npc_*. # NPC 14 id 单音色平铺(引擎平铺回退,同 storyline 角色模式)
├── bgm/ # village / battle / boss / ending(90s 无缝循环,loudnorm -20)
└── sfx/ # 35 件(tel_* 9 / 战斗 6+SYN2 / 探索 4+SYN3 / amb_* 11)
voice(107 旁白 id + 14 NPC id)
- 旁白 id 分组:A 序章
intro_1..3;S 系统sys_* help_* settings_hint st_*(28);D 场景desc_*(16);O 选项opt_*(18);E 事件evt_*(6);B 战斗btl_* cmd_* tut_*(26);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)。
bgm(4 首,Mureka)
village(村庄/安全区)battle(普通战斗)boss(Boss 战)ending(章结算)。探索期无音乐(addendum §3),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 R4 节与本目录设计文档)。
sfx(35 件)
- SA3 生成 29 件(
tools/gen_rpg_sfx.sh,stagingtools/gen_rpg_sfx_wav/):前摇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;探索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)。 - 程序合成 5 件(numpy,
tools/gen_rpg_syn.py):hurt(低频闷击)flee(渐远脚步)step(单步)coin(硬币叮当)levelup(A 小调五声上行钟声琶音)。 - one-shot 统一峰值 -1dBFS;
ui_deny按设计不做(反馈走震动)。
双格式约定
全部 .ogg(libvorbis q3, 44.1kHz)+ .m4a(aac 128k, 44.1kHz)。