Nodes/ComfyUI_Fill-Nodes/FL Fal Pixverse LipSync
ComfyUI Node

FL Fal Pixverse LipSync

Sync a mouth to audio or generated speech

By filliptm·Created 3 years ago·Updated a day ago· 630
FL Fal Pixverse LipSync
  • frames
  • audio
  • frames
  • audio
  • video_url
  • status_msg
api_key
modeaudio_input
seed0
nth_frame1
textHello, this is a test message.
voice_idAuto

Takes a video you already have and syncs a mouth to speech - either audio you supply, or speech Pixverse generates from text you type in. This is the node for slapping dialogue onto an existing talking-head clip without re-generating the whole video.

The mechanism

Same Pixverse backend as this pack's other Pixverse nodes, a different endpoint: LipSync takes your existing frames and drives mouth movement to match audio, choosing between two input modes via mode - audio_input (you supply an AUDIO clip and it syncs to that) or text_to_speech (you type text, Pixverse generates the voice itself and syncs to it in one step).

Inputs and outputs that matter

frames (required) is the source video as a frame batch - presumably a talking subject, since that's what lip-sync needs to track. mode decides which optional inputs actually get used. audio (optional AUDIO) only matters in audio_input mode. text (optional, default "Hello, this is a test message.") and voice_id (optional, 28 choices - Auto plus a long list of named voices like Emily, James, Isabella) only matter in text_to_speech mode, since audio_input brings its own voice. seed and nth_frame (1-4, the frame-extraction stride) round out the required fields, same as this pack's other Pixverse nodes.

Outputs: frames (the lip-synced result), audio (your own clip in audio_input mode, or the generated voice in text_to_speech mode), video_url, and status_msg.

This pairs naturally with FL_Fal_Pixverse upstream in a graph: generate a talking-head clip there, then run its output frames through this node to add dialogue rather than relying on Pixverse's own generation prompt to imply speech that never actually gets voiced. nth_frame here works the same way it does across this pack's other Pixverse nodes - set it to match whatever stride you used earlier in the chain, or you'll end up thinning frames twice and losing more motion smoothness than intended.

Installing it

ComfyUI Manager: search Fill-Nodes, install, restart. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/filliptm/ComfyUI_Fill-Nodes, then restart.

Where people get burned

mode picks a whole different code path, and the optional fields that matter flip depending on it. Set mode to text_to_speech and forget to write real text, and the placeholder "Hello, this is a test message." gets lip-synced onto your video - an easy mistake to ship without noticing on a quick test run. In audio_input mode, voice_id is simply irrelevant; don't waste time picking a voice there, it isn't consulted.

As with Pixverse's other endpoints, this bills per call through your Fal.ai account, so a batch of lip-sync test iterations adds up faster than a single-image edit would.

Category🏵️Fill Nodes/AI

Inputs (8)

NameTypeDefaultDescription
api_keySTRING
framesIMAGE
modeCOMBOaudio_input2 options: audio_input, text_to_speech
seedINT00–999999
nth_frameINT11–4
audiooptAUDIO
textoptSTRINGHello, this is a test message.
voice_idoptCOMBOAuto28 options: Auto, Emily, James, Isabella, Liam, Sophia, +22

Outputs (4)

NameTypeDescription
framesIMAGE
audioAUDIO
video_urlSTRING
status_msgSTRING