MiniMax H3 Speech Long Form Start/Resume / 长文本恢复 (EXP/T8)
Render one segment at a time, resume after a crash
- speech_plan
- session
- next_voice_profile
- next_index
- next_text
- complete
- report_json
H3 renders in a hard window: roughly 5 to 15 seconds per pass, snapped to the 17n+5 frame grid. A two-minute narration is not a single generation - it's a dozen generations that have to line up. The naïve approach is to render them all in one giant ComfyUI graph, which is how you run a 33B model out of VRAM and lose the whole run. MiniMaxH3SpeechLongFormStartT8 is the node that turns that one-shot into a resumable assembly line. It creates or resumes an atomic manifest for a job, tells you which segment to render next, and - crucially - makes sure you only ever render one segment per execution.
How it works
Feed it a speech_plan and a job_id (default speech_job_001), and it writes a manifest to disk that records every segment's status - pending or accepted - plus a SHA-256 of the plan itself. Then it reads back the state and hands you:
session- theH3_T8_SPEECH_LONGFORM_SESSIONthat binds everything downstream to this job,next_voice_profileandnext_text- the voice and the script for the next un-accepted segment,next_index- which segment that is,complete- true once every segment is accepted,report_json- the manifest path, accepted count, and a state readout.
Render only that one segment, run it through the sampler, hand the result to the Accept node, and run the graph again. Because each run renders at most one segment, you never hold a dozen AV latents in memory. And because the manifest is on disk and atomic, a crash mid-job costs you at most the one segment you were rendering - re-run Start with the same job_id and it resumes from where you left off.
The contract you should respect
The plan hash is baked into the manifest. Re-run Start with the same job_id but a different plan and you'll get a hard "job_id already belongs to a different speech plan" error - that's the anti-corruption guard working, and it means "edit the text" = "start a new job" unless you're fine losing the old progress. Also note the streaming contract in the report: each accepted segment becomes a chunk-ready file, which is not token/frame realtime streaming. It's an offline pipeline with checkpoints.
Installing and pairing
Part of the T8mars/MiniMax-H3 pack: ComfyUI Manager → search "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into custom_nodes, restart. No pip dependencies; the H3 weights (33B diffusion model, Qwen3-VL CLIP, video + audio VAEs) are on you - the pack won't download them, and the H3 community licence is region-restricted. This node is experimental, and so is its sibling chain (Accept → Compose); the README's long-video troubleshooting section is worth a skim before you lean on it for a big job. If you need to cancel or reset a job instead of resuming it, that's the Control node's job, not this one's.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| speech_plan | H3_T8_SPEECH_PLAN | — | |
| job_id | STRING | speech_job_001 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| session | H3_T8_SPEECH_LONGFORM_SESSION | — |
| next_voice_profile | H3_T8_VOICE_PROFILE | — |
| next_index | INT | — |
| next_text | STRING | — |
| complete | BOOLEAN | — |
| report_json | STRING | — |