MiniMax H3 Joint Dialogue Conditioning / 多人同段条件 (EXP/T8)
Two characters, one render, zero identity guarantees — the honest multi-speaker dialogue experiment
- clip
- video_vae
- audio_vae
- dialogue_plan
- speech_guard
- positive
- av_latent
- conditioned_prompt
- report_json
Want two characters actually talking to each other in the same H3 clip? This node builds the conditioning for exactly that - a 2-3 speaker joint Ref2VA experiment that renders dialogue between distinct voices in one shot. And you need to read the description's fine print before you get excited, because it's the most honest sentence in the pack: this is not the stable dialogue path, and it must not be described as identity-safe until leakage and identity-swap tests pass. H3's joint audio-video transformer is powerful, but "two reference voices in one context" is exactly the kind of thing where one character's timbre bleeds into the other's line.
It lives in T8/MiniMax H3/Speech/Experimental and sits alongside the pack's audio-integrity and speaker-routing audit nodes. The pack's own posture is that speech work should be gatekept - preflight checks, ABSTAIN instead of silent guesses - and this node inherits that caution: it's an unverified experiment that exists so people can try it, not so people can trust it.
How it works
You hand it a dialogue_plan (an H3_T8_SPEECH_PLAN from the pack's speech nodes), the clip, and both VAEs - the video_vae and the audio_vae, because H3 keeps video and audio as separate latent clocks (24fps video, 40Hz audio) even inside one joint AV latent. It then builds conditioning for turn_count speakers starting at start_turn, over render_seconds, and encodes it into both the positive CONDITIONING and an av_latent you can feed a sampler.
turn_count is locked to 2 or 3, and render_seconds is bounded at 5.17–15.08 - those bounds mirror H3's frame-grid constraints (22, 124, 362 frame counts) rather than being arbitrary. resolution defaults to 32, which is the H3 grid step. Set these to anything off-grid and you'll fight the model instead of using it.
The speech_guard optional input is where you'd attach the pack's speech reliability machinery if you want it.
The inputs that matter
dialogue_plan- where the per-turn lines and voices come from. This is the real content; without it there's nothing to condition.turn_count(2–3) andstart_turn- how many speakers and where in the plan you begin. Keep it at 2 for your first run.render_seconds- shorter is your friend. 5–6 seconds teaches you whether the experiment works at all before you spend GPU on 15.resolution- 32 is the grid; leave it.
Outputs
positive (Conditioning), av_latent (the joint AV latent to sample), conditioned_prompt (the prompt string the node actually built - read it, because the media tags are where this experiment tends to fall apart), and report_json.
Installing it
Pack install again: ComfyUI Manager → "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into ComfyUI/custom_nodes, then restart. No mandatory pip deps and no auto-downloaded weights; you supply the Qwen3-VL CLIP, the video/audio VAEs, and the H3 model.
Common issues
Voices bleed / one speaker sounds like the other. Expected - this is the leakage the node warns about. It's an experiment for a reason. Don't ship it as identity-safe; that's not what it is yet.
"Task type / tags mismatch" errors. Check the conditioned_prompt output and the speech plan's media references. The pack's strict-tag philosophy means a wrong <Audio N> reference fails loudly instead of guessing - reconnect the plan and re-check which ordinal each voice maps to.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| dialogue_plan | H3_T8_SPEECH_PLAN | — | |
| start_turn | INT | 00–9999 | — |
| turn_count | INT | 22–3 | — |
| render_seconds | FLOAT | 10.005.17–15.08 | — |
| resolution | COMBO | 32 | 3 options: 32, 64, 128 |
| speech_guardopt | H3_T8_SPEECH_GUARD | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| av_latent | LATENT | — |
| conditioned_prompt | STRING | — |
| report_json | STRING | — |