- 新增 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 文档
6.6 KiB
6.6 KiB
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);rhythmbgm/groove。 - space voice 旧 27 id(平铺 + male/female 全部,新表 52 id 重录替换)。
5. 给开发的配合说明
- 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 个旧提示音已确认不再使用并删除。 - BGM 对网格:三首成品 BPM 实测偏差 ≤0.01%,直接按设计 SPB(0.667/0.571/0.5s)排程即可;循环长度均为整数小节,
src.start(t0)从 0 播即是小节头。 - rhythm 结算评级句已含准确率档位文案(S=九成五/A=八成五/B=七成/C=不到七成),与 §2 判定阈值一致,代码直接按 rate 映射 grade_* 即可。
- 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)。