MiniMax H3 Face Refine Latent / 脸部二次生成条件 (Advanced)
Swap the face crops into your H3 latent, audio untouched
- positive
- av_latent
- crops
- video_vae
- face_plan
- positive
- av_latent
- report_json
Here's where face refine gets its hands on the actual generation. After the Plan node has produced face crops and the Sampler has built a low-denoise schedule, this node does the surgical part: it strictly replaces only the video stream of an existing H3 AV latent with the VAE-encoded crop sequence. The audio latent and the noise-mask objects are preserved exactly. No temporal trim, no padding, no resizing of the timeline - it's a head transplant, not a rewrite.
That's a bigger deal than it reads. H3 latents are joint - video and audio live in the same nested latent, on different clocks. If you naively VAE-encode crops and stuff them in, you can silently break the audio alignment or the temporal length. This node exists to refuse that: it only touches the video portion, and it requires the audio noise mask to be present and locked (audio_policy = require_locked) - if the mask is missing or nonzero, it refuses rather than guessing. "Use a native BasicScheduler denoise value for the second pass," the description warns, which is how the low-denoise second pass is supposed to be driven.
Inputs you need to get right:
positive- your conditioning, passed through unchanged. This is what tells the second pass what to keep drawing.av_latent- the full H3 AV latent from your first pass.crops- the face crops from the Plan node (or your own source-bound crops).video_vae- the H3 video VAE, used to encode the crops.face_plan- theH3_T8_FACE_REFINE_PLANfrom planning, so the node knows the crop geometry and alignment.allow_multi_shot_exp- defaultfalse. If your footage has hard cuts, this refuses to run and tells you to split the source into shot-local H3 windows instead. That's a feature, not a bug - the plan is shot-aware, and the refine pass should be too.
Outputs: positive (pass-through), av_latent (the modified latent - feed this into the face-refine sampler), and report_json.
The thing that trips people: this node is not "do a second generation." It's the conditioning step - it builds the latent that the second, low-denoise pass will sample. The actual sampling happens in a sampler node fed by MiniMaxH3FaceRefineSamplerT8Advanced. Wire order matters: Plan → this → Sampler → sampler node → Stitch back onto the original frames.
Install: ComfyUI Manager → "MiniMax H3 Audio T8", or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8
Restart after. No forced pip deps, no downloads. You supply the H3 model, CLIP and VAE yourself - and remember the model's Community License has its own territory restrictions that are separate from this GPL pack.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| av_latent | LATENT | — | |
| crops | IMAGE | — | |
| video_vae | VAE | — | |
| face_plan | H3_T8_FACE_REFINE_PLAN | — | |
| audio_policy | COMBO | require_locked | require_locked refuses a missing or nonzero audio noise mask. |
| allow_multi_shot_exp | BOOLEAN | false | Default refuses hard cuts; split the source into shot-local H3 windows. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| av_latent | LATENT | — |
| report_json | STRING | — |