ComfyUI Extension: ComfyUI LatentSync Enhanced

Authored by GuardSkill

Created

Updated

2 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Enhanced LatentSync lip-sync node: no-face-safe, loads models from ComfyUI checkpoints, OOM-guard chunking for 24 GB VRAM.

Looking for a different extension?

Custom Nodes (1)

README

ComfyUI-LatentSyncEnhanced

An enhanced lip-sync node for ComfyUI, built on top of ByteDance LatentSync 1.6.

Improvements over the original wrapper:

| Feature | Original | Enhanced | |---------|----------|----------| | Frame with no face | ❌ Crashes | ✅ Warning + pass-through | | All frames have no face | ❌ Crashes | ✅ Warning + return original video | | Model path | Node's own checkpoints/ symlink | ✅ ComfyUI standard models/checkpoints/LatentSync-1.6/ | | OOM on long videos | ❌ Possible | ✅ Configurable chunk_frames (default 80, safe for 24 GB VRAM) |


Prerequisites

This node is fully self-contained — no other custom nodes are required. The latentsync inference library is bundled directly inside this package.


Model Download & Storage

Required model files

| File | Size | Purpose | |------|------|---------| | latentsync_unet.pt | ~4.8 GB | Main lip-sync UNet | | whisper/tiny.pt | ~72 MB | Audio feature extractor | | vae/ (directory) | ~320 MB | VAE encoder/decoder |

Where to place them

All model files go inside ComfyUI's standard checkpoints folder, under a subdirectory named LatentSync-1.6:

ComfyUI/
└── models/
    └── checkpoints/
        └── LatentSync-1.6/          ← create this folder
            ├── latentsync_unet.pt
            ├── whisper/
            │   └── tiny.pt
            └── vae/
                ├── config.json
                └── diffusion_pytorch_model.safetensors

Download from Hugging Face

# Option 1 – huggingface-cli (recommended)
pip install huggingface_hub
huggingface-cli download ByteDance/LatentSync-1.6 \
    latentsync_unet.pt \
    whisper/tiny.pt \
    vae/config.json \
    vae/diffusion_pytorch_model.safetensors \
    --local-dir ComfyUI/models/checkpoints/LatentSync-1.6

# Option 2 – manual download
# Visit: https://huggingface.co/ByteDance/LatentSync-1.6
# Download the files above and place them as shown.

Node Inputs

| Input | Type | Default | Description | |-------|------|---------|-------------| | images | IMAGE | — | Input video frames | | audio | AUDIO | — | Input audio (any sample rate, auto-resampled to 16 kHz) | | seed | INT | 1247 | Random seed for reproducibility | | lips_expression | FLOAT | 1.5 | Lip movement strength (guidance scale). Range: 1.0–3.0 | | inference_steps | INT | 20 | Diffusion denoising steps. More = slower but higher quality | | chunk_frames | INT | 80 | Frames per processing segment. Reduce if you hit OOM. |

chunk_frames guide (VRAM)

| VRAM | Recommended chunk_frames | |------|---------------------------| | 24 GB | 80 (default) | | 16 GB | 48 | | 12 GB | 32 | | 8 GB | 16 |


Node Outputs

| Output | Type | Description | |--------|------|-------------| | images | IMAGE | Lip-synced video frames | | audio | AUDIO | Input audio resampled to 16 kHz |


How no-face frames are handled

  • Some frames have no face: those frames are passed through unchanged (original pixels). Surrounding frames' face-alignment data is used as nearest-neighbour fallback for the diffusion input so the audio sequence stays intact.
  • All frames have no face: a warning is printed and the original video is returned as-is (no lip-sync applied, no crash).

Video length vs audio length

Handled automatically inside the pipeline:

| Situation | Behaviour | |-----------|-----------| | Audio longer than video | Video is ping-pong looped to match audio length | | Video longer than audio | Video is trimmed to audio length |


License

Apache 2.0 — same as the underlying LatentSync model.

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more