H3 是 AV(Audio-Visual)联合 DiT 模型。音频和视频在同一个 latent 中联合采样,不存在独立的"BGM 开关"。
音频流(target audio segment)始终被去噪生成——它同时包含:TTS 对白(由 ref_audio 条件约束)+ 环境音 + 模型自发生成的配乐。
当前 h3_batch_xiaojianghu_resume.py 的 prompt 写了:
"Strictly diegetic in-world sound, no scored music."
但这正是 Pitfall 1 的触发条件——"No music" 类负面描述会杀死所有音频(不只是 BGM),RMS 从 -18dB 暴跌到 -57dB。
| 方案 | 原理 | 可行性 | 风险 | 推荐度 |
|---|---|---|---|---|
| A. Prompt 引导(正面描述) | Prompt 中只描述想要的 diegetic 声音(脚步声、风声等),不提 music。靠模型理解。 | 中等 | 模型可能仍自发生成配乐(DiT 音频生成分支不完全受文本控制) | ⭐⭐⭐ |
| B. 音频后处理:频谱过滤 | 渲染完成后用 ffmpeg/demucs 分离人声+环境音 vs 配乐,去掉配乐频段。 | 可行 | 可能损伤对白/环境音质量;需要额外处理步骤 | ⭐⭐⭐⭐ |
| C. 丢弃 H3 音频,纯 TTS 替代 | 不使用 H3 生成的音频,直接用 P10 TTS 对白作为唯一音轨。 | 最简单 | 完全丢失环境音(脚步、风声、碰撞等氛围声) | ⭐⭐⭐ |
| D. 两遍渲染合成 | 第一遍正常渲染取视频,第二遍只取 TTS + 环境音段(利用 TTS 静默段提取环境音),再混音。 | 复杂 | 渲染时间 ×2;音频处理逻辑复杂 | ⭐⭐ |
| E. TTS + 人工环境音 | H3 只出视频,音频完全后期:TTS 对白 + 预制环境音素材库混音。 | 可控 | 需要环境音素材库 + 混音管线;工作量最大 | ⭐⭐⭐⭐⭐ |
做法:修改 prompt,去掉所有负面描述,只写正面 diegetic 声音。
# ❌ 当前(触发 Pitfall 1)
"Strictly diegetic in-world sound, no scored music."
# ✅ 改为正面描述
"Footsteps on wooden floor, rustling leaves, wind howling,
wooden bowls clinking, distant crowd murmurs.
Natural ambient sound, cinematic foley."
效果预估:BGM 会减弱但不一定完全消除——H3 的 DiT 音频生成分支不完全受文本约束,模型在训练数据中见过大量配乐,可能自发放出旋律。
原理:用 AI 音源分离模型(Demucs/Spleeter)把 H3 输出音频拆成人声+环境 vs 配乐,丢弃配乐轨。
# Demucs 4 分轨:drums / bass / other / vocals
pip install demucs
# 分离出 vocals(对白)+ 其他非音乐成分
demucs --two-stems vocals h3_audio.flac -o /tmp/separated
# 结果:
# vocals.wav → 对白(保留)
# no_vocals.wav → 环境音+BGM(需进一步判断)
问题:Demucs 的 "vocals" 只留人声,环境音(脚步、风声)会被分到 "no_vocals" 轨,跟 BGM 混在一起。
更精准方案:用 Demucs 4-stem 分出 other(通常含环境音)vs bass+drums(通常含配乐节奏),自定义混音。
做法:H3 渲染时仍生成音频(架构无法关闭),但最终输出只用 TTS 对白,丢弃 H3 音频。
# 批量脚本中,直接跳过 H3 音频的 mux
ffmpeg -y -i video.webm -i tts_dialogue.wav \
-c:v libx264 -crf 20 -c:a aac -b:a 128k \
-map 0:v:0 -map 1:a:0 \
-shortest output.mp4
优点:零风险,对白干净清晰。
缺点:完全没有环境音,场景沉浸感降低。
做法:H3 只取视频流,音频完全后期制作:
# 三轨混音示例
ffmpeg -y -i video.webm \
-i tts_dialogue.wav \
-i ambient_room_tone.wav \
-filter_complex "[1:a]volume=-3dB[a1];[2:a]volume=-12dB[a2];[a1][a2]amix=inputs=2:duration=shortest[aout]" \
-map 0:v:0 -map "[aout]" \
-c:v copy -c:a aac -b:a 192k \
output.mp4
优点:100% 可控,零 BGM,环境音按需定制。
缺点:需要环境音素材库 + 按分镜匹配的自动化逻辑。
从源码分析确认:
target audio segment 的 audio_update = True(L383),每步采样都去噪disable_audio / audio_weight / music_ban 等参数结论:模型层面无法精确控制"只禁 BGM 保留环境音"——必须在后期处理。
批量脚本 prompt 中把 "no scored music" 替换为正面描述:
# 替换为:
"Natural diegetic sounds: footsteps,
rustling fabric, wooden objects,
ambient room tone. Cinematic foley."
同时准备 纯 TTS fallback:如果 H3 音频仍有 BGM,直接用 TTS 替代。
在 P12 合成阶段加一个 BGM 检测 + 剔除步骤:
各分镜频谱能量分布(Mid 频段占比高 = 人声为主,Low+High 均衡 = 有环境音):
| 分镜 | 时长 | RMS | Low(<200Hz) | Mid(200-2kHz) | Hi(>2kHz) | 判断 |
|---|---|---|---|---|---|---|
| S1_a01 | 6.6s | 65.8dB | 3% | 74% | 23% | 对白主导 |
| S1_a02 | 5.9s | 50.9dB | 11% | 57% | 32% | 有环境音 |
| S1_a04 | 5.2s | 50.1dB | 0% | 57% | 42% | 偏尖锐 |
| S1_a05 | 7.3s | 56.7dB | 17% | 57% | 25% | 有低频 |
| S2_a01 | 5.2s | 68.6dB | 21% | 32% | 47% | 高频丰富⚠️ |
| S2_a02 | 5.2s | 44.8dB | 4% | 48% | 48% | 偏安静 |
| S2_a03 | 5.2s | 55.2dB | 3% | 53% | 44% | 对白主导 |
| S2_a04 | 8.0s | 59.6dB | 23% | 31% | 46% | 低频丰富⚠️ |
| S2_a05 | 5.2s | 57.9dB | 0% | 45% | 55% | 高频主导 |
⚠️ S2_a01 和 S2_a04 的低频+高频双高峰可能含有配乐成分,建议用 Demucs 验证。
数据来源:H3 ComfyUI 源码 (comfy/ldm/minimax/model.py, comfy_extras/nodes_minimax_h3.py) +
已有 pitfall 实验 (minimax-h3-audio-pitfalls, minimax-h3-audio-architecture skills) +
小江湖 EP01 9 分镜音频频谱分析 (2026-08-04)