- 新增 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 文档
73 lines
4.8 KiB
Markdown
73 lines
4.8 KiB
Markdown
# 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. 需要游戏代码配合的点
|
||
|
||
1. **引擎支持 voice 性别目录切换**:按用户设置在 `audio/voice/male|female/` 之间切换;storyline 需平铺回退(§3)。
|
||
2. **simon 删除 BGM 引用**:资产 `web/simon/audio/bgm/theme.{ogg,m4a}` 已按用户要求删除(bgm/ 目录现为空),请移除 game.js 中的 bgm 加载/播放逻辑及 preload 清单条目。
|
||
3. **语音选择 UI 入口**:需要「男声/女声」设置项(全局或每游戏),默认建议 male=storyline/escape、female=simon/rhythm/space(即各游戏原音色性别),具体由策划定。
|
||
4. 平铺旧 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`(无新条目)。
|