DEV Community

Cover image for [Day 15] A cat photo became a video — with a meow. Two local video AIs compared: 30s vs 475s
PEPPERCORN
PEPPERCORN

Posted on

[Day 15] A cat photo became a video — with a meow. Two local video AIs compared: 30s vs 475s

Intro

Day 15!

Today's experiment: turn one photo of my family's cat into a video that moves — and meows.

An image-to-video AI takes a single photo and imagines how the scene continues. I ran two of them and compared the results.

What I used: DGX Spark (my home AI machine) / two local video AIs (LTX-2.3 and Wan 2.2) / one photo of my family's cat.


Today's experiment

What I wanted to find out

Give both AIs the same cat photo and the same request — "look at the camera and meow once, about 4–5 seconds" — and compare them.

The two models

  • Wan 2.2: a well-established favorite for local video. Video only, no audio
  • LTX-2.3: a newer model (March 2026) that generates video and audio together in one pass
  • Same photo, same kind of prompt. Measured: generation time / memory / quality / sound

The goal

Decide which one to use when — with actual numbers from my own machine, not vibes.


The result first: 30 seconds vs 475 seconds

For a ~4–5 second video, LTX-2.3 took 30 seconds. Wan 2.2 took 475 seconds. Roughly a 16x gap.

Generation time for one cat photo to a 4-5s video: Wan 2.2 standard 475s, with speed LoRA 70s, LTX-2.3 30s with audio

What's a "step"? The number of refinement passes the AI makes while drawing the video. More steps = more careful but slower.

Time wasn't the only difference, though. Here is each result in turn.


Wan 2.2 — nearly photoreal, but 8 minutes per video

Wan 2.2 result: the cat opens its mouth and meows, nearly photoreal

Wan 2.2's output (475s, silent).

The fur, markings, and face are almost indistinguishable from the real photo, and it meows exactly as asked. But one video takes 475 seconds (~8 minutes), with no sound (by design).

A speed-up add-on cut it to 70 seconds, at the cost of tamer motion — more of a tongue flick than a proper meow.


LTX-2.3 — 30 seconds, and it came with a meow

Here is LTX-2.3's output, sound included (volume on 🔊):

Done in 30 seconds — and along with the video, it generated an audio track with actual meows. I asked for one meow; it enthusiastically gave two, short cat-like "myah" sounds roughly in sync with the mouth. (And it sounds startlingly like my family cat's real meow.)

Image quality looks about the same as Wan's on screen. The difference is in the motion: Wan moved more, and more realistically; LTX was a bit more subdued.

One frame from each video generated from the same photo: Wan 2.2 on the left, LTX-2.3 on the right


Bonus: give it the first and last frame, and you can design the camera work

LTX-2.3 can take a first frame and a last frame, and fill in everything between.

I gave it the wide shot as the first frame, and a face close-up (a crop of the same photo) as the last.

First frame: wide shot. Last frame: face close-up. The model filled in a zoom with a meow in the middle

The generated video zooms from wide shot to close-up with a meow along the way

Generated in 35 seconds.

The video starts wide, meows while zooming in, and ends on the close-up I specified.


The numbers

Time Peak memory Audio Quality impression
Wan 2.2 (standard) 475s ~49GB none near-photoreal, faithful motion
Wan 2.2 + speed LoRA 70s ~46GB none clean but tamer motion
LTX-2.3 30s ~57GB yes on par with Wan; tamer motion
LTX-2.3 (designed zoom) 35s yes same as above

Resolutions and frame counts follow each model's recommended settings, so this isn't a strictly identical-conditions benchmark (details below).


Today's takeaways

  • Distinct characters: Wan for faithful motion, LTX for speed and sound. Not "which is better" but "which for what"
  • Specifying the first and last frame let me design the camera work
  • The time gap is really a retry-count gap: at 30 seconds, "one more try" is easy

The details

Environment and models

  • Machine: DGX Spark (128GB unified memory)
  • ComfyUI v0.24.0 (native LTX-2.3 support) + Lightricks' official custom nodes
  • Both models in their fp8 (weight-reduced) versions; ~91GB of downloads total
    • Wan 2.2 I2V-A14B (high-noise/low-noise pair, 14GB each) + its text encoder
    • LTX-2.3 22B distilled (28GB) + Gemma 3 12B as its text encoder (13GB)
  • The speed add-on for Wan is the lightx2v 4-step LoRA
  • Attention backend unified on PyTorch SDPA for both models
  • Runs were headless ComfyUI (API calls) driven by a small runner script that logs time and memory for every run

Comparison-condition fine print

  • Wan 2.2: 480×640, 81 frames, 16fps (~5.1s), 20 steps
  • LTX-2.3: 512×768, 97 frames, 24fps (~4.0s), 8 steps
  • Each model ran its official template's representative settings, so resolution/frames/steps differ — it's a comparison of each model's everyday settings
  • Per-step time: ~23s for Wan, ~2.6s for LTX

The one gotcha I hit (LTX)

My hand-built workflow crashed inside an LTX helper node (LTXVCropGuides).

  • Cause: with audio+video generation, the latent is a special combined tensor (a NestedTensor), and this node calls an operation it doesn't support
  • Fix #1: for plain image-to-video, the node isn't needed at all — removing it solved the crash
  • Fix #2: for the first/last-frame trick the node is required, so I moved it to run after the audio/video split, where the tensor is ordinary again
  • The known audio-VAE NaN bug I had braced for never appeared

License notes

  • Wan 2.2: Apache 2.0. Commercial use OK, generated content is yours
  • LTX-2.3: LTX-2 Community License. Free commercial use under $10M annual revenue. Disclosing that content is AI-generated is mandatory. Also has an unusual remote-access restriction clause
  • Gemma 3 (LTX's text encoder): Gemma Terms of Use. Commercial use OK, outputs belong to the user, subject to the prohibited-use policy

Sources


Outro

One photo, and 30 seconds later my family's cat was meowing on screen. See you next time!
Thanks for reading!

100ExperimentsWithDGX #LocalLLM

Top comments (0)