# 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)。