Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Local MV Vocal Lock Renderer V2 / 独立人声锁定生成 (Advanced EXP/T8)
ComfyUI Node

MiniMax H3 Local MV Vocal Lock Renderer V2 / 独立人声锁定生成 (Advanced EXP/T8)

The V2 vocal-lock renderer

By T8mars·Created about a month ago·Updated a day ago· 1,031
MiniMax H3 Local MV Vocal Lock Renderer V2 / 独立人声锁定生成 (Advanced EXP/T8)
  • model
  • clip
  • video_vae
  • audio_vae
  • reference_image
  • full_song
  • vocal_lock_audio
  • mv_vocal_lock_prompt_plan
  • video
  • video_path
  • manifest_path
  • completed_scenes
  • status
  • report_json
chain_idmy_h3_local_mv_vocal_lock_v2
width1056
height608
base_seed123456789
steps8
shift_video6.00
shift_audio3.00
sampler_namedual_clock_euler
schedulernative_flow
resume_existingtrue
filename_prefixH3_Local_MV_VocalLock_V2
bit_depth8
crf18
model_iduser-selected-local-h3-ref2va-vocal-lock

The V1 renderer conditions every scene on the full song mix, and that's its weakness: the model has to work out which part of a loud, busy master is the voice worth syncing to. This V2 renderer fixes the input problem at the source - it demands a separate, timeline-aligned isolated vocal track and feeds that into each H3 scene's lock_source, so the mouth is driven by clean vocals instead of an inference the model has to make over a wall of instruments.

The two-track contract

Concretely, you connect full_song and vocal_lock_audio. The full song never enters H3 and never conditions any scene - it's held back and muxed exactly once onto the finished, assembled video at the end. The isolated vocal (or clear dialogue) is what each scene's H3 lock_source window actually hears. Two roles, deliberately split: vocal for the face, master for the final render. This is the "vocal lock" architecture that separates this whole V2/V3 line from the compatibility V1 route.

Everything else about the renderer is the serial-resume machinery the V1 node introduced, so I won't re-litigate it: scenes run strictly one at a time through your connected local model (with the Qwen3-VL clip and the video/audio VAEs), accepted scenes are saved atomically under a contract bound to your chain_id (default my_h3_local_mv_vocal_lock_v2), and re-running the same chain after an interrupt resumes instead of restarting. No HTTP /prompt, no remote anything - fully local and serial by design.

Inputs and outputs

Inputs that matter:

  • model, clip, video_vae, audio_vae, reference_image (performer identity), full_song, vocal_lock_audio, and the mv_vocal_lock_prompt_plan from the Vocal Lock Prompt Compiler V2.
  • width/height - default 1056×608, multiples of 32.
  • steps - default 8, with sampler_name/scheduler defaulting to dual_clock_euler/native_flow and shift_video/shift_audio at 6/3. Note the tension I'll flag below: this renderer defaults to the 8-step recipe that the pack's own A/B testing later abandoned for the official 4-step route.
  • chain_id, base_seed, resume_existing (true), filename_prefix, crf/bit_depth for encode, model_id (audit-only).

Outputs: video + preview, video_path, manifest_path, completed_scenes, status, report_json.

V2 or V3? Read this first

Now the part that decides whether you use V2 or jump to V3. The pack's own history is blunt here: V2's single-scene clear-speech sample passed SyncNet (0-frame offset) and normal-speed human lip-sync review, but the performer's surroundings looked soft, and a later V2-era attempt died on a giant background duplicate face. Their controlled follow-up - same image, same audio, same failing seed - traced the culprit to the recipe bundle, not the seed or the H3 base model: they had combined a generic LarryVrh EMA Turbo LoRA with a non-official 8-step / shift-6:3 Ref2VA schedule. The accepted fix pins the official Ref2V Turbo v0.1 LoRA at 4 steps, Euler/simple, shift 12/3 - and that configuration is exactly what the V3 renderer ships as its defaults. So V2 remains in the pack as the historical 8-step Ref2VA route and for lighter single-clip work, but the README's recommendation for verified long-MV lip-sync is the V3 chain (same V2 planner, Visual Director V3 for the one-person/one-face shot contract, and the V3 renderer).

If you use V2 anyway - say, you want the 8-step quality headroom on a short clip - the lesson to take from their findings is: don't bolt a random EMA Turbo LoRA onto a Ref2VA schedule, and expect double-face ghosting if you do. Start locked-off on the camera too; dynamic moves are where subject edges smear.

Installing it

Install is pack-standard: ComfyUI Manager search MiniMax H3 Audio T8, or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes, restart, and update ComfyUI core first. Source your isolated vocal locally before you start - this node won't separate stems for you, and the whole route fails if vocal_lock_audio isn't genuinely timeline-aligned with full_song. The dated V2 workflow in examples/workflows/24-mv-lipsync shows the correct dual-audio wiring.

CategoryT8/MiniMax H3/MV & Lip Sync/Experimental

Inputs (22)

NameTypeDefaultDescription
modelMODEL本地 MiniMax H3 MODEL。
clipCLIP本地 MiniMax H3 Qwen3-VL CLIP。
video_vaeVAE
audio_vaeVAE
reference_imageIMAGE歌手/说话人物的身份参考图。
full_songAUDIO只在最终交付时一次性混入的完整原曲。
vocal_lock_audioAUDIO必需:与full_song同时间线的本地隔离人声/清晰对白,逐场景直接驱动H3。
mv_vocal_lock_prompt_planH3_T8_MV_VOCAL_LOCK_PROMPT_PLAN
chain_idSTRINGmy_h3_local_mv_vocal_lock_v2
widthINT105632–16384
heightINT60832–16384
base_seedINT1234567890–18446744073709550000
stepsINT81–1000
shift_videoFLOAT6.000.01–100
shift_audioFLOAT3.000.01–100
sampler_nameCOMBOdual_clock_euler45 options: dual_clock_euler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
schedulerCOMBOnative_flow11 options: native_flow, beta57, simple, sgm_uniform, karras, exponential, +5
resume_existingBOOLEANtrue
filename_prefixSTRINGH3_Local_MV_VocalLock_V2
bit_depthCOMBO82 options: 8, 10
crfINT180–51
model_idSTRINGuser-selected-local-h3-ref2va-vocal-lock只写入审计报告,不校验模型文件名、大小或哈希。

Outputs (6)

NameTypeDescription
videoVIDEO
video_pathSTRING
manifest_pathSTRING
completed_scenesINT
statusSTRING
report_jsonSTRING