Nodes/Replicate Select/Sync Lipsync 2 Pro (Replicate)
ComfyUI Node

Sync Lipsync 2 Pro (Replicate)

Sync Lipsync 2 Pro — video-to-video lipsync with an actual mismatch mode

By Pharma-Lobby·Created 2 months ago·Updated 2 months ago· 0
Sync Lipsync 2 Pro (Replicate)
  • audio
  • video_path
video
sync_modeloop
temperature0.50
active_speakerfalse

Sync Lipsync 2 Pro is the "replace the voice in an existing video" node. Unlike the still-image avatar nodes in this pack, it takes a video - a real clip of someone talking - and re-animates that person's lips to match a new audio track. If you have a talking-head recording and want to change the dialogue without re-shooting, this is the node. It's also the pack's most opinionated lipsync, because it actually thinks about what to do when the audio and video durations don't line up.

That's the headline feature and it's genuinely uncommon: sync_mode gives you five strategies for length mismatch. loop repeats the video to cover longer audio, bounce plays it forward then backward, cut_off stops early, silence pads with silence, and remap stretches. Default is loop, which is the safe choice for "audio is a bit longer than the clip."

How it works

Standard engine around sync/lipsync-2-pro. The key mechanism detail from the pack's source: video inputs expect a URL string - Replicate's workers need fetchable files, so the video input is a STRING pointing at an .mp4 somewhere reachable, not a local file you've dropped on the canvas. The audio is different: it's a native AUDIO input, uploaded as WAV. The output comes back as an MP4 saved to output/video/ with video_path returned as a STRING.

The inputs that matter

  • video (required) - an .mp4 URL. This is the input that surprises people: it's a string field, not a video upload. Host the clip somewhere public or on a signed URL first.
  • audio (required) - the replacement audio as native ComfyUI AUDIO (.wav under the hood).
  • sync_mode - loop (default), bounce, cut_off, silence, or remap. Pick based on how your audio and video lengths relate and what end-state you want.
  • temperature - 0–1, default 0.5. The tooltip's framing is the best summary: how expressive the lipsync can be. Higher = more animation energy, lower = tight, conservative mouth movement.
  • active_speaker - off by default. Turn it on to let the model detect who is speaking in the clip and lipsync only that person - the right call for multi-person footage.

Output: video_path, a STRING.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Pharma-Lobby/ComfyUI-Replicate-Select

Or ComfyUI Manager → Install Custom Nodes → "Replicate Select", restart. Dependency: replicate>=1.0.7. Token via environment variable:

export REPLICATE_API_TOKEN=r8_...

Where people get burned

  • Video is a URL, audio is a file. It's a weird split, and it's easy to drag a local video in and watch the call fail. URL for the video, AUDIO for the voice.
  • Ignoring sync_mode. The default loop is fine, but if your audio is much shorter than the clip, cut_off or silence gives a cleaner result than a looping avatar.
  • Temperature as a quality dial. Crank it to 1.0 and you get an expressive - sometimes overcooked - performance. For natural talking-head work, keep it near 0.5.
  • Multi-person footage without active_speaker. If two people are on screen and you only replace one voice, the model guesses - and guesses wrong. active_speaker exists for exactly this.
CategoryReplicate Select/lipsync

Inputs (5)

NameTypeDefaultDescription
videoSTRINGInput video file (.mp4)
audioAUDIOInput audio file (.wav)
sync_modeoptCOMBOloopLipsync mode when audio and video durations are out of sync
temperatureoptFLOAT0.500–1How expressive lipsync can be (0-1)
active_speakeroptBOOLEANfalseWhether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)

Outputs (1)

NameTypeDescription
video_pathSTRING