MiniMax H3 Locked Audio Slice (Internal)
The right ten seconds of your recording, every time
- plan
- Locked Audio
Long-form digital humans are the killer use case for this whole pack, and they run on one promise: the lip motion is driven by your recording while the soundtrack stays your recording, unchanged. That promise needs a very unglamorous piece of machinery. Some node has to know that segment four covers timeline seconds 30–40 and hand the sampler exactly that slice of the uploaded waveform. This is that node.
Internal, single input, single output, and it's the difference between "the avatar is saying the right words" and "the avatar is saying random parts of my script out of order."
How it works
It takes a material plan - one segment's plan, not the whole timeline - and resolves the interval from two pieces of information:
- the plan's
lengthin frames, plus an optional explicitoutput_framesoverride, - and the plan's timeline
selection, which carries the segment'sstartin seconds.
Duration converts to samples at 24 fps, the timeline start converts to a sample offset, and the waveform is cut to exactly that span. So the segment's slice is placed where it belongs on the recording, and every segment gets its own window rather than all of them starting from zero.
There's a branch for the source of the audio. If the locked asset is the timeline's own mixed video soundtrack (its lockKind is timeline_video_audio), the waveform is already laid out in timeline coordinates - so the selection's start is used directly, and gaps in the video soundtrack come through as silence. Any other locked asset is a standalone recording, which is why the offset is trimStart + selection.start: the asset's own in-point plus how far into the generation window you are.
Two details worth respecting:
- Silence is internal padding. If the recording runs out before the segment does, the node pads with silence - because H3 still needs a legal AV latent duration. That padding isn't content; the master node restores the true continuous waveform at the end. So don't panic at a silent tail in a per-segment preview.
- It errors rather than guesses. No locked asset in the plan means a raised
"This material plan has no locked original-audio asset", not an empty waveform. And a plan with no target frames raises too.
Inputs and outputs
Required: plan - a MINIMAX_H3_TIMELINE_PLAN for one segment. In the loop path that's Select Loop Segment's material plan output; the Finite Segment Sampler passes the equivalent per-segment plan internally.
Output: Locked Audio, a ComfyUI AUDIO dict sized for that segment. In the shipped graphs it goes straight into a VAEEncodeAudio with the H3 audio VAE, and from there into Lock Audio Latent to be pinned at zero denoise.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Songssx/ComfyUI-MiniMaxH3-TimelineDirector.git
Restart, search MiniMax H3. Empty dependency list - nothing to install beyond the pack, assuming a normal ComfyUI environment (PyTorch, torchaudio, PyAV, and imageio-ffmpeg for previews). Internal nodes need dev mode enabled in ComfyUI settings to show up in the node menu. Prerequisites: recent ComfyUI with native MiniMax H3 nodes, the H3 Ref2VA model, CLIP, video VAE and audio VAE, Python 3.10+.
Common issues
"This material plan has no locked original-audio asset." You're using this node on a plan that never locked anything. Locking is configured in the Material Planner - either an explicitly uploaded locked audio asset or enabled video original audio. Enable it there and re-run the planner.
Playback comes out of sync by a fixed offset. Check the asset's own trimStart versus the segment's selection start. A standalone recording with an in-point set in the timeline editor means the offset is a sum of two numbers, so an unexpected trim in the UI shows up as a shift here.
Silence at the end of the last segment. Expected when the recording is shorter than the generated timeline. That padding is internal; the master restores the real waveform.
Slices don't add up to the whole recording. They're not supposed to. Segments overlap, and each slice is the full window, so consecutive slices overlap by the seam interval. The continuous version is assembled once at the end - see the master nodes, not this one.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| plan | MINIMAX_H3_TIMELINE_PLAN | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Locked Audio | AUDIO | — |