Download
1 variant available

310 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9
770 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9

License:
LTXV2Two-shot talking-character video on LTX-2.3 — shot 2 is a TRUE audio+video extension of shot 1, not a cut. The last ~3 seconds of shot 1's video and audio become latent context, so the model generates forward from an ongoing utterance: the voice carries over by construction, identity holds, and the join is a continuous take. The character speaks in a reference voice you supply.
Core ComfyUI nodes plus one node from ComfyUI-KJNodes (LTXVAudioVideoMask), which powers the extension.
A word on expectations. This is a bleeding-edge pipeline — a 22B audio+video model on consumer hardware. It works, but your first clean render will likely take some tuning to YOUR machine. Every setting that matters is documented in note blocks inside the workflow, so the guidance travels with the graph. If you get stuck, comment here or open a GitHub issue — I answer.
Quick fixes — read this first
Nearly every problem reported with this workflow is one of these.
Second shot doesn't lip-sync — voiceover over a barely-moving face
Why: You are on v1.x, which chained shots on shot 1's decoded last frame. That guide is pixel-continuable, so the sampler copies it instead of animating. Structural — no setting fixes it.
Fix: Update to v2.0+. Shot 2 is now a true audio+video latent extension.LTXVAudioVideoMasknode is missing (red)
Why: v2 uses one node from ComfyUI-KJNodes for the extension.
Fix: Install ComfyUI-KJNodes. Everything else is core ComfyUI.Burned-in subtitles or captions appear
Why: The graph ships at cfg 1, and at cfg 1 negative prompts are inert on distilled models — your negative is doing nothing.
Fix: Raise cfg to about 1.3 on both CFGGuider nodes.The voice comes out British
Why: LTX drifts to a British accent unless told otherwise.
Fix: Name it affirmatively in the positive prompt: “in a casual American accent”.The model reads your scene description aloud
Why: Nothing told it which words are spoken.
Fix: Keep the exclusivity block: “She is the only person speaking, and the only voice on the audio track is hers … nothing else is read aloud.”Audio and video durations drift apart after changing length
Why: In v1 the audio latent did not follow thelengthprimitive — a silent desync.
Fix: Fixed in v2. Changelength, then set the AV-extend node'svideo_end_time/audio_end_timeto(length + 72) / 25. At the shipped 241 that is 12.52; for ~20 s use length 265 and 13.48.Length change errors out
Why: LTX-2.3 hard constraints.
Fix: Frames must be 8n+1 (121, 241, 265, 329…) and both dimensions divisible by 32.Output is mush, or the face wanders
Why: Wrong checkpoint class.
Fix: This graph's 8-step sigma ladder assumes a distilled LTX-2.x checkpoint. A non-distilled one will not resolve in 8 steps.Out of VRAM, or renders crawl
Why: A bf16 LTX-2.3 checkpoint is ~40 GB of weights.
Fix: Pick an fp8 checkpoint inUNETLoader, and drop resolution before you drop steps.
The one people miss most: cfg 1 makes your negative prompt do nothing. If you are fighting burned-in text, that is why.
What you get
SETUP -> SHOT 1 -> [last ~3s of video AND audio as latent context]
-> SHOT 2 (extends it) -> FINISH (join + refine) -> FINALWhat you need
A distilled LTX-2.x checkpoint
The LTX-2.3 VAEs and a Gemma-3-12B text encoder
The TalkVid ID-LoRA for reference-voice mode
Two settings worth knowing
cfg ships at 1, which makes negative prompts inert. Raise to ~1.3 if you need one.
length drives everything except the AV-extend end times, which are
(length + 72) / 25. At 241 that is 12.52; for ~20 s use 265 and 13.48.
Everything else I've published
JoyAI-Echo multishot patch — nodes, releases, issues
LTX-2.3 Multishot Lite — the core-node workflow
Support this work
Everything I publish — workflows, merges, quants, patches — is free and stays free. The models are non-commercial by license and I have no plans to change that.
If something here saved you an evening:
GitHub Sponsors — recurring, no platform cut
Ko-fi — one-off, no account needed
Liberapay — recurring, open-source and non-profit
Bug reports are worth as much as money. Most of the fixes in these packages exist because somebody posted a log.