| Episode / 版本 | 来源 | 总分 | 结果 | 弧线匹配 | 能量曲线 (10段) | BPM | 频谱质心 | 段数 | 时长 |
|---|---|---|---|---|---|---|---|---|---|
| ep-cat-worker-v3 (ACE-Step) | ACE-Step AI (Section tags) | 1.00 | ✅ | 1.00 | ▂▃▄▄█▆▄▅▅▁ | 162 | 531Hz | 1 | 35.9s |
| ep-cat-worker-v3 (SA3) | SA3 AI (ambient) | 0.88 | ✅ | 跳过 | ▄▅▇▆█▅▃▂▁▁ | 144 | 1322Hz | 1 | 35.9s |
| ep-cat-worker-v3 (素材库) | kais-bgm 素材库 (fallback) | 0.98 | ❌ | 0.00 | ▁▂▃▅▅▆▇▇▇█ | 99 | 1762Hz | 1 | 35.9s |
| ep-hamster-demolition (旧numpy) | numpy 正弦波 (已废弃 R11) | 0.60 | ❌ | 0.14 | ▁▁▃▇▄▁▄██▃ | 0 | 420Hz | 6 | 32.8s |
| ep-penguin-delivery (旧numpy) | numpy 正弦波 (已废弃 R11) | 0.68 | ❌ | 0.15 | ▂▁▇▂█▆▂▂▇▂ | 0 | 415Hz | 8 | 38.1s |
| 发现 | 证据 |
|---|---|
| ✅ ACE-Step AI 弧线满分 | 能量曲线 ▂▃▄▄█▅▄▅▅▁ — 中段爆发(0.181),结尾消散(0.001),完美匹配 rise_fall 弧线。Section 标签有效控制了情绪变化。 |
| ❌ 素材库 BGM 弧线不匹配 | 能量曲线 ▁▁▂▇▆▆▆█▇▇ — 只增不减,结尾能量最高(0.134),不符合 Icarus 弧线。验证模块精确抓出此问题。 |
| ❌ 旧 numpy BGM 均不合格 | hamster 和 penguin 两个 episode 的 numpy 合成 BGM 弧线匹配仅 0.13/0.15,BPM=0(无法检测节拍),证实了 R11 规则(禁止 numpy 假音乐)的必要性。 |
| ✅ 多场景段落验证有效 | hamster(6段) 和 penguin(8段) 的 segment_energy_variation 检查通过,说明多段 BGM 的段落间能量变化被正确提取和评估。 |
| ✅ SA3 频谱分析准确 | SA3 centroid=1322Hz 落在「紧张」频段(300-2000Hz)内,spectral_mood 检查满分;ACE-Step centroid=531Hz 偏暗,适合悲剧氛围。 |
| 检查项 | 权重 | 通过条件 | 说明 |
|---|---|---|---|
| duration_match | 15% | |diff| < 0.5s | BGM 时长 vs 视频时长 |
| non_silent | 15% | RMS mean > 0.01 | 非静音检测(P14 阻断阈值 0.005) |
| dynamic_range | 20% | RMS std > 0.02 | 动态范围 — 排除平淡无变化的 BGM |
| arc_match | 25% | 弧线方向正确 | 能量曲线 vs rise_fall / rising / falling |
| segment_energy | 15% | 段间 RMS std > 0.015 | 多段 BGM 段落间有能量变化 |
| spectral_mood | 10% | centroid 在 mood 频段 | 频谱亮度与情绪标签一致 |
| 行为 | 说明 |
|---|---|
| ✅ 自动触发 | P14 quality_audit 末尾自动调用 _run_bgm_verification() |
| ✅ 阻断条件 | 仅 rms_mean < 0.005 (近数字静音) → critical → P11 rollback |
| ⚠️ 非阻断 WARNING | score < 0.6 或 arc_match 失败 → WARNING finding 写入 audit 报告 |
| ✅ 优雅降级 | librosa 缺失 / import 失败 / 文件不存在 → 跳过,不崩溃 |
| ✅ 超时保护 | SIGALRM 30s 硬超时(主线程);非主线程降级为无超时 |