Nodes/ComfyUI-VideoBasicLatentSync/VideoBasic LatentSync Node
ComfyUI Node

VideoBasic LatentSync Node

LatentSync 1.5 in ComfyUI, minus the OOM

By jax-explorer·Created about a year ago·Updated about a year ago· 0
VideoBasic LatentSync Node
    • video_path
    video_path
    audio_path
    seed1247
    lips_expression1.5
    inference_steps20

    This is ByteDance's LatentSync 1.5 lip-sync, stuffed into a ComfyUI node with the OOM guardrails turned all the way up. You feed it a talking-head video and an audio file; it rewrites the mouth to match the speech. The face stays yours, the lips just start talking. One of the only approaches of its kind that doesn't call some API or want a paid key - the whole thing runs locally, models included.

    It's worth being honest about where this sits in 2026. The current r/comfyui lip-sync conversation is all Wan S2V, InfiniteTalk, and LTX-2's native audio, and LatentSync's share of that conversation has genuinely shrunk - the community moved on partly because the wrappers were fiddly. But those approaches generate or animate a whole head; LatentSync is the different beast that only touches the mouth region of an existing video and syncs it to a real audio track. For dubbing, voice-clone pipelines, or re-syncing a line read where the take is good but the sync is off, that's still the exact job you want. The upstream ByteDance model is also one of the classic open lip-sync releases, sitting in the same pile as PuLID and Depth Anything - the components the ecosystem runs on and rarely names.

    What the "VideoBasic" part means

    This pack is an OOM-optimized fork of ShmuelRonen's ComfyUI-LatentSyncWrapper, and the fork's entire reason to exist is that the wrapper OOM'd on cards it shouldn't have. Look at the code and the optimizations are concrete: batch size is chosen from your VRAM (32 on >20GB, 16 on >8GB, 8 below), TF32 gets enabled on big cards, mixed precision kicks in above 8GB, the process caps itself at 80% of VRAM, and the CUDA cache is emptied before and after each run. LatentSync 1.5 still wants ~20GB to be comfortable - the RTX 3090 is the stated target - but the difference between this fork and the upstream wrapper on an 8GB card is exactly the difference between "runs, slowly" and "crashes."

    The inputs that matter

    • video_path / audio_path - plain file paths as strings, not tensors. There's no VHS wiring here; give the node absolute paths to an mp4 and an audio file.
    • lips_expression - this is wired straight to the model's guidance scale. 1.0–1.5 keeps lips subtle and calm; 2.0–3.0 makes the mouth move more dramatically. If the result looks like a ventriloquist having a seizure, dial it down.
    • inference_steps - denoising steps, default 20. 10–15 for previews, 30–50 if you're patient and want the mouth shapes tighter.
    • seed - default 1247, set it if you want repeatable output.

    The node returns a single video_path STRING - the path to a timestamped mp4 it saves into the pack's outputs/ folder. That's a file on disk, so you can drag it into a viewer node or just go open it.

    Installing it

    ComfyUI Manager: search "ComfyUI-VideoBasicLatentSync". Or manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jax-explorer/ComfyUI-VideoBasicLatentSync
    cd ComfyUI-VideoBasicLatentSync
    pip install -r requirements.txt
    

    Two things will bite you before anything else. First, FFmpeg must be on your system PATH or the node raises a hard error on load - this is a real check in the code, not a suggestion. Second, the first run downloads latentsync_unet.pt (~5GB) plus a tiny Whisper model from ByteDance/LatentSync-1.5 into the pack's checkpoints/ folder, so budget for a long coffee break. The README in this repo is a verbatim copy of the upstream wrapper's, including install instructions that tell you to clone a different repo - clone the jax-explorer one, ignore the text.

    The gotchas that will actually cost you

    The model likes clean, frontal, 25fps footage with the face visible the whole time; it will not do anime faces. People who hit weird garbled output are usually feeding it a side profile or a clip where the face exits frame. Also be aware this pack is aggressive about temp-directory hygiene - it renames ComfyUI's temp/ folder out of the way on load so its own scratch space doesn't collide. That's harmless but startling if you see a temp_backup_xxxx folder appear. And the bundled workflow json references an older, tensor-based LatentSyncNode from the upstream wrapper; the node this pack actually ships takes file paths, so don't be confused when the example doesn't load clean. If you're hitting VRAM limits anyway, the length-adjuster sibling node in this pack is worth wiring up first - it stops you feeding the model a video whose duration doesn't match the audio, which is a silent source of bad sync.

    CategoryLatentSyncNode

    Inputs (5)

    NameTypeDefaultDescription
    video_pathSTRING
    audio_pathSTRING
    seedINT1247
    lips_expressionFLOAT1.51–3
    inference_stepsINT201–999

    Outputs (1)

    NameTypeDescription
    video_pathSTRING