Nodes/ComfyUI-FlowChain/Workflow LipSync (FlowChain ⛓️)
ComfyUI Node

Workflow LipSync (FlowChain ⛓️)

Drive Wav2Lip Studio from ComfyUI — the one FlowChain node with a real dependency

By numz·Created 2 years ago·Updated about a year ago· 170
Workflow LipSync (FlowChain ⛓️)
  • frames
  • audio
  • faceswap_image
    lipsync_studio_urlhttp://127.0.0.1:7860/
    project_nameproject1
    face_id0
    fps25
    avatar
    close_mouth_before_lipsynctrue
    quality
    skip_first_frames0
    load_cap0
    low_vramfalse

    WorkflowLipSync is FlowChain's odd one out. The other four nodes in the pack are about turning workflows into callable boxes; this one is a remote control for a separate desktop app. It drives LipSync Studio v0.6 - a third-party Wav2Lip-based video app sold on Patreon by the same author who writes FlowChain - through its Gradio API, so you can generate lip-synced, face-swapped talking videos without leaving ComfyUI. If you don't own Wav2Lip Studio, this node does nothing for you. Full stop, no substitute.

    It's also the reason the pack ships a dependency at all. The entire FlowChain requirements.txt is one line - gradio_client==0.8.0 - and it exists only for this node. The other nodes need nothing. That's the honest trade: the four workflow nodes are lightweight, this one is a bridge to proprietary software.

    How it works

    The node expects a running LipSync Studio instance, defaulting to http://127.0.0.1:7860/ (its standard Gradio port). When you run it, the node writes your incoming frames as PNGs into ComfyUI's output folder, converts the incoming audio tensor to a WAV via ffmpeg, then drives the studio through a long sequence of API calls - setting the project, loading frames, analysing the video, setting the audio file, swapping the face, generating a driving video, and finally running wav2lip. The finished video gets copied back into ComfyUI/output/<project_name>/. The same project also lands in LipSync Studio's own projects folder, so you can open it in the studio afterwards and keep refining if the first pass isn't good enough.

    The inputs that matter

    There are a lot of knobs, but the ones you actually reach for:

    • frames (IMAGE) - the video frames to lip-sync. This is your source footage, usually a batch of images.
    • audio (AUDIO) - the speech track, in ComfyUI's native AUDIO format (wire in a Load Audio node).
    • lipsync_studio_url - where the studio is listening; leave it alone if it's on the same machine.
    • project_name - controls both the output folder and the studio project.
    • avatar - one of ten built-in avatars; it drives how the output video looks.
    • quality - Low / Medium / High; High runs GFPGAN over the result to clean up faces, at a cost in time.
    • face_id (0–10) - which detected face to lip-sync, plus faceswap.
    • faceswap_image (optional IMAGE) - a face to swap in, if you want a different identity driving the video.

    The rest - fps, close_mouth_before_lipsync, skip_first_frames, load_cap, low_vram - are worth leaving at their defaults until a result is wrong. low_vram is there for weak GPUs, and load_cap (0 = all) limits how many frames the studio processes.

    The output

    There isn't one. The node returns nothing down a socket; it's a terminal output node. Its result is the video file dropped into your ComfyUI output folder, shown in the UI as a video_path. That's the whole return value.

    Installing and running it

    Install is shared with the pack (Manager → FlowChain, or git clone + pip install -r requirements.txt + restart), but running it needs three things ComfyUI alone can't give you: the LipSync Studio app itself, that app running and reachable at the URL, and ffmpeg on your system (the node uses it to write the audio WAV - it'll borrow the Video Helper Suite ffmpeg or your system install).

    Gotchas

    The dependency story is the gotcha: gradio_client==0.8.0 is pinned, which is old, and the studio's API can drift between versions - if calls start failing, check that your studio version and the pinned client still agree. If the node errors immediately, the first suspect is the URL: nothing is listening on 7860. And remember the boundary: everything this node does happens in the studio, so the studio's own VRAM and settings are the ones that matter. It's a genuinely useful bridge if you're already paying for the app - and a pointless install if you're not.

    CategoryFlowChain ⛓️

    Inputs (13)

    NameTypeDefaultDescription
    lipsync_studio_urlSTRINGhttp://127.0.0.1:7860/
    project_nameSTRINGproject1
    framesIMAGE
    face_idINT00–10
    fpsFLOAT250–60
    audioAUDIO
    avatarCOMBO10 options: Avatar 1, Avatar 2, Avatar 3, Avatar 4, Avatar 5, Avatar 6, +4
    close_mouth_before_lipsyncBOOLEANtrue
    qualityCOMBO3 options: Low, Medium, High
    skip_first_framesINT00–10000
    load_capINT00–10000
    low_vramBOOLEANfalse
    faceswap_imageoptIMAGE

    Outputs (0)

    No outputs