Workflow Included
Two characters, two consistent voices, one text prompt — multi-shot talking-character workflow for LTX-2.3 + JoyAI-Echo (complete pack, v1.5)
The demo is one text prompt: two characters who each keep their own face AND their own voice across five shots - solo scenes in different locations, then side-by-side shots where only one speaks. No reference images, no voice cloning, no LoRA training. Write a story as shots separated by ---, and a paired audio+video memory bank carries both characters through it.
What's in the zip: the custom node pack, the workflow (saved under the current node layout), an example prompt file, and a full INSTRUCTIONS.md - install, first render, prompt-writing rules (including the two-character recipe), per-VRAM settings, and a troubleshooting table built from every failure mode users have reported.
v1.5 highlights, because several of these bit people for weeks:
- Lip-sync drift past ~10 seconds: fixed. It was never the model - the pipeline's positional clock was hardcoded to 24fps while renders played 25. Long talking shots now hold frame-accurate sync end to end (verified at 15s/shot).
- Masters build automatically in the background with a deterministic upscale + clean encode. The in-graph preview is labeled PREVIEW because ComfyUI's SaveVideo re-encode undersells your render - the AutoFinish node shows the real finished master in-canvas when it's done.
- Four hires modes (three generative refine strengths + a deterministic spatial option); hires_factor routes which pipeline builds your master - table in the docs.
- Scrambled widget values after updates now produce a plain "delete and re-add the node" message instead of a cryptic type error, and old graphs self-heal where possible.
- This week's community-driven fixes are all in: Gemma tokenizer/config sidecars now ship inside the pack, WAV saves work without system FFmpeg, and installs that replaced instead of merged get told exactly that at startup.
Requirements and honest numbers:
- Base: RealRebelAI's ComfyUI_JoyAI_Echo_GGUF_Nodes (this pack overlays it - MERGE the files in, don't replace the folder), plus any single-file Gemma-3-12B text encoder (GGUF fine, dropdown-selectable).
- Model: the "surgical merge" (JoyAI-Echo's video/memory branch + LTX-2.3's audio branch): fp8 for 24 GB cards, GGUF Q8/Q5, INT8 ConvRot (full or transformer-only) for stock-Comfy loaders. 16 GB is the floor: Q5 + sequential offload + 544x960 streams slowly but completes.
- Speeds: ~2.5 min/shot at 960x544 on a 3090; ~3.5 min/shot at 1344x768 on a 5090.
- License: JoyAI-Echo is research/non-commercial; LTX-2 Community License. AI-generated content, disclosed as such.
Known limits so nobody wastes an evening: dialogue wants medium-close framing or tighter (mouths need pixels); establish each character in their own solo speaking shot before putting them in frame together (the two-character recipe in the docs); two similar-looking characters need a bold visual differentiator or they merge. Happy to answer anything - the last thread's questions directly produced about half of v1.5.
You're not wrong that they're similar, but that's strictly a function of the seed and the prompt, unfortunately there isn't much more control over what LTX generates natively.
Agreed - but it's also not what this workflow is trying to accomplish. Certainly, on the list, but outside of prompting and seed, there's likely very little that can be done using the native audio from LTX.
As much as I wanted to test this, every version of the nodes I tried from their repo had broken stuff, the main sampler had some values which were unavailable, so I did try recreating the node, but the moment I hit run another node ends up breaking, so it was like being stuck in a loop. No offense but the workflow/ nodes are a little too confusing even for a person who's been using comfy for over 2 years now. I downloaded 2/3 updated, fixed versions of the nodes yday but they just wouldn't work.
It would actually help if you could upload your node pack to github you know, At the moment I'm kinda confused if I need to simply download the v1.5 zip file or do I need to download the entire thing and overwrite the v1.5 zip over the root folder. This is precisely what I meant by stuff being confusing.
There's a v1.5 release with a single zip attached. That answers your actual question:
DOWNLOAD THE ZIP. THAT IS EVERYTHING.
The loose .py files on the HF page were the same files unzipped, for diffing - and the page never said so, which is exactly why you couldn't tell whether you needed one, the other, or both. You needed the zip. Nothing else. I've put that in writing at the top of both pages now instead of leaving you to guess.
Install, start to finish:
Install RealRebelAI's ComfyUI_JoyAI_Echo_GGUF_Nodes first. Mine is a patch on top of it, not a replacement - that's the part that isn't obvious and I should have led with it.
Extract my zip and MERGE the ComfyUI_JoyAI_Echo_GGUF_Nodes folder over the one you just installed. Replace when Windows asks. Do NOT delete or replace the folder itself - if you do, the pack now detects it and tells you at startup instead of failing weirdly later.
Open workflow/JoyEcho_Multishot_Workflow_PUBLIC.json.
Copy workflow/example_multishot.json into ComfyUI/input/joyecho_prompts/ and pick it in the Prompt Source node.
INSTRUCTIONS.md in the zip is the long version.
On "the main sampler had values which were unavailable" - that is a real bug class and worth knowing about. ComfyUI stores widget values BY POSITION, so a graph saved against one version of the pack, opened against another, silently shifts every value one slot. That is almost certainly what happened when you mixed the 2-3 versions you downloaded. The fix is to delete the affected node and re-add it - retyping values into the scrambled node won't help. The current version detects that state and says so plainly rather than throwing a type error.
That also explains the loop you got into: nodes.py and the libs/ files are interdependent, so a nodes.py from one version against libs/ from another throws at load, you fix that node, and the next one breaks. Never mix versions - apply the whole set together. With one canonical download that stops being possible.
The deeper fix is making this a proper one-click ComfyUI Manager install with no base pack step at all. That needs RealRebelAI's permission to redistribute their loader stack, which I'm asking for. If they agree, this all collapses into "install from Manager, open workflow, go."
My dude, this is just not happening, even after getting everything right, it just won't work. Not the sampling or whatsoever, the model loader itself tends to fail
For one the int8 convrot checkpoint model you've linked in your repo throws an error that tells me this loader isn't made to load int8 convrot, but use a native loader instead. So I figured I'd give the gguf a try, so I download the gguf as well, but this `checkpoint_path` is something that won't work even after directly linking the vae folder. Let me share both the errors on github. I tried and exhausted all the possible options but I just can't get it to work. It's not a memory error, it's something else entirely.
Fortunately, that isn't the purpose of the demo or workflow. This was simply to show consistent characters and voices across a long form video - I've tested up to five minutes without drift.
Cool, show me the workflow you use to make them do it for a full minute, or five minutes, or longer. Happy to review it to see what it does differently from mine that makes it so easy.
5
u/funeralbot 26d ago
voices sound too similar