MiniMax H3 Dialogue Safe Master / 对白安全混音 (EXP/T8)
A dialogue mix that refuses to eat your words
- speech_audio
- music_audio
- ambience_audio
- sfx_audio
- master_audio
- speech_stem
- background_stem
- report_json
The nightmare of auto-mixing dialogue is the one where the "smart" tool decides your actor paused too long and trims the line, or cuts the master at the last word to hit a duration. MiniMaxH3DialogueSafeMasterT8 is built to refuse both: it takes a speech stem you've already verified, plus optional music, ambience, and SFX stems, and builds an exact-duration master where speech is never silently trimmed and the master is never cut at the dialogue's end. The name is the contract.
The gate that makes it safe
speech_accepted is a required input, default false, and the tooltip is unambiguous: connect the accepted output from the pack's Speech Verify node after exact-target alignment. If it's false, the mixer rejects - it will not guess whether your speech is clean. This is the T8mars philosophy at its purest: the mixer's job starts only after an external node has vouched for the words. Feed it speech_audio (the verified stem), speech_start_seconds (where in the timeline the line begins), and target_duration_seconds, and it fits the other stems around that.
Inputs that matter
The background stems (music_audio, ambience_audio, sfx_audio) are all optional. Each has a *_fit_policy (default strict) and a *_gain_db; music/ambience can loop with loop_crossfade_seconds (default 0.25), but the sfx_fit_policy tooltip is specific: SFX can be padded/trimmed explicitly but is never looped - a gunshot doesn't loop. duck_background (0–1) deterministically attenuates all background stems while speech is active - that's your automatic ducking, in one slider. peak_limit_dbfs (default −1) is the final ceiling. output_sample_rate defaults to 32000, matching H3's audio output.
Outputs
master_audio is the deliverable; speech_stem and background_stem give you the two component mixes if you want to inspect or rebalance later, and report_json documents the choices. One honest caveat from the description: this is not source separation. It assumes you've already split the stems - it won't pull speech out of a mix for you. It's a fitter and fader with safety rails.
Installing it
From MiniMax H3 Audio T8 (T8mars/T8star, GPL-3.0). Manager search MiniMax H3 Audio T8, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
restart. No forced pip extras; models to models/ by hand. H3 weights' Community License excludes the US, EU, UK, South Korea.
Where people get burned
First, skipping Speech Verify and hard-coding speech_accepted = true - the node will happily mix garbage you've told it is gold; the safety is only as good as the gate you actually connect. Second, expecting source separation; it will not do it. And third, setting a target_duration_seconds shorter than your speech: the mixer won't chop the words to fit, it'll reject or stretch the background - which is the desired behavior, but it reads like "it's broken" until you realize the target was wrong.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| speech_audio | AUDIO | — | |
| speech_accepted | BOOLEAN | false | Connect accepted from Speech Verify after exact-target alignment. False is rejected; this mixer will not guess speech cleanliness. |
| target_duration_seconds | FLOAT | 10.0000.001–36000 | — |
| speech_start_seconds | FLOAT | 0.0000–36000 | — |
| output_sample_rate | COMBO | 32000 | 3 options: 32000, 44100, 48000 |
| music_fit_policy | COMBO | strict | 3 options: strict, pad_or_trim, loop_crossfade |
| ambience_fit_policy | COMBO | strict | 3 options: strict, pad_or_trim, loop_crossfade |
| sfx_fit_policy | COMBO | strict | SFX can be padded/trimmed explicitly but is never looped. |
| loop_crossfade_seconds | FLOAT | 0.250–5 | — |
| speech_gain_db | FLOAT | 0.0-60–24 | — |
| music_gain_db | FLOAT | 0.0-60–24 | — |
| ambience_gain_db | FLOAT | 0.0-60–24 | — |
| sfx_gain_db | FLOAT | 0.0-60–24 | — |
| duck_background | FLOAT | 0.000–1 | Deterministically attenuates all background stems while speech is active. |
| peak_limit_dbfs | FLOAT | -1.0-24–0 | — |
| music_audioopt | AUDIO | — | |
| ambience_audioopt | AUDIO | — | |
| sfx_audioopt | AUDIO | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| master_audio | AUDIO | — |
| speech_stem | AUDIO | — |
| background_stem | AUDIO | — |
| report_json | STRING | — |