MiniMax H3 Multi-Face Repair Job / 单角色修复任务 (Advanced)
One character, one shot, one repair job — H3's answer to multi-person face fixes
- frames
- identity_assignment
- face_plan
- base_window
- crops
- identity_references
- source_reference_crop
- preview
- report_json
- absolute_start_frame
- window_frame_count
Repairing faces in H3 video is easy when there's one face and it stays put. It gets genuinely hard when there are multiple people in a shot - which face is whose, and how do you fix one without touching the other? The pack's answer is deliberately sequential: MiniMaxH3MultiFaceRepairJobT8Advanced handles one character in one shot at a time, producing a Face Refine Parity job that later gets composited back. Generate each person one at a time, then composite. It's slower to set up than a magic "fix all faces" button, but it's also the only approach that keeps identities straight.
The mechanism is where the "one person at a time" promise becomes real. You give the node an identity assignment; inside the chosen person's SAM mask, YuNet localizes the face, and SFace then rejects detections that don't match the assigned identity. So if two faces are close together, the wrong face gets filtered out by identity rather than accidentally repaired. The job itself is built on the 17n+5 H3 frame grid - this is latent-space face refinement through H3, not a post-process blur.
Inputs that matter
framesandidentity_assignment- the shot and the multi-face identity map (built by the pack's multi-person identity nodes).character_idandshot_id- which person, which shot. This is the scope of the job.window_start_in_shotandwindow_frame_count(73) - the job's frame window.window_frame_countmust be one of 5/22/39/56/73/90/107/124; 73 is about 3.04s at 24fps. If a shot is short by up to 16 frames, the last frame is used only as H3 context and the padded tail is discarded at composite.crop_factor(2.5) andcanvas_mode(manual_512) - how tightly the face is cropped for the H3 repair canvas.identity_guard(sface_cpu) andminimum_similarity(0.36) - the identity gate. Too low and wrong faces slip in; too high and the job abstains on legitimate detections.center_smooth_window(21),size_smooth_window(51) - temporal smoothing of the crop across frames, so the face window doesn't jitter.- Optional
crop_scale_mode-legacy_crop_factorpreserves old workflows;target_face_px(default 300) resolvescrop_factorso the face reaches a target height in the H3 canvas.
Outputs
face_plan (the signed H3_T8_FACE_REFINE_PARITY_PLAN), base_window, crops, identity_references, source_reference_crop, preview, report_json, absolute_start_frame and window_frame_count so the composite knows where this job lands in the full video.
Install and where it fits
Pack install once: ComfyUI Manager → search MiniMax H3 Audio T8, or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into ComfyUI/custom_nodes/, restart. No pip extras, no model downloads - the face models (YuNet, SFace) are the pack's own local setup.
The rhythm: run the identity assignment, then one Repair Job per person, then MiniMaxH3MultiFaceCompositeT8Advanced to stitch them. The one trap is minimum_similarity - people set it too aggressively to "protect" identity and get abstains everywhere. And this whole subsystem is Experimental with SAM tracking in the loop; the pack's own language is careful about claiming identity precision. The 17n+5 grid also means your window length gets quantized - pick from the allowed set rather than fighting it.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| identity_assignment | H3_T8_MULTIFACE_IDENTITY_ASSIGNMENT | — | |
| character_id | STRING | Character_A | — |
| shot_id | INT | 00–999 | — |
| window_start_in_shot | INT | 00–100000 | — |
| window_frame_count | INT | 735–124 | Must be 5, 22, 39, 56, 73, 90, 107 or 124. The 73-frame default is about 3.04 seconds at 24 fps. If a shot is short by at most 16 frames, its last frame is used only as H3 context and the padded tail is discarded during final composition. |
| crop_factor | FLOAT | 2.51.2–8 | — |
| canvas_mode | COMBO | manual_512 | 4 options: manual_384, manual_512, manual_640, auto_capped_768 |
| center_smooth_window | INT | 211–121 | — |
| size_smooth_window | INT | 511–181 | — |
| identity_guard | COMBO | sface_cpu | 2 options: sface_cpu, sam_track_only_exp |
| minimum_similarity | FLOAT | 0.36-1–1 | — |
| analysis_chunk_frames | INT | 41–32 | — |
| crop_scale_modeopt | COMBO | legacy_crop_factor | legacy_crop_factor preserves existing workflows. target_face_px automatically resolves crop_factor so the face reaches at least about the requested height in a manual H3 crop canvas. Source boundaries can make it larger. |
| target_face_pxopt | FLOAT | 30096–512 | Minimum target face height inside the H3 crop canvas. The reviewed 512px single-person route covered about 205-312px; 300px targets its upper end. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| face_plan | H3_T8_FACE_REFINE_PARITY_PLAN | — |
| base_window | IMAGE | — |
| crops | IMAGE | — |
| identity_references | IMAGE | — |
| source_reference_crop | IMAGE | — |
| preview | IMAGE | — |
| report_json | STRING | — |
| absolute_start_frame | INT | — |
| window_frame_count | INT | — |