LatentSync1.6 Node
Put any words in a video's mouth — LatentSync 1.6 for ComfyUI
- images
- audio
- images
- audio
You feed it a video of a face and an audio file, and it rewrites the mouth so it says whatever is on that audio. That's the whole pitch of LatentSync, and this node is the most-circulated way to run it inside ComfyUI - the unofficial wrapper for ByteDance's open lip-sync model, by the same community dev who later shipped a ComfyUI wav2lip wrapper. It's the thing people reach for when they want to re-dub a clip or make a generated talking head actually pronounce words instead of just moving its lips vaguely.
A few caveats up front, because the hype outruns the reality. LatentSync edits existing footage - it is not a text-to-speech model, and it needs a real, frontal, always-visible face to work on. Anime faces are right out per the README. If your goal is generating a brand-new talking head from scratch, newer video-to-video options like Wan-based speaking models or InfiniteTalk have been eating its lunch in community chatter; where LatentSync still wins is re-syncing footage you already have. It's a solid tool with a genuinely annoying install, and the install is where most people give up.
How it actually works
Under the hood this node is a harness around ByteDance's own LatentSync inference script. It takes your IMAGE frames and writes them to a temporary mp4 at 25 fps, resamples the audio to 16 kHz and saves it as a wav, then hands both to the LatentSync pipeline: Whisper (tiny) transcribes the audio, SyncNet supervises the lip-sync, and a UNet regenerates the mouth region guided by a mask. The result is read back into a frame tensor and returned alongside the audio.
The 1.6 update this pack tracks is a resolution story - retrained at 512×512, which killed the mushy teeth and lips 1.5 was notorious for. The node also batch-processes frames sized to your VRAM, and a mid-2025 change moved frames to CPU before conversion so longer videos don't OOM.
Inputs that matter
Only five inputs, and you'll touch three of them:
- images - the video frames (any loader that outputs IMAGE works; the README points at AceNodes, but VHS or anything similar is fine).
- audio - from any ComfyUI audio loader.
- lips_expression (default 1.5, range 1.0–3.0) - this is literally wired to the guidance scale. Higher means more pronounced mouth movement; dial it to 2.0–2.5 for speeches, drop it if lips look exaggerated.
- inference_steps (default 20) - 30–50 for quality, 10–15 for quick previews.
- seed (default 1247) - set it if you want reproducible runs.
It returns images and audio; wire the images into a video saver to get your file. The audio comes back resampled to 16 kHz, so don't be surprised if a downstream audio node sees a different sample rate.
Installing it (the real way)
This is the part that bites. Via Manager, search "ComfyUI-LatentSyncWrapper", or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShmuelRonen/ComfyUI-LatentSyncWrapper.git
cd ComfyUI-LatentSyncWrapper
pip install -r requirements.txt
You also need FFmpeg on your system PATH. Then the fun part: the actual ByteDance/LatentSync-1.6 models live in a gated HuggingFace repo, so nothing auto-downloads. You must manually fetch the ~5GB latentsync_unet.pt, the ~1.6GB stable_syncnet.pt, whisper/tiny.pt, and the Stable Diffusion VAE (diffusion_pytorch_model.safetensors + config.json from sd-vae-ft-mse) into checkpoints/ inside the extension folder, matching the structure the README diagrams. The author also links a pre-configured Google Drive bundle. Budget around 20GB VRAM - an RTX 3090 is the stated floor - though the node will scale down batch size on weaker cards.
And read the upgrade notice before you install: if you had an earlier version, delete the whole folder first. 1.6 cannot be updated over 1.5; a partial upgrade leaves you with conflicts.
Common issues
The two failures people actually hit: model files in the wrong place (the node prints the exact path it expects, so check that message), and the gated-repo download failing mid-way. If the private repo won't give you access, grab the Google Drive bundle instead. Portable ComfyUI users have reported Python-version friction - some moved to Python 3.10 to resolve dependencies cleanly. Quality problems usually trace back to the footage, not the model: a face that turns away, crops at the chin, or heavy motion will blur the mouth even on 1.6. When a result looks off, lowering lips_expression fixes more "uncanny" cases than raising inference_steps ever will. And if the final syllable gets chopped, that's not this node's fault - that's what the pack's Video Length Adjuster is for.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| audio | AUDIO | — | |
| seed | INT | 1247 | — |
| lips_expression | FLOAT | 1.51–3 | — |
| inference_steps | INT | 201–999 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |