Easy MiniMax H3 Audio Lock
Lock the audio you already have and let H3 animate to it
- latent
- audio_vae
- audio
- latent
Most video models regenerate whatever audio they feel like. MiniMax H3 generates sound jointly with the picture, which is great - until you have a specific soundtrack, a voiceover, or a music bed you need in the output. easy minimaxH3AudioLock is the node that says "no, this audio is final; make the video fit it." In the MultiTrack pipeline this is the "Lock audio" feature on the audio track; used standalone, it's how you force H3 to animate to audio you bring.
What "lock" actually means here
The trick is the H3 per-stream noise mask. The node takes your joint audio/video latent, splits off the video and audio streams, encodes your supplied audio with the H3 audio VAE, and splices it into the audio stream of the latent. Then it sets the audio stream's mask so the sampler is told "this part is given - don't denoise it" (hard-locked), while the video stream stays free to denoise. The video is generated to accompany the locked audio. At remix_strength = 1.0 the audio is fully locked; at 0.0 it's ignored and H3 regenerates audio freely, with values between doing a partial mix.
Mechanically, a few things happen before encoding:
- Audio is resampled to the audio VAE's sample rate - via
torchaudio, which is a runtime requirement if your input isn't already at that rate. Iftorchaudioisn't installed you get an explicit error, not a silent wrong-speed result. - Short audio is handled by
short_audio_mode:silencepads the tail with silence;looprepeats the clip to fill the segment. (The H3 audio latent runs at 40fps internally, so "fill the duration" is a precise frame-counting job.) prepend_framesinserts silent video frames before the locked audio - it exists to realign audio after context-prefix trimming, and it's mostly relevant inside the project pipeline. You'll rarely touch it by hand.
The inputs that matter
latent- the H3 joint audio/video latent (from an encode node). Shape-validated: video[B,24,T,H,W], audio[B,32,2,T].audio_vae- the MiniMax H3 audio VAE, not the video one.audio- the AUDIO you're locking in.remix_strength- 1 hard-locks, 0 fully regenerates. The dial between is where the interesting half-referenced results live.short_audio_mode-silenceorloop.frame_rate- the video frame rate your timeline uses (default 24).
One output: latent - the joint AV latent with your audio locked in, ready for the sampler.
Installation
Same pack as the rest of Easy-Media:
# FFmpeg first (the README's hard requirement)
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Media
Restart ComfyUI or install via Manager (search "ComfyUI-Easy-Media"). If your source audio isn't already at the audio VAE's sample rate, you need torchaudio in the environment (pip install torchaudio inside ComfyUI's Python). The H3 model and its audio VAE are the big downloads, as always.
Troubleshooting
- "torchaudio is required to resample MiniMax H3 lock audio" - install torchaudio, or feed audio already at the VAE's sample rate.
- Audio is there but the video ignores it - check
remix_strength; at 0 the audio is deliberately not locked. Also make sure you connected the audio VAE, not the video one. - Timing drift / audio starts late - that's
prepend_framesterritory: after context trimming the audio alignment shifts by the trimmed prefix, and this node's prepend compensates. Inside the pipeline the project node handles it; standalone, you may need to set it yourself. - "Invalid H3 audio latent shape" - the
latentinput isn't a real joint AV latent (or has batch size > 1). It must come from H3's encoder, not a generic latent source.
This node is why "H3 with my own audio" stops being a workaround and becomes a setting. It's also quietly the difference between a MultiTrack project that keeps your music intact and one that re-composes it every segment.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | MiniMax H3 joint audio/video latent. | |
| audio_vae | VAE | MiniMax H3 audio VAE. | |
| audio | AUDIO | Audio to lock into the H3 latent. | |
| remix_strength | FLOAT | 1.000–1 | 0 fully regenerates audio; 1 hard-locks the supplied audio. |
| short_audio_mode | COMBO | silence | Pad short audio with silence or loop it before encoding. |
| prepend_frames | INT | 00–3600 | Silent video-frame duration inserted before locked audio. Used to align audio after context-prefix trimming. |
| frame_rate | FLOAT | 24.001–240 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |