Nodes/ComfyUI-GGUF-Loader/LTX-2.3 Img/Audio to Video ⚡
ComfyUI Node

LTX-2.3 Img/Audio to Video ⚡

T2V, I2V, A2V or all four — one prep node for LTX-2.3

By ChrisColeTech·Created about a month ago·Updated 4 days ago· 10
LTX-2.3 Img/Audio to Video ⚡
  • clip
  • vae
  • audio_vae
  • image
  • reference_audio
  • positive
  • negative
  • latent
prompt
negative_prompt
width768
height512
length121
frame_rate24.00
batch_size1
image_strength0.70
length_from_audiotrue

LTX-2.3's big trick is that one model does text-to-video, image-to-video, audio-to-video, and the combination - all from the same joint audio-video machinery. LTX-2.3 Img/Audio to Video is the prep node that picks which of those you're doing: it encodes your prompt, builds the latent, attaches a first frame and/or a reference audio clip, and stamps the noise masks that tell the sampler what to keep. Outputs positive, negative and latent, ready for the pack's LTXV23KSampler.

Which mode you're in

The mode is decided entirely by which inputs you connect - there's no mode dropdown:

  • Text-to-video: leave both image and reference_audio unconnected.
  • Image-to-video: connect image - the first frame, resized and center-cropped to width × height right here, so don't pre-scale it upstream. image_strength (default 0.7, the official value) controls how much of the init image to keep; 1.0 locks the first frames hard.
  • Audio-to-video (lip-sync): connect reference_audio - the voice clip. The audio is encoded and the video length derives from the clip when length_from_audio (default on) is set.
  • Image + audio: connect both. This is the official IA2V recipe - a face photo plus a reference voice becomes a lip-synced clip, which is the whole talking-head pipeline.

The inputs that matter

  • clip - from the loader's clip output. vae is the loader's video VAE, audio_vae its audio VAE - the tooltips on both say so, and the loader names them so you can't mix them up.
  • prompt - "describe the scene and its motion. A caption, not an instruction" - LTX wants a description, not a command.
  • width (768) / height (512) / length (121, in frames) - the default 121 is an 8k+1 tile (9, 97, 121...), and length is ignored when length_from_audio is on.
  • frame_rate - 24, the LTX-2 convention. Match it in the decode/save step or playback drifts.

Outputs: positive, negative, latent - into LTXV23KSampler.

Why this shape

In the stock core LTX path you assemble these pieces from several nodes; this pack's LTX-2.3 fork collapses prep into one node so the default graph stays short - loader → this → sampler → decode. The audio-encoding and noise-mask-locking that make IA2V work (audio encoded, video length from the clip) is the kind of thing that's easy to get subtly wrong by hand and reliable when the node owns it. It's a caption-to-video workflow in its most compressed form: type a line, drop a photo and a voice, sample, watch.

Installing it

Same pack:

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install --upgrade gguf

Restart; under 🤖 CCTech/LTX-2.3. No extra dependencies - it builds on ComfyUI's native LTX-AV machinery.

Gotchas

The two that actually bite: pre-scaling the image to a different aspect ratio than width/height (the node center-crops anyway, so scale upstream and you lose framing you thought you'd set), and forgetting to match frame_rate at the decode end - LTX clips drift audibly when the playback convention disagrees with the stamped rate. And if you connect reference_audio, length stops mattering; size the clip by editing the audio, not the frame count.

Category🤖 CCTech/LTX-2.3

Inputs (14)

NameTypeDefaultDescription
clipCLIP
vaeVAEThe loader's video_vae output.
audio_vaeVAEThe loader's audio_vae output.
promptSTRINGDescribe the scene and its motion. A caption, not an instruction.
negative_promptSTRING
widthINT76864–16384
heightINT51264–16384
lengthINT1219–16384Frames; 8k+1 tiles exactly (9, 97, 121...). Ignored when length_from_audio is on.
frame_rateFLOAT24.001–12024 is the LTX-2 convention. Match this in CreateVideo or playback drifts.
batch_sizeINT11–4096
imageoptIMAGEFirst frame. Resized and CENTER-CROPPED to width x height here - do not scale it upstream.
reference_audiooptAUDIO
image_strengthoptFLOAT0.700–1i2v only. How much of the init image to keep. 0.7 is the official value; 1.0 locks the first frames hard.
length_from_audiooptBOOLEANtrueWith reference_audio: size the video to the clip.

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT