Nodes/ComfyUI-HighSync-Wrapper/HighSync LipSync Advanced
ComfyUI Node

HighSync LipSync Advanced

The same lip-sync with every dial exposed — here's which ones you'll actually touch

By magicwang1111·Created 4 months ago·Updated 4 months ago· 0
HighSync LipSync Advanced
  • highsync_model
  • images
  • audio
  • images
  • audio
  • frame_rate
  • output_video_path
input_fps25
max_frames0
inference_steps20
cfg_scale3.5
seed42
preprocess_chunk_frames1500
denoise_audiofalse
trim_audio_to_videotrue
keep_intermediate_outputstrue

HighSync LipSync Advanced runs the exact same diffusion pipeline as plain HighSync LipSync - same face tracking, same 512×512 regeneration, same feathered blending, same ffmpeg mux - but it hands you every knob the simple node hides behind the model's config defaults. The good news: the defaults (20 inference steps, CFG 3.5) are the values from the HighSync paper's own config, so the simple node isn't secretly holding back quality. What this node holds back is control, and there's a decent argument you'll only ever want a couple of these.

The inputs a beginner actually sets

Ten required inputs, but five of them are the same core as the simple node: highsync_model, images, audio, input_fps, max_frames. The extras break down like this:

  • inference_steps (default 20, 1–100) - the diffusion step count. Drop to ~10–12 for quick previews of whether the lips land on the words; nudge to 25–30 if you're rendering the real thing and want cleaner mouth articulation. This is the one you'll change most.
  • cfg_scale (default 3.5, 0–20) - standard CFG tradeoff. The lips stick harder to the audio as you raise it, but faces start to distort; lower it when things get waxy. The paper's 3.5 is a sane default, so treat this as a "when something's wrong" dial.
  • seed (default 42) - set it to reproduce a run exactly; leave it and the mouth won't land identically every time.
  • preprocess_chunk_frames (default 1500, min 12) - how many frames the face tracker chews through per chunk before inference. This is the memory dial. If you're hitting OOM on a long clip during the tracking stage, drop it.
  • denoise_audio (default False) - see the caveat below; you'll probably never flip it.
  • trim_audio_to_video (default True) - cuts or pads the audio to match the video's duration after the 25fps resample, so the two stay in sync. Leave it on.
  • keep_intermediate_outputs (default True) - whether the per-stage files (frames, wavs) stay in ComfyUI/output/highsync/<task_id>/. Flip to False if you're batching a lot and want the output folder tidy; you still get final.mp4 either way.

Outputs are identical to the simple node: images, audio, frame_rate (always 25 in v1), and output_video_path pointing at the muxed mp4.

The one real caveat: denoise_audio

denoise_audio defaults to False for a specific, documented reason. The official HighSync denoiser package pins old Hydra/OmegaConf versions that clash with current ComfyUI environments, so the README's guidance is to install it without pulling those dependencies:

pip install --no-deps denoiser==0.1.5

And even when you do enable it, the final mp4 still uses the original audio track so voice quality survives - denoising only cleans the input the model conditions on. So this is a "my source audio is noisy and the lips are jittering" fix, not a general quality knob.

Install and wiring

Identical to the rest of the pack - clone into custom_nodes, pip install -r requirements.txt into ComfyUI's environment, restart, ffmpeg on PATH:

cd ComfyUI/custom_nodes
git clone https://github.com/magicwang1111/ComfyUI-HighSync-Wrapper
cd ComfyUI-HighSync-Wrapper
pip install -r requirements.txt

Feed it the highsync_model output from HighSync Model Loader, frames from VideoHelperSuite or similar, and an AUDIO track. If you're new to the pack, honestly start with the simple LipSync node first - you'll likely find the defaults are fine - and graduate here when a specific run needs more steps, a different seed, or the trim/denoise toggles. The dials are here because the underlying model's a research artifact that you're expected to tune; they're not a sign the default node is broken.

Categoryvideo/lipsync

Inputs (12)

NameTypeDefaultDescription
highsync_modelHIGHSYNC_MODEL
imagesIMAGE
audioAUDIO
input_fpsINT251–120
max_framesINT00–100000
inference_stepsINT201–100
cfg_scaleFLOAT3.50–20
seedINT420–4294967295
preprocess_chunk_framesINT150012–10000
denoise_audioBOOLEANfalse
trim_audio_to_videoBOOLEANtrue
keep_intermediate_outputsBOOLEANtrue

Outputs (4)

NameTypeDescription
imagesIMAGE
audioAUDIO
frame_rateINT
output_video_pathSTRING