MiniMax H3 Speech Abnormal-Exit Guard / 异常释放保护 (EXP/T8)
A seatbelt for H3 speech renders that crash or get cancelled
- speech_guard
- report_json
An H3 speech render can go wrong in ways that don't raise a clean error. Out of memory, a manual cancel, some upstream node throwing mid-sampling - and suddenly the 33B model is sitting in VRAM with nothing left in the graph to release it, because the graph's happy path (the Finalize node) never ran. MiniMaxH3SpeechGuardT8 is the pack's seatbelt for exactly that: it arms a prompt-lifecycle guard before speech conditioning, and if an abnormal exit happens, the selected error-release policy gets requested even though Finalize never executed.
It's a tiny node with one real input, but it plugs the scariest hole in the speech pipeline.
What it does
error_release_policy defaults to unload_all_models. The tooltip is worth reading carefully: unload_all_models is global - current ComfyUI already unloads all models immediately for a recognized CUDA OOM, so the guard's real job is closing the non-OOM and cancellation gaps where ComfyUI's automatic behavior doesn't kick in. The alternatives are clear_execution_cache (cache and soft memory, gentler) and presumably a none-policy for when you don't want any automatic release.
The output is a speech_guard object (an H3_T8_SPEECH_GUARD) that you wire into MiniMaxH3SpeechConditioningT8, plus a report_json confirming it's armed, which prompt it's bound to, and what release scope was selected.
The pairing
The design is a bookend, and the node's own description says it plainly: arm the guard before conditioning, and if OOM, cancellation or another upstream exception prevents MiniMaxH3SpeechFinalizeT8 from running, the error release still fires. On the happy path, Finalize consumes the guard and completes it formally - so the guard isn't a background daemon, it's a promise carried through the graph and settled at the end.
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, no model files.
The honest take
Is this node going to make your speech sound better? No. It's plumbing - a reliability node in a family that's otherwise about audio content. But for anyone who runs long multi-segment speech jobs on a 16GB card, "the render died and now my VRAM is a hostage" is a real, annoying failure mode, and this is the pack's answer to it. Wire it in once at the front of the speech graph, and the seatbelt is just there. The report JSON is also genuinely useful when you're diagnosing: it tells you the guard fired (or didn't) and what scope it requested, so an unexplained VRAM drain becomes a solvable question instead of a ritual of restarting ComfyUI.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| error_release_policy | COMBO | unload_all_models | unload_all_models is global. Current ComfyUI already does this for recognized CUDA OOM; the guard closes non-OOM/cancel gaps. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| speech_guard | H3_T8_SPEECH_GUARD | — |
| report_json | STRING | — |