Files
SoundGame/docs/audio/round3-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

6.6 KiB
Raw Blame History

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

本轮主题:《节拍行者》重构语音 + 3 首 BPM 精确 BGM,《盲航》重构语音备产。依据 docs/design/03-rhythm-voice-ids.md、03-rhythm-rebuild.md、04-space-voice-ids.md。Mureka 本轮 $0.15 / $0.30,累计 $0.30 / $2.00。

1. rhythm 语音(重构版)

  • 台词表照录 docs/design/03-rhythm-voice-ids.md(31 句),合入 tools/gen_voice_dual.py 全量替换 R1 版。female=Vivian / male=Uncle_Fu,全表同一 instruct 常量。
  • 生成统计:male 31 条 / 116.6s,female 31 条 / 105.4s(ogg+m4a 各 62 文件)。
  • QC:时长/峰值/两性离群(>3 倍)全部 ALL OK,零重生成。
  • 旧 id 清理:平铺 9 个旧 id 全部删除(welcome rules tut_start tut_done grade_* restart,其中 grade_* restart 按新文案重录覆盖,welcome 文案变更重录);tut_start 彻底弃用。目录现仅含新表 31 id × 2 性别。

2. rhythm BGM(3 首,Mureka)

曲目 选用候选(task/choice) 源实测 BPM 处理 成品实测 BPM 循环时长
track90《启程》 157963509563393 / 157963627134980(首提候选 1) 98.75 atempo=0.911392 拉伸 90.01 85.33s(32 小节)
track105《追风》 157963652431875 / 157963780292611(首提候选 0) 105.00 精确 无拉伸 104.99 73.14s(32 小节)
track120《星爆》 157964212305921 / 157964317097985(重提候选 0) 120.00 精确 无拉伸 120.00 72.00s(36 小节)
  • 后处理:首个强 onset 对齐小节头裁剪 → 整数小节 + 末 2 拍与开头 acrossfade 无缝循环 → loudnorm I=-20/TP=-2 → ogg q3 + m4a 128k。成品 mean -21.2/-21.3/-19.9dB。
  • BPM 测量方法学(重要):librosa.beat.beat_track 在 22050Hz/hop512 下按整帧量化,105 BPM 附近一档=4.3 BPM(读数 103.36/107.67 都是量化伪影)。改用自写梳状扫描 tools/bpm_precise.py(0.05 BPM 步进 + 相位扫描 + 抛物线插值,合成 105.00 点击轨校准通过)。tools/bpm_check.py(粗筛)+ bpm_precise.py(判定)均留在 tools/。
  • 重试记录:track90 首提 121.0/98.75、重提 80.0/120.0 四候选均不达标,已达"每首最多重试 1 次"上限,按规则停止重提,选用 98.75 拉伸修正(电子乐 8.9% 减速,瞬态影响可接受,成品实测 90.01)。track120 首提不达标、重提即中 120.00。track105 首提即中。
  • 旧 bgm/groove 已删除。花费明细已追加 tools/mureka_log.md(5 任务 × $0.03 = $0.15)。

3. space 语音(备产,已完成)

docs/design/04-space-voice-ids.md 在本轮执行期间就绪(52 句),已全量生成:

  • male 52 条 / 188.0s,female 52 条 / 159.4s(ogg+m4a 各 104 文件)。female=Serena / male=Uncle_Fu,全表同一 instruct。
  • QC:ALL OK,零重生成。
  • 旧 id 清理:num0–9 num_shi num_bai n_* intro1–4 hit1 hit2 gameover restart 全部弃用删除(含平铺);shield_ready shield_block 沿用 id 重录。
  • 注意:重构版闪避改为同向(左来左滑),新台词已按此写死,与 R1 旧台词(反向)语义相反——开发务必以新 game.js + 新语音为准,不可混用。

4. 删除清单(资产侧已执行)

  • rhythm voice 平铺 9 id;rhythm sfx judge_good judge_miss judge_perfect tick tick_accent(反馈改震动、数拍融入 BGM);rhythm bgm/groove。
  • space voice 旧 27 id(平铺 + male/female 全部,新表 52 id 重录替换)。

5. 给开发的配合说明

  1. rhythm 乐器音 sfx(已于 R3 收尾补齐,见 §7):重构 §4 需要的 inst_kick inst_snare inst_hat_l inst_hat_r inst_tom_hi inst_tom_lo inst_accent 已生产落盘;cue_* 6 个旧提示音已确认不再使用并删除。
  2. BGM 对网格:三首成品 BPM 实测偏差 ≤0.01%,直接按设计 SPB(0.667/0.571/0.5s)排程即可;循环长度均为整数小节,src.start(t0) 从 0 播即是小节头。
  3. rhythm 结算评级句已含准确率档位文案(S=九成五/A=八成五/B=七成/C=不到七成),与 §2 判定阈值一致,代码直接按 rate 映射 grade_* 即可。
  4. space 里程碑触发点:10/25/50/100 颗(ms_*);结算 time 档 <30/30–60/60–120/≥120s,dodge 档 <5/5–14/15–49/≥50。

6. Mureka 花费

本轮 $0.15(5 任务,全部 succeeded);累计 $0.30 / $2.00。详见 tools/mureka_log.md R3 节。

7. 补产:rhythm 演奏乐器音 sfx(R3 收尾,2026-08-29)

重构 §4 的 7 个手势乐器音已补齐,落 web/rhythm/audio/sfx/(ogg q3 + m4a 128k):

id 内容 生成方式 时长 峰值 声像/调性
inst_kick 底鼓(tap) Stable Audio 3("punchy deep EDM kick, dry, single hit") 0.50s -0.8dB 中央
inst_snare 军鼓(doubletap) Stable Audio 3 0.45s -1.1dB 中央
inst_tom_hi 高通鼓(up) Stable Audio 3(high pitched synth tom) 0.50s -1.2dB 中央,升调感
inst_tom_lo 低通鼓(down) Stable Audio 3(low pitched deep synth tom) 0.60s -1.0dB 中央,降调感
inst_hat_l 闭合镲(left) Stable Audio 3(closed hi-hat) 0.20s -1.1dB 极左(L=-1.1dB / R=-22.7dB)
inst_hat_r 开放镲(right) Stable Audio 3(open hi-hat) 0.60s -2.2dB 极右(R=-2.2dB / L=-23.3dB)
inst_accent Perfect 亮音叠加层 numpy 程序合成(音高可控) 0.38s -1.8dB(0.8 峰值) A minor 上行琶音 A5→E6→A6,三音 90ms 间隔快衰减
  • 调性处理:三首 BGM 均 A minor(Mureka prompt 指定);accent 用 A 小调音级(A/E/A)程序合成,音高精确对齐;鼓件为伪音高打击乐,tom_hi/lo 在 prompt 里分了高低音区。staging wav 在 tools/gen_inst_wav/。
  • 后处理:去头静音(silenceremove -45dB)→ 定长裁剪 + 末端 40-100ms 淡出防爆音 → 峰值归一 -1dBFS → hat 先 downmix 再 pan 后归一(避免了 pan 叠加削波的一版返工)。
  • id 映射注意:设计文档 §4 写的叠加层 id 是 sfx/accent,本轮按主 agent 指令统一命名 inst_accent(与其他 6 件同前缀),开发以 inst_accent 为准。
  • cue_ 处置:删除*。通读 03-rhythm-rebuild.md,全文无 cue_* 资产引用(仅 §8.2 有内部变量 _cues 指期望音符),§4 手势音全部改走 inst_* 乐器音——旧指令音 cue_double cue_down cue_left cue_right cue_tap cue_up(6 id × 2 格式)已删。
  • Mureka 花费不变(本轮 $0,累计 $0.30 / $2.00)。