Nodes/ComfyUI-Erosdiffusion-LTX2/πŸ’œ LTXV Scene Extender ErosDiffusion
ComfyUI Node

πŸ’œ LTXV Scene Extender ErosDiffusion

Extend LTX-2 clips with synced audio from a shot list β€” audio included

By erosDiffusionΒ·Created 7 months agoΒ·Updated 7 months agoΒ· 3
πŸ’œ LTXV Scene Extender ErosDiffusion
  • model
  • video_vae
  • sampler
  • sigmas
  • noise
  • guider
  • clip
  • audio_vae
  • latent
  • guide_images
  • latent
  • video_latent
  • audio_latent
  • positive
  • negative
β—„overlap_duration1.0β–Ί
β—„video_fps25β–Ί
β—„width960β–Ί
β—„height512β–Ί
β—„scene_script[00:00-00:01] A woman with short hair speaks to camera | audio:"Hello" | first:$0 | end:$0 [00:01-00:03] A woman with short hair turns around and speaks to camera , camera orbits around | audio:"I like this camera" | first:$0 | end:$1 [00:03-00:06] A woman with short hair opens her arms and tilts head backwards happy | audio: "I feel free" | first:$1 | end:$2 [00:06-00:08] A woman with short hair puts her hands in her hair | first:$2β–Ί
β—„guide_strength1.00β–Ί
β—„audio_overlap_duration0.5β–Ί
β—„audio_slope_frames5β–Ί
β—„audio_normalization1,1,0.25,1,1,0.25,1,1β–Ί
β—„video_overlap_frames8β–Ί
β—„audio_overlap_frames32β–Ί
β—„temporal_cond_strength1.00β–Ί
β—„adain_factor0.10β–Ί
β—„enable_cachefalseβ–Ί

The README for this pack is refreshingly honest, which you should read before installing: pre-alpha, in progress, "not meant for usage," and - at the moment - broken. That's the pack LTXVSceneExtender ships in, and ComfyUI Manager will happily hand it to you and let you find that out yourself. So the real warning is up front: this is a promising idea in a very early shell, not a tool you should build a pipeline on today.

The idea, though, is the right one. LTX-2 (open weights landed January 2026) was the first open-weights model to generate synchronized video and audio in a single pass - 19B parameters, a Gemma 3 text encoder that alone weighs ~22GB, and audio that comes out of the diffusion model instead of being bolted on after the fact. This node is a scene-script-driven extender for exactly that model. You hand it a text file that reads like a shot list, and it generates the whole thing, chunk by chunk, with per-line dialogue, image guides pinned to specific frames, and audio crossfaded at every cut.

How it works

It's not a standalone generator - it's a wrapper around the standard LTX sampling plumbing. You feed it model, video_vae, sampler, sigmas, noise, guider (it expects STGGuiderAdvanced-style guiders), and clip: the same six-way connection every working LTX workflow already has. From there it parses the scene_script into timed chunks, pre-encodes every prompt and guide image so the run doesn't stall mid-generation, then loops through the chunks, stitching each one to the last with a temporal overlap. If the model is an LTXAVModel and you've wired up the audio VAE, each chunk also produces audio, and an internal blender crossfades the mel-spectrogram output at transitions so joins don't click.

The script format is the whole language of the node, and it's genuinely easy to read:

[00:00-00:02] Closeup of woman's face, neutral expression | audio:silent | first:$0 | end:$1
[00:02-00:04] Cowboy shot of woman speaking | audio:"Hello, welcome" | first:$2 | 00:03:$3 | end:$4

Each line is one chunk: a [MM:SS-MM:SS] window, the prompt, an audio spec (audio:silent, audio:ambient, or audio:"dialogue text"), and image guides - first:, end:, or a specific MM:SS: - referencing $0, $1, etc. from the guide_images batch. The default input in the node is a three-scene example, so you can see the format working before you write your own.

The inputs that actually matter

  • scene_script - the shot list above. This is the node, really; everything else is plumbing.
  • model + audio_vae - wire the LTXAVModel and the audio VAE or you'll silently get video-only output. The video_vae handles frames, the audio_vae handles the sound.
  • guide_images + guide_strength - your reference frames and how hard the model leans on them.
  • enable_cache - chunk caching for faster re-runs. Nice for iterating, but the tooltip's warning is real: it eats extra memory.

The audio knobs (audio_overlap_duration, audio_slope_frames) default to sane values - only touch them if your transitions click or clip.

Outputs

latent (the combined result), plus split video_latent and audio_latent streams you can decode separately, and positive/negative conditioning if you're chaining further. In practice: decode the video latent through the VAE, wire the audio latent to its audio decoder, and you have your scene.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/erosDiffusion/ComfyUI-Erosdiffusion-LTX2

…or just search "Erosdiffusion LTX2" in ComfyUI Manager, then restart ComfyUI. No pip dependencies in the repo - but the code uses ComfyUI's newer v3 node API and comfy_extras.nodes_lt, so you need a current ComfyUI. The heavy lift is the models: LTXVideo plus an LTXAVModel (the LTX-2 weights are a ~25GB fp8 file on top of the Gemma text encoder). Official minimum is 32GB VRAM, which nobody actually runs; the realistic setup is 64GB system RAM and ComfyUI started with --reserve-vram 4 - that's how the community squeezed LTX-2 onto 24GB and 16GB cards.

Troubleshooting

The big one isn't technical: the README says it's broken, and it's pre-alpha. Expect rough edges - don't judge a bad run against what Wan-adjacent workflows produce. Common real snags:

  • No audio at all - you wired a video-only model, or skipped audio_vae. Double-check both.
  • OOM - LTX-2 memory reality, not this node's bug. GGUF quants plus --reserve-vram are the standard fix.
  • Script silently ignored - a malformed line (missing pipes, unquoted dialogue with spaces) usually makes a chunk parse wrong or get dropped. The timeline editor sibling in this pack exists precisely because eyeballing pipes is miserable.
CategoryErosDiffusion/ltxv

Inputs (24)

NameTypeDefaultDescription
modelMODELDiffusion model (LTXAVModel for audio-video, or video-only model)
video_vaeVAEVideo VAE for encoding/decoding
samplerSAMPLERSampler to use
sigmasSIGMASSigma schedule
noiseNOISENoise source
guiderGUIDERGuider (e.g., STGGuiderAdvanced)
clipCLIPCLIP model for encoding prompts
overlap_durationFLOAT1.00.5–3Overlap between chunks for smooth transitions
video_fpsFLOAT251–60Video frame rate
widthINT96064–2048Output video width
heightINT51264–2048Output video height
scene_scriptSTRING[00:00-00:01] A woman with short hair speaks to camera | audio:"Hello" | first:$0 | end:$0 [00:01-00:03] A woman with short hair turns around and speaks to camera , camera orbits around | audio:"I like this camera" | first:$0 | end:$1 [00:03-00:06] A woman with short hair opens her arms and tilts head backwards happy | audio: "I feel free" | first:$1 | end:$2 [00:06-00:08] A woman with short hair puts her hands in her hair | first:$2Timestamped scene script. Format: [MM:SS-MM:SS] Scene description | audio:spec | first:$0 | MM:SS:$1 | end:$2 Audio specs: audio:silent, audio:ambient, audio:"dialogue text" Guide refs: $0, $1, etc. reference guide_images batch by index
guide_strengthFLOAT1.000–1Strength of image guides
audio_overlap_durationFLOAT0.50.1–2Audio overlap for smooth blending at transitions
audio_slope_framesINT51–20Crossfade slope length for seamless audio
audio_normalizationSTRING1,1,0.25,1,1,0.25,1,1Per-step audio normalization factors
video_overlap_framesINT80–64β€”
audio_overlap_framesINT320–256β€”
temporal_cond_strengthFLOAT1.000–1Conditioning strength from previous tile overlap
adain_factorFLOAT0.100–1AdaIN factor to prevent oversaturation
enable_cacheBOOLEANfalseEnable chunk caching for faster re-runs (can use extra memory)
audio_vaeoptVAEAudio VAE (required for audio generation)
latentoptLATENTExisting video/AV latent to extend (optional for new generation)
guide_imagesoptIMAGEBatch of guide images (referenced as $0, $1, etc.)

Outputs (5)

NameTypeDescription
latentLATENTβ€”
video_latentLATENTβ€”
audio_latentLATENTβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”