MiniMax H3 MV Vocal Scene Planner / 本地歌曲分镜 (Advanced EXP/T8)
The CPU-only storyboard planner
- full_song
- vocal_stem
- scene_plan
- scene_count
- duration_seconds
- timeline_json
- report_json
MiniMax H3 clips top out around 15 seconds at the lengths most cards can actually sample. A three-minute song is not one generation - it's a storyboard of scenes, each generated separately and cut together. So the first question in any local MV pipeline is: where do the cuts go? You could watch a waveform and guess, or you could let this node find the scene boundaries for you before a single frame is rendered.
What it does
That's the whole job of the MV Vocal Scene Planner. It takes your full song as an audio input and runs deterministic CPU tensor math over the waveform to pick 5–10 second scene boundaries - places where the energy structure says "a new shot starts here." Nothing is transcribed, nothing is guessed by an LLM, and no TTS, music service or external API is touched. It's an energy analysis, not an AI creative director. Feed it the same song twice and you get the same boundaries twice, which is exactly what you want when you're iterating on prompts.
It's the first node in the pack's V1 "fully local MV" chain (examples/workflows/24-mv-lipsync), which is: this planner → the Ref2VA Prompt Compiler → the Local MV In-Node Renderer. The V1 route conditions each H3 scene on the full song mix. That's the simplest entry point; the newer Vocal Lock V2/V3 routes - which use an isolated vocal stem so the lip-sync is driven by clean vocals instead of a full mix - are what the README points long-MV work at now. Treat this as the on-ramp.
The inputs that matter
The inputs that matter:
full_song- required. This is the actual master you'll render against, not a preview.min_scene_seconds/target_scene_seconds/max_scene_seconds(defaults 5 / 7 / 10) - the window the boundary search works inside. Tighter range = more uniform shots; wider = room for long sections.vocal_policy-assume_vocal(default) treats the song as containing vocals;energy_proxyestimates from energy alone;vocal_stem_requireddemands you connect a separate stem.vocal_stem(optional) - an isolated local vocal track, used for smarter analysis if you have one.manual_boundaries_json(advanced) - an optional seconds list like[5.2, 11.8]that overrides auto-analysis entirely. Handy when you already know the arrangement.
Outputs
Outputs: the scene_plan object (a typed MV_SCENE_PLAN that the prompt compiler consumes), scene_count, duration_seconds, timeline_json, and report_json. In practice you wire scene_plan forward and read scene_count for your own sanity.
Two things to know first
Two things worth knowing before you run it. First, this pack is built around running MiniMax H3's local weights - if you're in the US, EU, UK or South Korea, the H3 Community License doesn't grant you rights to those weights at all, and the hosted API is a separate (paid) thing these nodes don't call. Second, the planner only carves the timeline; it has no opinion about what each scene shows. That's what the prompt compiler you chain it into is for - it takes each of these scene windows and builds a per-scene H3 prompt, camera pattern and all.
Install the pack with ComfyUI Manager (search MiniMax H3 Audio T8) or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes, then restart - after updating ComfyUI core/frontend/Manager together, because this pack needs the recent native-H3 and weight-adapter APIs and will red-out wholesale on an old core.
Installing it
It's marked Advanced EXP, and honestly most of that caution applies downstream at the renderer. The planner itself is a small, predictable utility: give it a song, get a sane cut list, and spend your actual effort on the shots.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| full_song | AUDIO | 最终成片使用的完整原曲。 | |
| min_scene_seconds | FLOAT | 5.01–15 | — |
| target_scene_seconds | FLOAT | 7.01–15 | — |
| max_scene_seconds | FLOAT | 10.01–15 | — |
| analysis_hop_ms | INT | 10020–500 | — |
| vocal_policy | COMBO | assume_vocal | 没有人声干声时推荐 assume_vocal;energy_proxy 仅按能量估计;vocal_stem_required 要求连接本地干声。 |
| manual_boundaries_json | STRING | 可选秒数列表,例如 [5.2, 11.8];留空自动分析。 | |
| vocal_stemopt | AUDIO | 可选的本地人声干声。 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| scene_plan | H3_T8_MV_SCENE_PLAN | — |
| scene_count | INT | — |
| duration_seconds | FLOAT | — |
| timeline_json | STRING | — |
| report_json | STRING | — |