MiniMax H3 AV Latent Builder (T8 Advanced)
The two-plug adapter that welds MiniMax H3's picture and sound latents together
- video_latent
- audio_latent
- av_latent
MiniMax H3 is an omni model: it generates the picture and the sound in one joint pass, and in ComfyUI that means its sampler consumes a single combined av_latent. The catch is that the video and audio halves get encoded separately - H3 ships distinct video and audio VAEs - so something has to join them before sampling. That something is this node. If you're hand-building an H3 graph instead of dragging in a ready workflow, this is the junction where your two latent streams become one.
Don't think of it as doing anything clever. Think of it as the adapter that prevents the really dumb failure modes: feeding the sampler video latents at 24 fps and audio latents at a different frame count, or with mismatched spatial shapes, produces garbage or a hard error that's confusing because the message comes from deep in the sampler. The node validates the official stream shapes and the shared timeline first, and only then emits the combined latent.
What it actually does
It takes exactly two things:
- video_latent - the output of the H3 video VAE encode
- audio_latent - the output of the H3 audio VAE encode
and returns a single av_latent you wire into the sampler's latent input. That's the whole schema - there are no strength knobs, no mode switches. The value is the validation it runs between your ears, in code: if the two streams don't line up on the official shapes or the shared frame timeline, it tells you instead of letting you discover it three hundred steps later.
In the bundled T8 workflows this node lives in the 20-core-compatibility examples folder, next to the other "on-demand" compatibility nodes. If your ComfyUI build's native conditioning already hands you an av_latent, you don't need this - it exists for the cases where your graph encodes the streams separately and needs the explicit join.
Installing it
This ships in the T8mars/comfyui-minimax-h3-audio-T8 pack - search "MiniMax H3 Audio T8" in ComfyUI Manager, install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Update ComfyUI itself before the pack: this family targets recent native H3 support (comfy_api.latest, comfy.weight_adapter, comfy.patcher_extension, comfy.ldm.minimax). If every T8 node comes up red at once, that's an old core failing the pack's import, not your graph. The pack's requirements.txt is intentionally empty - torch, torchaudio, Pillow and safetensors all come from ComfyUI's own environment, so don't go pip-installing extras.
You'll also need the H3 weights in their proper folders (diffusion model in models/diffusion_models, text encoder in models/text_encoders, video and audio VAEs in models/vae), and whatever official conditioning route you use to produce the two streams in the first place.
Common issues
The one real trap: this node validates but does not rescale. If your video latent is 736×416×124 and your audio latent describes a different duration, you'll get a clear error - and the fix is to re-encode or trim upstream, not to force it through. Also keep to the pack's standing rules: widths and heights divisible by 32, and don't stack multiple nodes that each take ownership of the sampler or MODEL forward path. When VRAM is tight, drop resolution and frame count before you start blaming the latent join.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| video_latent | LATENT | — | |
| audio_latent | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| av_latent | LATENT | — |