- 新增 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 文档
4.8 KiB
4.8 KiB
R1 音频轮次报告(2026-08-29,音乐音效总监)
本轮主题:双性别旁白资产管线 + simon BGM 移除。Mureka 花费 $0(无新 BGM,预算余额 $1.85)。
1. 新目录约定(给开发)
- 旁白/系统音按性别分目录:
web/<game>/audio/voice/male/<id>.{ogg,m4a}与web/<game>/audio/voice/female/<id>.{ogg,m4a}。 - 两个目录的 id 集合完全一致(每游戏核对过),引擎按用户选择整目录切换即可,无需按 id 特判。
- 双格式:每个 id 都有
.ogg(libvorbis q3 44.1k)和.m4a(aac 128k 44.1k),沿用现有格式协商逻辑。 - 平铺的旧文件
voice/<id>.*本轮保留未动。引擎切到 male/female 子目录后,后续轮次再删除平铺文件(storyline 角色台词除外,见 §3)。 - staging wav 保留在
tools/gen_voice_dual_wav/<game>/<gender>/,供后续轮次增量重生成(管线支持断点续跑,已有且合格的 wav 会跳过)。
2. 生成统计
| 游戏 | ids/性别 | male 总时长 | female 总时长 |
|---|---|---|---|
| storyline | 36 | 806.6s | 960.6s |
| escape | 41 | 230.8s | 212.4s |
| simon | 30 | 63.4s | 62.9s |
| rhythm | 9 | 71.5s | 59.0s |
| space | 27 | 78.2s | 65.1s |
| 合计 | 143 × 2 = 286 条 | 1250.5s | 1360.0s |
落盘文件 286 × 2 格式 = 572 个。质量控制:全部通过 时长>0.3s / 峰值>0.05 / 峰值归一 0.89;数字类同 instruct 整批生成;>40 字台词拆句拼接。两性时长离群(>3 倍)初检 3 条,已全部重生成并复检通过:
simon/male/num_4(8.00s → 0.48s)simon/female/teach_end(29.04s → 14.80s)space/male/n_ge(2.16s → 1.12s)
3. storyline 角色音色映射(角色台词不做双性别)
| 角色 | speaker | 文件 id(沿用平铺原文件) |
|---|---|---|
| 旁白/系统音 | male=Uncle_Fu / female=Vivian | 36 个双性别 id(见 asset-manifest.md) |
| 林晚(主角) | Serena | n02_linwan n03_radio n12_take n19_betray n21_redeem n24_open n25_secure |
| 猎狗(反派) | Dylan | n07_dog n18_dog |
| 小满(小男孩) | Vivian(童声 instruct) | e1_child |
| 林晨(妹妹录音) | Vivian(收音机 instruct) | n03_msg |
| 广播女声 | Vivian(广播 instruct) | n05_bcast |
需要开发配合:角色台词在两个性别下使用同一份音频。建议引擎对 storyline 做回退:在 voice/<gender>/ 找不到的 id 回退读平铺 voice/<id>;或由开发/后续轮次把 12 个角色 id 复制进两个子目录(资产侧未复制,避免重复文件进入仓库前等引擎方案定稿)。
注意:female 旁白选用 Vivian 而非 Serena,因为 Serena 是主角林晚的音色,旁白与主角同声会混淆;代价是旁白与小满/林晨/广播同 speaker,已用截然不同的 instruct(冷静低沉 vs 童声/收音机/机械广播)区分,请策划试听确认。
4. 音色分配表
| 游戏 | male | female |
|---|---|---|
| storyline | Uncle_Fu(沿用原旁白) | Vivian |
| escape | Uncle_Fu(沿用) | Serena |
| simon | Uncle_Fu | Serena(沿用) |
| rhythm | Uncle_Fu | Vivian(沿用) |
| space | Uncle_Fu | Serena(沿用) |
Ryan(英语母语音色)未采用:项目已有中文发音投诉(反馈⑥),男声统一中文母语 Uncle_Fu。冒烟样本在 tools/samples/ryan_zh_*.wav,如策划试听认为可用,改 tools/gen_voice_dual.py 的 SPEAKERS 重跑即可。
5. 需要游戏代码配合的点
- 引擎支持 voice 性别目录切换:按用户设置在
audio/voice/male|female/之间切换;storyline 需平铺回退(§3)。 - simon 删除 BGM 引用:资产
web/simon/audio/bgm/theme.{ogg,m4a}已按用户要求删除(bgm/ 目录现为空),请移除 game.js 中的 bgm 加载/播放逻辑及 preload 清单条目。 - 语音选择 UI 入口:需要「男声/女声」设置项(全局或每游戏),默认建议 male=storyline/escape、female=simon/rhythm/space(即各游戏原音色性别),具体由策划定。
- 平铺旧 voice 文件待引擎切换完成后通知音频侧清理(R2+)。
6. 质量遗留问题
- 本轮 QC 为自动检查(时长/峰值/两性离群),未做人工试听;发音准确性需策划/QA 试听把关。文本层多音字风险清单在
docs/audio/asset-manifest.md(如 storyline help 的「重听」建议改「重新听」),确认误读后改台词表重跑单条即可。 simon/female/teach_end重生成后 14.8s(male 7.8s),比值正常但偏长,建议试听确认无重复啰嗦。- 管线脚本:
tools/gen_voice_dual.py(含全部台词表,支持--game/--gender/--only/--check/--convert)。
7. Mureka 花费
本轮 $0(无新 BGM 需求;simon BGM 为删除而非重制)。累计 $0.15 / $2.00,未动 tools/mureka_log.md(无新条目)。