Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Face Refine Manual Review / 人工选择回贴 (Advanced)
ComfyUI Node

MiniMax H3 Face Refine Manual Review / 人工选择回贴 (Advanced)

The node that forces a human to look before a face fix lands

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3 Face Refine Manual Review / 人工选择回贴 (Advanced)
  • base_frames
  • candidate_window_frames
  • changed_mask
  • window_mapping
  • review_frames
  • result_frames
  • accepted_change_mask
  • rejected_change_mask
  • accepted_frame_count
  • rejected_frame_count
  • report_json
decisionpreview_only
accepted_subranges
confirm_acceptfalse
edge_fade_frames2

Here's the uncomfortable truth about face fixing with a video model: the model does not know which face is better. A regeneration that smooths out the melt might also change the identity, the mouth shape, or the lighting - and no loss function is going to argue with you about it. That's why the manual single-window route ends at this node, MiniMaxH3FaceRefineManualReviewT8Advanced: a deliberate human gate that shows you the source window next to the candidate and refuses to let anything change unless you explicitly confirm it. It's the anti-auto-accept node, and it's the whole point of the Window route versus blind batch regeneration.

What it receives

  • base_frames - your full source timeline (still untouched).
  • candidate_window_frames - what H3 actually generated for the repair window.
  • changed_mask - the MASK marking which pixels the candidate actually changed versus the source. This is the fence: only frames inside this mask are even eligible for acceptance.
  • window_mapping - the mapping from MiniMaxH3FaceRefineWindowExtractT8Advanced that tells the node which extracted frames are real repair targets versus context/padding.
  • decision - the combo that does all the work: preview_only, reject, or accept_selected.
  • accepted_subranges, confirm_accept, edge_fade_frames.

How a decision works

Default is preview_only, and the node leans on that hard: it shows you review_frames (source beside candidate) while the complete source timeline passes through bit-for-bit unchanged. Nothing is decided yet. You look at the candidate - check identity, mouth sync, whether the "fix" is actually better - and then you act:

  • reject - the candidate is worse or the identity drifted. Output stays original source pixels, exactly. No second-guessing needed, no partial commit.
  • accept_selected - the candidate is good where it changed the face. But notice the two-part guard: acceptance only happens after confirm_accept is switched on, and it can only touch the selected source repair frames inside the changed_mask. accepted_subranges lets you narrow further - say only frames 10–16 of a 0–23 window - using the same 0-based inclusive range syntax. Context, padding, and candidate audio can never sneak in; they were never eligible.
  • edge_fade_frames (default 2) - the temporal fade width at the edges of the accepted patch, so the splice doesn't pop against the untouched source.

The two-step accept (decision = accept_selected and confirm_accept = true) isn't bureaucracy. Given how cheap it is to click accept on a bad candidate and bake a wrong identity into your timeline, the explicit confirmation is the safety rail - and the accepted change is meant to be final, not re-litigated.

Outputs

review_frames (the side-by-side you judge), result_frames (source timeline after your decision - the thing you eventually save), accepted_change_mask/rejected_change_mask, accepted_frame_count/rejected_frame_count for a quick numeric read on what landed, and report_json.

Where people get burned

Most common confusion is "I accepted but nothing changed" - which means you're on preview_only with confirm_accept off. That's the node doing its job. The second failure mode is forgetting the philosophy: this node fixes the bad-face window, and the final video always keeps the full original audio track. If the candidate's voice or mouth audio sounds different, that's expected - the window's generated audio is discarded by design. Judge the candidate on pixels and identity, not on audio you were never going to keep.

Example graph: 2026-09-05_H3_Face_Refine_Window_Manual_Review_Advanced_EXP.json under examples/workflows/06-face-refine. Install is the standard pack story: ComfyUI Manager (search "MiniMax H3 Audio T8") or clone + restart. It's marked Advanced EXP, so treat every acceptance as a decision you'll have to live with.

CategoryT8/MiniMax H3/Quality/Experimental/Face Refine Window

Inputs (8)

NameTypeDefaultDescription
base_framesIMAGE
candidate_window_framesIMAGE
changed_maskMASK
window_mappingH3_T8_FACE_REFINE_WINDOW_MAPPING
decisionCOMBOpreview_only3 options: preview_only, reject, accept_selected
accepted_subrangesSTRINGOptional 0-based inclusive source-frame ranges. Empty means the planned repair range, but only after confirm_accept is enabled.
confirm_acceptBOOLEANfalse
edge_fade_framesINT20–60

Outputs (7)

NameTypeDescription
review_framesIMAGE
result_framesIMAGE
accepted_change_maskMASK
rejected_change_maskMASK
accepted_frame_countINT
rejected_frame_countINT
report_jsonSTRING