MiniMax H3 Speech Finalize & Release / 完成并释放 (EXP/T8)
The bookend that releases your VRAM after a speech render
- audio
- speech_guard
- audio
- report_json
Speech workflows in the T8mars H3 pack are deliberately structured with a bookend: MiniMaxH3SpeechGuardT8 arms a cleanup guarantee at the front, and MiniMaxH3SpeechFinalizeT8 is the node that actually performs the release at the end - if the render completes normally. It passes your AUDIO through untouched and then requests the release policy you chose, so the expensive H3 model doesn't sit in VRAM after a voiceover job is done.
On the surface it's nearly trivial: audio in, audio out, plus a report. The reason it exists is resource hygiene. H3 is a big 33B model, and this pack runs on the assumption that you don't want it resident for the whole session. The speech graph is explicitly built as condition → sample → audio-only decode → finalize and release, and this node is that last step.
The inputs
audio- the audio you want to pass through (typically fromMiniMaxH3SpeechDecodeT8orMiniMaxH3SpeechAssembleT8).release_policy-clear_execution_cache(default) orunload_all_models. The author's note is important:unload_all_modelsis global - it unloads every model in ComfyUI, not just H3 - and is never described as H3-only. Choose it knowing it nukes the whole GPU state.upstream_report(optional) - a report string from upstream nodes that gets folded into the final JSON, so your release record carries the full chain.speech_guard(optional) - the guard object fromMiniMaxH3SpeechGuardT8, so Finalize can formally complete the guard instead of just being another node that ran.
Outputs: the passed-through audio and a report_json that records the release, the guard state, and (if provided) the upstream report.
The pairing that matters
The guard at the front arms a promise: "if something abnormal happens between here and Finalize - OOM, a cancellation, another upstream exception - release the selected policy anyway." Finalize is the happy-path counterpart: it releases on normal completion. Between the two, you get release-on-success and release-on-failure. Current ComfyUI already unloads models for recognized CUDA OOM; the guard exists to close the non-OOM and cancellation gaps. So the pairing is: arm the guard in SpeechConditioning, run the render, and let Finalize dismount.
Install
Pack standard - ComfyUI Manager, search "MiniMax H3 Audio T8", or
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
then restart. No extra pip packages.
The honest take
This is a thin node - you could almost think of it as a formality. But the discipline it encodes is the right one for VRAM-constrained H3 work: every speech job should end with an explicit release, and the release should be recorded so you can see what happened. If you skip Finalize and just let the workflow end, the model lingers until ComfyUI's own GC gets around to it, which on a busy session is how the next render starts already OOM. Two minutes to wire, one less mystery OOM. Worth it.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| release_policy | COMBO | clear_execution_cache | 3 options: keep_loaded, clear_execution_cache, unload_all_models |
| upstream_reportopt | STRING | — | |
| speech_guardopt | H3_T8_SPEECH_GUARD | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| report_json | STRING | — |