CivArchive
    JoyAI-Echo Multishot Workflow - one character, many shots, same face + voice - v1.7
    NSFW

    Everything here is free and stays free — the format spec, the nodes, the workflows, the cartridges, the LoRAs. If it saved you a night of debugging (it contains several hundred of mine), tips keep the 5090 warm:

    🚨 v2.0 IS HERE — RIFTCAST: CHARACTERS ARE FILES NOW. Design a human from dropdowns, watch them audition, and get a portable character file anyone can reuse — zero training. Plus the 24fps accent discovery that fixes every "why is she suddenly British" bug. Full story in the v2.0 version notes. 🚨


    JoyAI-Echo Multishot — the character video studio for LTX-2.3

    One character. Any number of shots. Same face, same voice, every time — and as of 2.0, your characters are files you can share.

    This is a complete local pipeline for character-driven video on LTX-2.3's joint audio-video model: it generates the picture AND the voice in one diffusion pass — no TTS chain, no lip-sync post, no per-word API costs. A cross-shot memory bank keeps identity and voice locked across an entire multi-shot production, and a set of hard-won fixes makes the base model behave in ways stock workflows can't.

    RiftCast — characters are files now

    Things come through the Rift. Now characters do too.

    A .riftcast cartridge is one file carrying a character's voice (a 4-second anchor clip), face (reference stills), canonical description, and optionally their LoRAs and home environments. Drop it in input/riftcast/, restart, and mention the character in any script: they render with their face and their voice, in any scene, zero training. Cartridges extend the roleplay world's Character Card V3/CHARX lineage into photoreal video — a cartridge can carry a chat persona too, so the same character works in your roleplay client.

    Three ways to get one:

    • DownloadWREN.riftcast ships in this package; more on the HuggingFace repo.

    • Cut one from any render you like — one command: python riftcast.py cut <master.mp4> <NAME> <dna.txt>.

    • Design one from scratch — the bundled RiftCast Studio workflow is a full character creator. A Character Designer node covers identity (gender, age, ethnicity, skin, height, build, voice timbre, accent) and a Style + Wardrobe node covers appearance: 71 styles across 10 families, plus hair colour, hair shape, makeup, accessories, demeanor and a freeform wardrobe override. Queue it and the character records an audition tape; the Packer cuts their anchor and reference stills from that render and installs the cartridge automatically. Don't like who showed up? Re-queue with a new seed. Like them? They're a file, forever. (Our test reviewer rated a Designer character's lip sync "Real — very high confidence.")

    One workflow, one switch: RiftCast Studio routes between your prompt files (LPFF/JSON batch rendering, the classic path) and the Character Designer with a single dropdown.

    The style dropdown never sends its own name

    This is the part that makes it work rather than being a word list. "Goth" and "preppy" mean nothing to a video model, so no style label is ever written into a prompt. Each of the 71 entries expands into concrete renderable descriptors — garments named with material and condition, hair shape, makeup with placement, worn objects, and a demeanor that drives how the character physically carries themselves on camera. Picking one goth entry produces, in part:

    "...hair backcombed high at the crown with a straight fringe cut level with the eyebrows, wearing a long-sleeved black velvet dress with a frayed hem over laddered fishnet tights, and buckled boots scuffed grey at the toe, matte pale foundation, black liner drawn thick and winged past the outer corner..."

    Hair colour stays its own dropdown and styles specify only shape, so the two can never collide. Every style carries both a masculine and a feminine wardrobe reading, so it works across presentations instead of being gender-locked, and anything you set explicitly overrides the style's contribution.

    The 24 fps law — why your accents broke

    The single most important thing this package knows: LTX-2.3's joint audio-video prior is 24 fps-native, and render fps is a hidden accent dial. At 25 fps the same prompt and seed render non-rhotic southern British; at 30 fps, broad Australian — and off-24 fps overrides accent wording in your prompt entirely. Verified by A/B with blind phonetic review. Everything here defaults to 24 and warns when you stray. If you want a British or Australian character, render their scenes at 25/30 — it beats any wording. (Pairs with the American-accent audio LoRA, which makes accent wording enforceable in the young-voice registers the base model ignores.)

    The rest of the studio

    • Cross-shot memory bank — identity and voice persist across shots; anchor+latest policy stops drift snowballs.

    • Voice casting — drop a clip in joyecho_voices/<tag>/ and that character speaks with that voice in every render. Script-pinned voices via voice_refs.

    • Finishing — AutoFinish builds your master automatically; deterministic upscale; optional temporal_upscale doubles motion to ~48 fps masters (24 fps render law preserved, audio untouched).

    • Long takes — up to 1441 frames (60 s) single-shot; the old ~10 s lip-sync cliff is fixed at the RoPE-clock level (Bug fix #0).

    • Correctness — a full sampler-path audit (seeded hires, cache keyed on checkpoint, cloned banks), fp8/INT8/GGUF loading paths, and widget values that survive updates (saved by name, not position).

    Hardware

    Built and tested on RTX 5090/3090. GGUF DiT + the 9 GB VAE companion runs the whole stack in ~11 GB system RAM instead of ~60.

    Everything is also on GitHub and HuggingFace — node pack, format spec, LoRAs (surface realism too), quants, and demo cartridges. LTX-2 Community License.

    Description

    # v1.7 — The 24 fps rule: your frame rate has been choosing your accents
    
    If your characters ever came out British or Australian no matter what your prompt said — this is why, and it is now fixed by default.
    
    **LTX-2.3's joint audio-video prior is 24 fps-native, and render fps is a hidden accent dial.** The model experiences fps as video-token density per second of audio time. Move it off 24 and every voice slides into the Commonwealth vowel space — same prompt, same seed: at 25 fps a monologue that renders rhotic **General American** at 24 fps comes out non-rhotic **southern British**; at 30 fps it is broad **General Australian**, rising terminals and all. Verified by A/B on identical configs with blind phonetic review, 5/5 confidence at every point.
    
    Worse: **off-24 fps overrides your prompt.** At 25 fps, even a line carrying "speaking in a casual American accent" renders British — a few conditioning tokens cannot outvote a geometric signal present in every attention operation at every denoising step. At 24 fps the same wording is obeyed.
    
    This interacted invisibly with v1.5's RoPE-clock sync fix. Before that fix the video rope clock was hardcoded to 24, so 25 fps renders had drifting lip-sync but American voices. The sync fix made the clock honest — and surfaced the accent drift the bug had been masking. If your voices "changed personality" after upgrading: you were rendering at 25. Drop to 24 and you get sync AND your accents back.
    
    **What v1.7 does:**
    - `video_fps` default is now **24**, with a tooltip explaining why.
    - The Generate node prints a warning if you dial anything else.
    - The bundled workflow ships at 24 fps.
    - The bundled **Multishot Lite** graph is fixed too: every fps widget to 24, and the AV-extend mask times rescaled so the extension window stays on the same latent frames (3.04 s / 13.04 s).
    
    **The flip side is a free feature:** if you *want* an authentic British or Australian character, render their scenes at 25 or 30 fps instead of writing accent prose. It is more consistent than any wording.
    
    One caveat that stays true at any fps: with no accent stated, young female characters lean Australian (the base model's own lean). State the accent on every spoken line — fps decides whether the model listens; the prompt still has to do the asking.
    
    ## Fixes
    
    - **fp8-mixed gemma encoders load again.** v1.6's INT8 checkpoint support intercepted every comfy-quant marker at the state-dict layer and crashed on fp8 formats ("comfy_quant format 'float8_e4m3fn' is not supported"). The interception is now scoped to int8 only; fp8 files pass through to their own loader path as before.
    - **No more console windows flashing at the end of renders.** The AutoFinish worker ran detached with no console, so every ffmpeg call it made allocated its own visible window — a burst of focus-stealing flashes as each master was assembled. The worker now runs with a hidden console its children inherit silently.
    
    ## Upgrading
    
    Unzip over your existing `ComfyUI_JoyAI_Echo_GGUF_Nodes` folder (or replace `nodes.py`, `joyecho_autofinish.py`, and `libs/ltx_core/loader/sft_loader.py`), restart ComfyUI. Then check one widget in your saved workflows: **set `video_fps` to 24** — saved graphs keep their old value and 25 was the shipped default before this version.
    

    FAQ

    Workflows
    LTXV 2.3

    Details

    Downloads
    60
    Platform
    CivitAI
    Platform Status
    Available
    Created
    7/30/2026
    Updated
    8/12/2026
    Deleted
    -

    Files

    joyaiEchoMultishotWorkflowOne_v17.zip

    Mirrors