MiniMax H3 Audio Refine Compatibility Setup / 音频精修兼容装配 (T8 Advanced EXP)
The node that hands SamplerCustomAdvanced a ready-made 4-step audio tail
- plan
- refine_model
- positive
- av_latent
- model
- noise
- guider
- sampler
- sigmas
- latent
- report_json
This is the payoff node in the MiniMax H3 Audio Refine compatibility chain. The Route node signs off on your first pass, the Plan node builds the fixed four-NFE audio tail, and this Setup node turns that plan into everything SamplerCustomAdvanced needs to actually run the refine. If you've ever used a custom sampler setup in ComfyUI, you know the drill: that node wants a model, noise, guider, sampler, sigmas and a latent, and it's famously picky about getting them consistent. This node exists so you don't have to hand-assemble a dual-clock audio refine schedule yourself.
It's the last node before the sampler, and it takes four inputs: the plan from the Plan node, the refine_model, your positive conditioning, and the finished av_latent you want refined. In return you get all six sampler inputs - model, noise, guider, sampler, sigmas, latent - plus report_json. Wire those straight into SamplerCustomAdvanced and you're running the four-NFE dual-clock audio tail on the audio slice of your joint AV latent.
The part that surprises people
MiniMax H3 doesn't have a separate audio model to refine. It's one omni-modal transformer, so "audio refine" still means full H3 transformer forward passes. The pack is upfront that an uncached refine step is close to a full first-pass step in cost - you're not getting 4 cheap steps, you're getting 4 expensive ones that just happen to only change the audio slice. If you're on a 16GB card, budget accordingly.
There's also a hard resource gate baked into the audit. The Setup node requires at least 512 MiB free VRAM and 16 GiB of system commit before it will proceed. That's a minimum rejection threshold, and the README is careful to say it's not a promise that every 16GB card won't OOM - just the floor below which it refuses to even try. It's the pack's standard honesty: it gates, but it doesn't overpromise.
The other thing the Setup node revalidates is the chain's ownership assumptions: it checks the compatibility route, whether a Prompt Relay or Long Video context is present and who owns it, that your conditioning is sane, and that the final AV latent is the right shape. The whole chain is designed to prevent you from feeding the refined result back into a context node that thinks it's the original, or double-applying EAV on the refine side. That's where most people go wrong with this workflow, so having a node that says "no" is a feature, not friction.
Install and gotchas
Same as every node in the pack - ComfyUI Manager, search "MiniMax H3 Audio T8", restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
And the pack's standing rule: update ComfyUI itself before anything else, or the whole T8 set imports-fails at once. requirements.txt is intentionally empty; ComfyUI supplies torch, torchaudio, numpy, Pillow and safetensors.
The trap to avoid: this node emits an uncached tail - meaning every run re-executes the four steps. There's no shortcut, so don't queue a batch of ten and walk away expecting a quick result. And remember the rest of the chain: the output of a refine run is a candidate. The pack's own quality gate defaults to falling back to the original AV latent unless you explicitly accept the candidate, because the refine can change wording, voice, performance and lip-sync in ways that aren't always an improvement. The Setup node gets you to the finish line; your ears pick the winner.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| plan | H3_T8_AUDIO_REFINE_COMPAT_PLAN | — | |
| refine_model | MODEL | — | |
| positive | CONDITIONING | — | |
| av_latent | LATENT | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| noise | NOISE | — |
| guider | GUIDER | — |
| sampler | SAMPLER | — |
| sigmas | SIGMAS | — |
| latent | LATENT | — |
| report_json | STRING | — |