JoyAI-Echo's video branch married to LTX-2.3-distilled-1.1's audio branch. Echo brings the cross-shot identity behaviour and the audio memory bank; the LTX audio and cross-modal branches are kept stock, so the TalkVid ID-LoRA still adapts the pathway it was trained against.
This is the model the JoyAI-Echo multishot pack is built around: one recurring character across completely different locations, same face, same voice, audio generated with the picture rather than dubbed.
Which of my two merges do you want?
This one for multishot work through the node pack — generated-voice sequences, the memory bank, the pack's slower and more deliberate delivery. At that pacing it scores 9.5+ on sync and is not outclassed by anything else I publish.
The e50 build if you are driving a character from a supplied voice clip at conversational speed. That is a narrower case, and it is the only case where this merge measurably under-performs.
What was merged
Video / conditioning branch — JoyAI-Echo, which is what holds one identity across shots and drives the memory bank
Audio branch and cross-modal attention — stock LTX-2.3-distilled-1.1, untouched, so the TalkVid ID-LoRA behaves normally
Full checkpoints: DiT, video VAE, audio VAE, vocoder and the four
text_embedding_projectiontensors are all inside. No companion downloads.
Files
ltx23_echoVid-ltxAud_surgical_bf16.safetensors— 43 GB, reference precision. Pair withfp8_scaled_mmON.ltx23_echoVid-ltxAud_surgical_fp8.safetensors— 23.4 GB. For stock ComfyUI, or the pack with the toggles off.ltx23_echoVid-ltxAud_surgical_talkinghead_bf16 / _fp8— the base merge with the c72 video-only distill LoRA baked in at 0.5. An earlier route to the articulation fix; see below.Quantized builds (Q8_0 / Q5_0 / Q4_0 GGUF, INT8 ConvRot) are in the sibling repos on Hugging Face.
Speed: turn on fp8_scaled_mm
If your renders crawl in the JoyAI-Echo pack, this is almost always why. It is off by default. It stores the DiT linears as float8_e4m3fn and computes the matmuls natively via torch._scaled_mm on RTX 40/50-series — unlike fp8_transformer there is no per-layer upcast tax.
bf16 + toggle ON — linears downcast at load, native fp8 compute: ~22 GB resident,
sequential_offloadcan go OFFINT8 ConvRot + toggle ON — reconstructs to bf16, then downcasts: identical to bf16, at ~60% of the download
bf16 or INT8, toggle off — runs bf16: ~40 GB staged, streams over PCIe on a 32 GB card
fp8 file, toggle off — upcasts to bf16 at load: saves download size only
fp8 file + toggle ON — hard error. The toggle must start from bf16
Short version: feed it bf16 or INT8 and turn the toggle on. The fp8 file is for running without the toggles.
The TALKINGHEAD variants
These are the base merge with the c72 video-only distilled LoRA baked in at 0.5 — weight-equivalence verified per module against fp32 compute. Measured across two independent seed draws: shot-start articulation 4.8 → 6.9–7.5 (stock distilled-1.1 = 9.3) with envelope timing preserved at 0.23–0.27 against a 0.25 no-LoRA baseline. Face untouched.
They and the e50 build attack the same deficit by different routes and have not been benchmarked head-to-head at equal settings. e50 is the newer one and the one in current use here. If you already have a tuned TALKINGHEAD setup, there is no measured reason to switch.
Known behaviour worth reading before you render
At conversational speech rates with reference audio, mouths under-articulate
Why: JoyAI-Echo is a dev-lineage finetune, so on the 8-step distilled sigma ladder its video stack is under-distilled. Mouth-region motion measures 4.8–5.2 against stock's 9.3 on the same seed, prompt and settings.
Fix: use the e50 build, the TALKINGHEAD build, or the c72 LoRA at 0.5. At the pack's own slower pacing this does not surface — sync is already 9.5+.Occasional robotic voice on long runs
Why: it happens, rarely, and Echo's own finetune is what suppresses it.
Fix: this merge keeps Echo's finetune in full, so it is the safest of the family here. e50 keeps half of it.Lip sync breaks about 9.6 s into every shot
Why: not the weights. The pack's video RoPE clock was hardcoded to 24 fps while audio runs in true seconds, so a 25 fps render drifts ~4%/s.
Fix: apply the multishot patch (Bug fix #0). With it, 60–105 s multishot masters hold sync.Chaining shots on the previous shot's last frame does not lip-sync
Why: that guide is pixel-continuable, so the sampler reproduces it instead of animating. True on any checkpoint.
Fix: extend with real audio+video latent context — see Multishot Lite v2.
Sampling
1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.08-step distilled ladder, cfg 1, euler. Note cfg 1 makes negative prompts inert — raise to ~1.3 if you need one, for example to suppress burned-in subtitles.
Requirements
The LTX-2.3 VAEs are bundled. You still need a Gemma-3-12B text encoder, and the TalkVid ID-LoRA for reference-voice mode. For multishot, the JoyAI-Echo node pack with the patch applied.
License
LTX-2 Community License, inherited. Non-commercial: LTX-2 itself permits commercial use below $10M ARR, but the JoyAI-Echo weights this is merged from are non-commercial, so the merge is too.
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.
Description
Two files. fp8 (23.4 GB) fits a 24 GB card and is the practical choice for most people. bf16 (43 GB) is full precision, for anyone with the VRAM or the patience for offload. Both are complete checkpoints: DiT, video VAE, audio VAE, vocoder and text connectors, so either loads as a single model file. Needs the multishot memory path to show the identity benefit.
FAQ
Comments (17)
Thank you for this new merge. Could you give some example to help us knowing how to use it?
You will need to use a JoyAI or Rebels workflow for JoyAI-Echo, or use my custom workflow which includes several custom nodes:
JoyAI-Echo Multishot Workflow - one character, many shots, same face + voice - v1.1 | LTX Video Workflows | Civitai
Can you please share the workflow? I don't get how to wire both the video vae and audio vae to the same checkpoint loader without loading it twice from two different folders
I am using a custom workflow, found here, there are detailed instructions as well:
JoyAI-Echo Multishot Workflow - one character, many shots, same face + voice - v1.1 | LTX Video Workflows | Civitai
like others said, pls share a workflow, this is beyond the average ltx 2.3 workflows out there so it would be really useful to see how you make it work.
This is the custom workflow I am using:
JoyAI-Echo Multishot Workflow - one character, many shots, same face + voice - v1.1 | LTX Video Workflows | Civitai
@joeygambino thanks i'll check it out!
I have tested T2V. The results are SO DAAAM GOOD! I used a LTX director wf that comfyui provided. CFG 1, euler cfg pp, 6step,ceil72condasafe lora. 12s video in 200s.
Here are some result:
# 0.Even if you don't need to refer to the video, you still need to load the MSRv2 Lora
# 1.Other distilled lora is not as effective as condasafe
##*DMDr245: AI face
##*DMDfro99: AI face
##* DMDv2: Insufficient rendering
##* PinkCherry1·5fro99: AI sense, background change
##·10erosfro99: AI sense, face collapse
# 2.High CFG coverage will cause artifacts
# 3.The basic dispatcher will flash the screen
# 4.Refocus ic-lora will make the picture ugly
#5.20 Steps will not bring more benefits
# 6.JoyAIcontent will not bring more benefits
# 7.euler, euler ancestral do not follow the prompts and makes the picture ugly
Thank you for your researches. What version of distill cond lora is best for your opinion? and what sampler is best for Director?
Very nice! Could this work with a reference image?
Absolutely, that was my entire reasoning behind creating these. Workflow here:
JoyAI-Echo Multishot Workflow - one character, many shots, same face + voice - v1.2 | LTX Video Workflows | Civitai
So we have character consistency. But we need locations to be consistent too. Is it possible ?
Yes — it's the same mechanism, not a separate feature. The cross-shot memory bank doesn't know what a "character" is; it stores a frame from the previous shot, so it carries whatever's in the picture. The demo changes rooms every shot because the prompts tell it to.
To hold a location: repeat a byte-identical location sentence in every shot, exactly like the identity sentence — same words, same order, no rewording. You can also wire a reference image of the room, which pre-seeds the memory bank visually instead of relying on text alone.
Fair warning: a room has far more degrees of freedom than a face. Expect furniture, clutter and wall detail to wander more than a face does, especially if you change camera angle between shots. Same location from a similar angle will hold much better than the same location from across the room.
What lora do i need to get this to do t2v nsfw?
I haven't tested NSFW with it myself, but there is no reason you couldn't use any LTX 2.3 lora with it.
Latest 1.3.1 upload includes a complete INSTRUCTIONS.md file plus some other bug fixes and small features. Simple I2V + Multi-LoRA will be included in version 1.4, possibly later today.
This workflow is an ongoing work in progress.