H3 Audio Reference
Reference audio clips as conditioning
- audio_vae
- audios
- audio_reference
Here's the thing that makes MiniMax H3 different from every other local video model worth running: it generates audio natively, and it can condition on audio you give it. H3 Audio Reference (TuringUtilsH3AudioReference) is the node that encodes standalone audio clips into the latent form H3's conditioning expects. Want a voice to sound like a specific person, or a scene to carry a specific ambient tone? That's what this is for.
Before you file it under "nice-to-have," consider the alternative. For a long stretch, LTX was the only local video model with native audio - and the community's take on LTX is basically "it's used because it's fast and it's the only local video model with audio," which is damning with faint praise. H3 is the first open-weight model where synchronized sound is a headline feature, not a compromise. Audio references are the tool that actually steers it.
Inputs and output - the whole thing
It's about as simple as a node gets:
audio_vae(VAE, required) - the H3 audio VAE. There's nothing else required.audios(autogrow, up to 16) - your clips, coming in asaudio_1,audio_2, … sockets.
Output: audio_reference (TURING_UTILS_H3_AUDIO_REFERENCE) → H3 Semantic Reference and H3 Build Conditioning.
How it works
Each clip is resampled to the audio VAE's native sample rate - 32 kHz by default, handled automatically if your source is 44.1 kHz or whatever else - then encoded into a [1,32,2,T] audio latent. That's the whole mechanism: resample, encode, hand back. The heavy lifting is upstream in the model; this node is the clean gateway.
The distinction worth knowing
There are two ways audio enters an H3 workflow, and they're not interchangeable:
- This node is for standalone audio references - the raw soundtrack, a voice sample, a piece of music.
- H3 Video Reference has its own
video_audiossockets that pair a soundtrack to a specific video reference by index - for when the sound belongs to a clip.
If you're conditioning on a clip and its original audio together, use H3 Video Reference's pairing so they stay locked. If you're injecting audio that isn't tied to a video reference - a voice you want, a foley track, a song to adapt - this node is your path.
Installing it
Part of the ComfyUI Turing Utils pack (repo wjie98/comfyui-svdint4; the README still references the old comfyui-turing-utils name). ComfyUI Manager - search "svdint4" or "Turing Utils" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/wjie98/comfyui-svdint4
Restart ComfyUI. requirements.txt is just safetensors; the CUDA kernel build (python -m pip install -v --no-build-isolation -e ./kernel) is separate and only matters for running the model itself - this node runs fine without it. The one real dependency to check: your audio VAE has to be H3's, and it has to be present. Everything else the node handles for you, including the sample-rate conversion you'd otherwise be fiddling with.
Where it sits in the graph
Audio in → H3 Audio Reference → audio_reference → H3 Semantic Reference (so Qwen knows the audio exists while it builds the prompt) and H3 Build Conditioning (so the DiT gets the encoded audio latent). Wire it up, connect the audio VAE, and suddenly your video can hear the room it's supposed to be in.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_vae | VAE | — | |
| audiosopt | COMFY_AUTOGROW_V3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio_reference | TURING_UTILS_H3_AUDIO_REFERENCE | — |