MiniMax H3 Speech Long Form Compose / 合成长文本 (EXP/T8)
Sew your accepted H3 segments into one clean audio track — subtitles included
- speech_plan
- audio
- timeline_json
- srt
- vtt
This is the payoff node of the long-form speech chain. All those individually rendered and accepted segments - the ones you committed one-by-one so a crash wouldn't wipe the job - finally get sewn into a single continuous audio track. MiniMaxH3SpeechLongFormComposeT8 reads the job's manifest, concatenates the accepted chunks in order with a crossfade at each seam, applies a peak limit, and hands you the finished audio plus ready-to-use subtitle files. If Start is the planning office and Accept is the checkpoint button, Compose is the delivery truck.
How it works
Give it the speech_plan (so it knows the segment order and text) and the job_id that owns the accepted segments, and it walks the manifest, pulls each committed chunk, and places it in sequence. Two quality knobs sit on top:
crossfade_seconds(default 0.06, max 0.5) - a short blend at each seam so adjacent segments don't click or jump. 60ms is the author's default and it's a reasonable starting point; if you hear audible joins, nudge it up rather than reaching for a re-render.peak_limit_dbfs(default -1, meaning off) - attenuation-only limiting at the end. The pack's convention everywhere: it protects against clipping but never boosts quiet speech, so you don't get volume creeping up on you.
The outputs are the whole point: audio (the composite track, ready for a save node), timeline_json (segment boundaries and timings, for your own tooling), and srt and vtt - actual subtitle files generated from the plan's text and each segment's placement. That's a genuinely nice touch: for narration or audiobook-style work you get the captions almost for free, synced to the composed audio.
The deal you're accepting
Compose only assembles what Accept committed. Segments still pending in the manifest are simply not there - no silent guessing, no fabricating a gap. If you run Compose before accepting anything, you get an empty (or minimal) result rather than an error, which is exactly the fail-closed behaviour you want from a pipeline node. And because the manifest is the source of truth, Compose is deterministic per accepted-set: re-running it gives you the same track, which makes iteration safe.
Installing and pairing
The usual one-time pack install: ComfyUI Manager → "MiniMax H3 Audio T8", or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into custom_nodes, restart. No pip deps. Long-form final assembly wants ffmpeg on your PATH - most ComfyUI bundles ship it, and the node gives you a clear error before writing if it's missing. The H3 weights themselves are yours to supply. This is experimental code from a one-author pack, so do a listen-through of the seams on your first job; the crossfade default is tuned for short clean chunks, and long ambient pauses between lines can benefit from a longer blend.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| speech_plan | H3_T8_SPEECH_PLAN | — | |
| job_id | STRING | speech_job_001 | — |
| crossfade_seconds | FLOAT | 0.0600–0.5 | — |
| peak_limit_dbfs | FLOAT | -1.0-12–0 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| timeline_json | STRING | — |
| srt | STRING | — |
| vtt | STRING | — |