4.8 KiB
R6 音频轮次报告(2026-08-30,音乐音效总监)
本轮主题:爆音资产排查修复 + 状态 BGM 7 首 + RPG 战斗教学/全局跳过提示语音。Mureka 本轮 $0.21 / $1.00,累计 $0.63 / $2.00。
1. 爆音排查与修复
工具:tools/scan_clicks.py(扫描)/ tools/fix_clicks.py(修复),全程可复跑;原件备份在 tools/asset_fix_backup/(71 个文件)。
扫描口径:峰值 >-1dBFS / 首尾电平突变(首末 1ms 幅值 > 局部 50ms 峰值 15%,局部低于 -40dB 的静音区不判)/ 直流偏置 |DC|>0.001。voice 目录按任务要求不动(峰值 0.89 归一策略保留)。
初扫结果(899 个 ogg 全量):
| 类别 | 数量 | 说明 |
|---|---|---|
| sfx/bgm 峰值过热 | 27 | 其中 rpg 15 个 SA3 one-shot 解码峰值高达 +0.9~+6.6dBFS(真·爆音源) |
| sfx/bgm 直流偏置 | 43 | 最大 0.076(rpg/atk_swing) |
| sfx/bgm 首尾突变 | 48 | 老资产无淡入淡出(storyline/escape/simon/space 为主) |
| voice 过热 | 340 | 不修(语音响度策略不动,见任务说明) |
根因发现(重要):R4 的 rpg SA3 one-shot 源是近满幅高密度波形(rms 0.84 / 峰值 0dBFS,>15kHz 能量 22%),MDCT 有损编码(vorbis/aac/opus 全部)重建时过冲 +4~8dB——ffmpeg volumedetect 走 s16 中间格式把超幅削到 0.0dB 显示,之前的 QC 完全没发现。本轮修复 encode 环节改为「编码→解码回读真峰值→超 -3dB 则降增益 + 首轮 18kHz 低通→重编」(最多 3 次迭代)。
修复结果:71 个 sfx/bgm 文件重处理(storyline 10 / escape 10 / simon 7 / rhythm 7 / space 11 / rpg 26),统一标准:one-shot 去直流 + 首尾 8ms cos² 淡入淡出 + 峰值 -3dBFS(真峰值校验后);loop(amb_*/bgm)只去直流(交叉淡化循环不加首尾淡入淡出,避免破坏循环)。rpg one-shot 从 staging 无损 wav 重做,其余从备份初代源修复(避免多次有损转码)。
复扫(终态):sfx/bgm 99 个 —— 过热 0 / 直流 0 / 首尾突变 0。全绿。
2. 状态 BGM(7 首,docs/design/10-feedback2-state-bgm.md)
| 资产 | task id | 响度 | 成品 |
|---|---|---|---|
storyline bgm/menu |
158096439705601 | -24 LUFS(menu pad 档) | 90s 循环,mean -24.4dB |
escape bgm/menu |
158096580149249 | -24 | mean -26.1dB |
simon bgm/menu |
158096714629126 | -24(引擎再按 volume 0.3) | mean -25.8dB |
rhythm bgm/menu |
158096850812929 | -24 | mean -25.3dB |
space bgm/menu |
158097039425538 | -24 | mean -25.1dB |
rpg bgm/menu |
158097182294017 | -24 | mean -25.9dB |
rpg bgm/explore(恢复) |
158097360420865 | -20(引擎 volume 0.35) | mean -22.3dB |
全部一次成功选候选 0;强 onset 起点 + 90s + 3s crossfade 无缝循环 + ogg q3/m4a。既有主题曲全部不动(storyline dark_drone、escape drone、rhythm track90/105/120、space engine、rpg village/battle/boss/ending)。状态→BGM 映射与切换时机以 10 文档 §2-§7 为准。
3. 新语音(22 条,双性别)
| id | 游戏 | 条数 | 文案 |
|---|---|---|---|
tut_battle_1..5 |
rpg | 5×2 | 首次战斗教学:回合制说明 / 左右滑选招式单击出手 / 听前摇双击格挡 / 防御减半与金疮药 / 开场收束 |
skip_hint |
全 6 游戏 | 1×2×6 | 「单击可跳过旁白。」(各游戏既有 instruct 常量) |
均已合入 tools/gen_voice_dual.py 台词表并落盘 male/female 双格式。rpg 旁白现 113 id ×2(+NPC 14 平铺)。
4. 给游戏层的接线约定
- 菜单/结算音乐:所有游戏统一
bgm/menuid;切换时机与淡入时长按 10 文档逐游戏表(storyline 500ms、escape 400ms/结算 1500ms、simon 600ms/结算延后 1000ms、rhythm 800ms、space 300ms、rpg 战斗 400ms 快切)。 - simon 游玩全程不得加载任何 bgm;
bgm/menu仅菜单与结算,volume 0.3。 - rpg 双层:BGM 层报状态(menu/explore/village/battle/boss/ending),sfx 层 amb 报场景(手动 loop 接
_sfxBus,不变);胜利过渡 = battle 淡出 1500ms → explore 淡入 2000ms。 tut_battle_1..5:首场战斗(enc_teach_wolf)B_START 时按序链播,二周目起跳过;skip_hint为备选通用句,接入与否由游戏层定。bgm=0时全部状态音乐不加载(含 menu pad 与 space engine——10 文档 §1.5 裁定)。
5. 复跑与终检
tools/check_all_assets.py终检已更新(docs/audio/final-asset-check.md):928 ogg + 928 m4a,双格式/0 字节/解码/性别集合一致性全绿。- 遗留:voice 层 340 个文件峰值 >-1dBFS 属 R1 既定归一(0.89 峰值),非爆音(有 TTS 天然淡入);如需统一可考虑 R7 评估,但会破坏既有响度平衡,不建议。