Geeky LatentSync 1.5 (Optimized)
Geeky LatentSync 1.5 (Optimized) does real lip-sync, if you can survive the setup
- images
- audio
- images
- audio
This is the node that makes a still photo or a clip of a face speak. Feed it frames plus an audio track and Geeky LatentSync 1.5 (Optimized) returns the same face reanimated to match the words - mouth shapes, timing, the works. It's the main event of the GeekyGhost wrapper pack: an unofficial, optimized fork of ByteDance's LatentSync 1.5 talking-head model, tuned to be faster and less OOM-happy than the other ComfyUI wrappers.
Let's be straight about where this sits in 2026. LatentSync was the mid-2025 answer to lip-sync, and the community liked it while it lasted - but the noise around talking heads has moved on to Wan S2V, InfiniteTalk, and LTX-2's native synchronized audio, and you'll find people calling LatentSync-in-ComfyUI "a pain in the ass" for the setup it demands. So reach for this node if you already know LatentSync is the output you want (it genuinely produces some of the most natural mouth motion), or if you want the most performance-tuned version of it. If you're starting from zero, know the install is the hard part, not the node.
How it works
LatentSync 1.5 is a latent diffusion model for talking-head reenactment. It conditions a UNet on audio features extracted by a tiny Whisper model, while a SyncNet discriminator watches the output and enforces lip-sync accuracy, and temporal layers keep the motion consistent across frames. The Geeky fork wraps that pipeline as a ComfyUI node: it writes your frames to a temporary video at 25 fps, resamples the audio to 16 kHz, calls its bundled inference script, then reads the result back into an image tensor. Hand it a single image and it quietly duplicates the frame to match the audio length - no manual frame-faking needed.
The node is also doing real work behind the scenes: three VRAM profiles that cap how much GPU memory it's allowed to grab, automatic mixed-precision on the higher profiles, temp-directory isolation so it can coexist with ShmuelRonen's original wrapper, and a model cache so the ~5 GB checkpoint doesn't reload every run.
The inputs that matter
- images (
IMAGE) - a single image, video frames, or a batch. Faces should be clear, frontal, and visible the whole time. Anime/cartoon faces don't work. - audio (
AUDIO) - grab this from a VHS Load Audio node. - lips_expression (
FLOAT, default 1.5, range 1–3) - this one is the model's guidance scale under a friendlier name (the code wires it straight in). Higher values like 2.0–2.5 give more pronounced, expressive lip movement for speeches; lower values stay calm and subtle. - inference_steps (
INT, default 20) - quality versus speed, the usual diffusion trade. 10–15 for previews, 30+ if you're patient. - vram_usage (
high/medium/low, defaultmedium) - high grabs 95% of VRAM and flips on mixed precision, low is the 75% safety profile. Start medium. - seed (
INT, default 1247) - set it for reproducible results.
It returns images (the reanimated frames) and audio (the resampled track) - wire both into a VHS Video Combine to get your mp4 out.
Installing it
You need FFmpeg on your system PATH first, then:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/ComfyUI-Geeky-LatentSyncWrapper.git
cd ComfyUI-Geeky-LatentSyncWrapper
pip install -r requirements.txt
Restart ComfyUI and refresh the browser. ComfyUI Manager can do the clone for you if you search the pack title. On first run the node downloads the LatentSync UNet (~5 GB) and the Whisper checkpoint (~1.6 GB) automatically into geeky_checkpoints/ inside the pack - give it a while.
Where people get burned
The README's own first line is (Out Dated) and that's the whole story: the mediapipe dependency doesn't play nice with current ComfyUI. On the portable build you'll likely need to drop back to Python 3.10 and remove xformers, which is a real project on Windows. The other classics: OOM (drop vram_usage to low), the harmless "Geeky model checkpoints already exist" startup message, missing FFmpeg, and seeing the node the first time only after a full restart. The payoff for all that is a faster, stabler LatentSync than the wrapper it forked - just budget an evening for setup before your first good clip.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| audio | AUDIO | — | |
| seed | INT | 1247 | — |
| lips_expression | FLOAT | 1.51–3 | — |
| inference_steps | INT | 201–999 | — |
| vram_usage | COMBO | medium | 3 options: high, medium, low |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |