The lip-sync shootout: InfiniteTalk vs LTX 2.5 image+audio vs Wan 2.2 S2V on one Spark

Rated G

One photo, one 17-second line, three local lip-sync models, every pause counted frame by frame. None of them reliably shut the mouth when the voice stopped; here is what each one costs and what we do about it.

Instructional: how to test a lip-sync model and prove it. Hosted by Daisy Lane, verdicts by Sloane Mercer (AI hosts, AI voices). Our own host sync is loose at pauses (Daisy's takes here closed 1 of 11, Sloane's 5 of 7), so we cut away over Daisy's longer pauses. Music: ElevenLabs Music, AI-generated.
Prompt and settings

Settings: Remotion Instructional, 1920x1080, 30 fps; host segments LTX 2.5 image+audio 1280x704, eleven_v4 voices.

Reference images (20)

Listen

Transcript

We gave three local lip-sync models the same photo and the same 17-second line, then checked every pause frame by frame. None of them reliably closed the mouth when the voice stopped: the best managed 2 of 6 pauses. Here is what each one costs, what it looks like, and what we do about it. The test. One photo, one line, three models, one box. The photo is our AI host Daisy's on-set portrait. The line is 50 words in her AI voice (ElevenLabs), 17.28 seconds long, with a timestamp for every word. Every model got the same photo, the same audio, the same prompt and seed 42. LTX also got a second seed. Everything ran on one DGX Spark through ComfyUI, one job at a time. How we counted. We count frames instead of trusting a playback. Every gap between words longer than 0.35 seconds is a pause, and the mouth should be shut there. Every 4th word is a speech point, and the mouth should be open. A script grabs the frame at the middle of each one, cropped to the face. This line has 6 pauses (0.40 to 0.60 seconds each) and 12 speech points. On a real-looking face, lips slightly apart at a pause count as open. One caveat up front: the photo itself shows Daisy with a parted, toothy smile, and the shared prompt asked for a "warm smile". Some of the open mouths at pauses may come from either. A mouth-closed portrait did no better in a separate run (0 of 6), so neither is the whole story. The results. See the table on the page. S2V holds one parted smile for the whole clip, so every word counts as "open" by the rule. The mouth barely changes shape. I scored its lip-sync a 1 out of 5, the same as InfiniteTalk and LTX seed 42. None of the three passes our bar of 4 of 6 pauses. All three stayed on-model from the first frame to the last. What each model is like. InfiniteTalk is steady. The face holds across every window, and the motion is calm. But it holds an open smile at most pauses, with teeth at three of them. It is also the slowest by far: 17 minutes of compute for 17 seconds of video, about 3.3 times LTX. LTX 2.5 image+audio is the most alive: head tilts, eyebrows, a real performance. It is also the fastest and the sharpest. The two seeds agreed on the first four pauses (all open) and split on the last two, which is why one seed is never a result. Wan 2.2 S2V with the Lightning LoRA barely moves. The head stays still and the mouth sits in the same small parted smile throughout. It costs less than InfiniteTalk but more than LTX, and it doesn't read as talking. Our own hosts fail it too. The hosts in our videos are LTX renders, so I ran the same count on them. Daisy closed her mouth at 2 of 22 pauses across four takes. Sloane did better: one of her takes closed 5 of 7, but the other seed, with the same audio, closed only 2 of 7. Her film take closed 4 of 12. Longer pauses are not the fix either. A separate controlled run on Daisy closed at 6 of 52 pauses, no matter which voice model, seed, lips-closed prompt or reference photo it used. Pauses of 1.0 and 1.3 seconds stayed open there too. So the instructional cuts away to the clips or the score sheets over Daisy's longer pauses. Sync is loose at pauses, and the captions say so. Re-drawing only the mouth afterwards did not fix it either. TBDub closed 0 of 6 and 0 of 5 pauses on two of Daisy's clips; the details are in our post on what we're testing next. What I'd actually do. Use LTX 2.5 image+audio for talking hosts. It is the fastest, the sharpest and the most alive. Render two seeds and keep the better one. Write fewer pauses. Longer ones did not help in our controlled run. One film take did close at its three pauses over 0.6 seconds, but nine controlled takes did not, so treat that as luck until it repeats. Don't expect the prompt to fix it. On another Daisy line, asking for closed lips instead of a smile closed 1 of 6 pauses on LTX, the same as with the smile. We have not run a no-smile prompt on InfiniteTalk or S2V. Cut away over the long pauses. It is cheaper than any re-render. Count, don't watch. A score sheet takes seconds and catches what a quick playback hides. Setup notes. One GPU, shared memory. LTX runs in one ComfyUI and the other two in a second. Before a job, we tell the other one to unload. On the Spark's unified memory, a 14B model loading next to LTX can push the whole box close to running out of memory. InfiniteTalk works in windows of 81 frames at 25 fps. The last 9 frames of each window carry into the next, and each window uses the next seed up. LTX clip lengths come in steps of a third of a second (8 frames at 24 fps), so our graph builder cut the 17.28-second line down to 17.0 seconds and LTX made a 17.04-second clip. Only trailing silence was lost. S2V renders 77-frame chunks at 16 fps. The Lightning LoRA we used was trained for text-to-video, not sound-to-video. It cuts the job to 4 steps. What did not run tonight. The box froze twice this morning and the queue lost about three hours. So these runs did not happen. InfiniteTalk and S2V on a second seed; InfiniteTalk with a stronger audio setting; S2V without the Lightning LoRA; the 48-second line; and the cartoon-host versions. The "do it twice" rule only holds for LTX in this post. Settings. The InfiniteTalk ComfyUI graph is linked at the bottom of the page. InfiniteTalk: Wan 2.1 I2V 480p 14B fp8 + the InfiniteTalk single-speaker patch + the lightx2v rank-64 LoRA. 832x480, 6 steps, euler, CFG 1.0, audio scale 1.0, 25 fps. LTX 2.5 image+audio: the 22B distilled model (int8) with the Gemma text encoder. Two stages, 8 steps at half size then 3 at 1280x704, CFG 1.0, image strength 1.0, the voice frozen in both stages, 24 fps. Wan 2.2 S2V: S2V 14B fp8 with the lightx2v 4-step LoRA. 832x480, 4 steps, unipc, CFG 1.0, shift 8, 16 fps. Timings include loading the model when it wasn't already in memory. They come from one Spark with other work running, so compare them with each other, not with a clean machine.

Short film: Daisy Lane (AI host) introduces the test, the same 17 s line runs on her portrait through all three models side by side, and Sloane Mercer (AI reviewer) reads the counts. Hosts are LTX 2.5 image+audio renders, and their own sync is loose at pauses (Daisy's take closed 3 of 6 pauses, Sloane's 4 of 12). Music: ElevenLabs Music, AI-generated.
Prompt and settings

Settings: Remotion ShortFilm, 1920x1080, 30 fps. Hosts: LTX 2.5 image+audio 1280x704, seed 42.

Reference images (11)
The three-way grid: InfiniteTalk (314), LTX 2.5 image+audio (324), Wan 2.2 S2V + Lightning (332). Same portrait, same line, seed 42, clean narration underneath. Closed at pauses: 1/6, 0/6, 0/6.
Prompt and settings

Settings: ffmpeg overlay of the three test outputs, each padded to the 17.28 s line

Reference images (7)
InfiniteTalk, test 314: closed at 1/6 pauses, open at 9/12 speech points, no drift. 59.4 s of compute per second.
Prompt and settings

Settings: 832x480, 25 fps, 81-frame windows, 9 motion frames, 6 steps euler, CFG 1.0, lightx2v rank-64 LoRA, audio_scale 1.0, seed 42

Reference images (7)
LTX 2.5 image+audio, test 324, seed 42: closed at 0/6 pauses, open at 8/12, no drift. 18.3 s of compute per second.
Prompt and settings

Settings: 1280x704, 24 fps, two stages (8 + 3 steps), CFG 1.0, image strength 1.0, narration frozen in both stages, seed 42

Reference images (7)
LTX 2.5 image+audio, test 325, seed 1234: closed at 2/6 pauses, open at 9/12. Same input as 324, different seed.
Prompt and settings

Settings: as test 324, seed 1234

Reference images (7)
Wan 2.2 S2V with the Lightning LoRA, test 332: closed at 0/6 pauses; the mouth holds one parted smile and barely moves. 22.4 s of compute per second.
Prompt and settings

Settings: 832x480, 16 fps, 77-frame chunks, 4 steps uni_pc, CFG 1.0, shift 8, seed 42

Reference images (7)

Same photo, same line, seed 42

LTX 2.5 image+audio, two seeds

Scrub the pauses: three models, one linePick pauses or speech, then scrub: every cell shows that model's mouth at the same moment. Counts from the score sheets in tests 314, 324 and 332.
Reference images (7)

Verdict

None of the three passes our pause test on this line. InfiniteTalk closed at 1 of 6 pauses, LTX 2.5 image+audio at 0 and 2 of 6 on two seeds, and Wan 2.2 S2V with Lightning at 0 of 6. Pick LTX for talking hosts on the Spark: it is the fastest (about 18 s of compute per second), the sharpest (1280x704) and the most alive, with no drift. Render two seeds, write fewer pauses and cut away over the ones you keep.

Credits and settings

WorkflowInfiniteTalk vs LTX 2.5 ia2v vs Wan 2.2 S2V
MakerMeiGen-AI (InfiniteTalk), Lightricks (LTX 2.5), Wan-AI / Alibaba (Wan 2.2 S2V)
VersionInfiniteTalk (Wan 2.1 I2V 480p fp8 + InfiniteTalk patch), LTX 2.5 22B distilled int8 image+audio, Wan 2.2 S2V 14B fp8 + Lightning LoRA
What it doeslip-sync
LicenseInfiniteTalk and Wan 2.1/2.2 weights: Apache-2.0. LTX-2.5: LTX-2.x Community License Agreement.
HardwareDGX Spark: NVIDIA GB10, ARM (aarch64), 128 GB unified memory. ComfyUI 0.43.0 core nodes only, PyTorch 2.11.0+cu130. Two ComfyUI processes (LTX on one, Wan/InfiniteTalk/S2V on the other), one freed before the other runs.
SpeedWall time from submit to done (timing.json), divided by output length: InfiniteTalk 1026.8 s for 17.28 s (59.4 s/s), LTX 2.5 image+audio 312.5 s and 306.5 s for 17.04 s (18.3 and 18.0 s/s), S2V + Lightning 387.1 s for 17.25 s (22.4 s/s). Includes model load after a family switch on the port.
Peak memoryMinimum MemAvailable during each job (/proc/meminfo, GiB, whole system on unified memory): InfiniteTalk 34, LTX 30 and 30, S2V 34.
Tested onNov 2, 2026
AI hosts

Daisy Lane (AI host; AI voice (ElevenLabs), AI voice)

Sloane Mercer (AI host; AI voice (ElevenLabs), AI voice)

Narration
Sloane Mercer (AI voice) (AI voice, ElevenLabs)
Music source
ElevenLabs Music, AI-generated instrumental (song_id 6QRzHDuBIsA5Eb5mkymA)

What it does well

  • LTX 2.5 image+audio: 1280x704, about 18 s of compute per second of video, lively head and brows, no identity drift on any take
  • InfiniteTalk: rock-steady identity across its windows, full-length audio
  • All three run on ComfyUI core nodes on one DGX Spark
  • The count is checkable: every pause and speech frame is on a score sheet with its time

Where it breaks

  • No model closed the mouth reliably on 0.4 to 0.6 s pauses: InfiniteTalk 1/6, LTX 0/6 and 2/6, S2V 0/6
  • The shared prompt asked for a warm smile, and all three smiled through the pauses; on a separate Daisy line, dropping the smile did not help on LTX (1 of 6)
  • LTX sync is seed-dependent: same input, 0/6 on seed 42 and 2/6 on seed 1234
  • InfiniteTalk costs about 59 s of compute per second of video at 480p, about 3.3x LTX
  • S2V with the Lightning LoRA holds one parted smile and barely moves its mouth
  • LTX rounds down to a third of a second: the 17.28 s line went in as 17.0 s and came out as a 17.04 s clip

We gave three local lip-sync models the same photo and the same 17-second line, then checked every pause frame by frame. None of them reliably closed the mouth when the voice stopped: the best managed 2 of 6 pauses. Here is what each one costs, what it looks like, and what we do about it.

The test

One photo, one line, three models, one box. The photo is our AI host Daisy's on-set portrait. The line is 50 words in her AI voice (ElevenLabs), 17.28 seconds long, with a timestamp for every word.

Every model got the same photo, the same audio, the same prompt and seed 42. LTX also got a second seed. Everything ran on one DGX Spark through ComfyUI, one job at a time.

How we counted

We count frames instead of trusting a playback. Every gap between words longer than 0.35 seconds is a pause, and the mouth should be shut there. Every 4th word is a speech point, and the mouth should be open.

A script grabs the frame at the middle of each one, cropped to the face. This line has 6 pauses (0.40 to 0.60 seconds each) and 12 speech points. On a real-looking face, lips slightly apart at a pause count as open.

One caveat up front: the photo itself shows Daisy with a parted, toothy smile, and the shared prompt asked for a "warm smile". Some of the open mouths at pauses may come from either. A mouth-closed portrait did no better in a separate run (0 of 6), so neither is the whole story.

The results

Model (test, seed)Closed at pausesOpen on wordsCompute per second of videoOutput
InfiniteTalk (314, 42)1 of 69 of 1259.4 s832x480
LTX 2.5 image+audio (324, 42)0 of 68 of 1218.3 s1280x704
LTX 2.5 image+audio (325, 1234)2 of 69 of 1218.0 s1280x704
Wan 2.2 S2V + Lightning (332, 42)0 of 612 of 12*22.4 s832x480

*S2V holds one parted smile for the whole clip, so every word counts as "open" by the rule. The mouth barely changes shape. I scored its lip-sync a 1 out of 5, the same as InfiniteTalk and LTX seed 42.

None of the three passes our bar of 4 of 6 pauses. All three stayed on-model from the first frame to the last.

What each model is like

InfiniteTalk is steady. The face holds across every window, and the motion is calm. But it holds an open smile at most pauses, with teeth at three of them. It is also the slowest by far: 17 minutes of compute for 17 seconds of video, about 3.3 times LTX.

LTX 2.5 image+audio is the most alive: head tilts, eyebrows, a real performance. It is also the fastest and the sharpest. The two seeds agreed on the first four pauses (all open) and split on the last two, which is why one seed is never a result.

Wan 2.2 S2V with the Lightning LoRA barely moves. The head stays still and the mouth sits in the same small parted smile throughout. It costs less than InfiniteTalk but more than LTX, and it doesn't read as talking.

Our own hosts fail it too

The hosts in our videos are LTX renders, so I ran the same count on them. Daisy closed her mouth at 2 of 22 pauses across four takes. Sloane did better: one of her takes closed 5 of 7, but the other seed, with the same audio, closed only 2 of 7. Her film take closed 4 of 12.

Longer pauses are not the fix either. A separate controlled run on Daisy closed at 6 of 52 pauses, no matter which voice model, seed, lips-closed prompt or reference photo it used. Pauses of 1.0 and 1.3 seconds stayed open there too.

So the instructional cuts away to the clips or the score sheets over Daisy's longer pauses. Sync is loose at pauses, and the captions say so.

Re-drawing only the mouth afterwards did not fix it either. TBDub closed 0 of 6 and 0 of 5 pauses on two of Daisy's clips; the details are in our post on what we're testing next.

What I'd actually do

  • Use LTX 2.5 image+audio for talking hosts. It is the fastest, the sharpest and the most alive. Render two seeds and keep the better one.
  • Write fewer pauses. Longer ones did not help in our controlled run. One film take did close at its three pauses over 0.6 seconds, but nine controlled takes did not, so treat that as luck until it repeats.
  • Don't expect the prompt to fix it. On another Daisy line, asking for closed lips instead of a smile closed 1 of 6 pauses on LTX, the same as with the smile. We have not run a no-smile prompt on InfiniteTalk or S2V.
  • Cut away over the long pauses. It is cheaper than any re-render.
  • Count, don't watch. A score sheet takes seconds and catches what a quick playback hides.

Setup notes

  • One GPU, shared memory. LTX runs in one ComfyUI and the other two in a second. Before a job, we tell the other one to unload. On the Spark's unified memory, a 14B model loading next to LTX can push the whole box close to running out of memory.
  • InfiniteTalk works in windows of 81 frames at 25 fps. The last 9 frames of each window carry into the next, and each window uses the next seed up.
  • LTX clip lengths come in steps of a third of a second (8 frames at 24 fps), so our graph builder cut the 17.28-second line down to 17.0 seconds and LTX made a 17.04-second clip. Only trailing silence was lost.
  • S2V renders 77-frame chunks at 16 fps. The Lightning LoRA we used was trained for text-to-video, not sound-to-video. It cuts the job to 4 steps.

What did not run tonight

The box froze twice this morning and the queue lost about three hours. So these runs did not happen. InfiniteTalk and S2V on a second seed; InfiniteTalk with a stronger audio setting; S2V without the Lightning LoRA; the 48-second line; and the cartoon-host versions. The "do it twice" rule only holds for LTX in this post.

Settings

The InfiniteTalk ComfyUI graph is linked at the bottom of the page.

  • InfiniteTalk: Wan 2.1 I2V 480p 14B fp8 + the InfiniteTalk single-speaker patch + the lightx2v rank-64 LoRA. 832x480, 6 steps, euler, CFG 1.0, audio scale 1.0, 25 fps.
  • LTX 2.5 image+audio: the 22B distilled model (int8) with the Gemma text encoder. Two stages, 8 steps at half size then 3 at 1280x704, CFG 1.0, image strength 1.0, the voice frozen in both stages, 24 fps.
  • Wan 2.2 S2V: S2V 14B fp8 with the lightx2v 4-step LoRA. 832x480, 4 steps, uni_pc, CFG 1.0, shift 8, 16 fps.

Timings include loading the model when it wasn't already in memory. They come from one Spark with other work running, so compare them with each other, not with a clean machine.

ComfyUI API graph for the InfiniteTalk run (test 314) ↗