DiffSynth: LTX-2 Audio Video Loader
LTX-2 Audio Video Loader — the two-stage knob lives here
- model_configs
- tokenizer_config
- stage2_lora_config
- vram_limit
- pipe
LTX-2 is the one open video model that generates sound and picture together, in one model, rather than bolting an audio pass onto a silent generator. That's why it found its audience in lip-sync and music video instead of general-purpose clips, and it's why the loader for it has more than three inputs.
It's also a 19B–22B model with a big Gemma text encoder riding along, so "loading" is a real event. Plan accordingly.
Required inputs
model_configs- the merged list. The pack's two-stage template wires the LTX repackage files (transformer, text-encoder post-modules, video VAE decoder, audio VAE decoder, audio vocoder) plusgoogle/gemma-3-12b-it-qat-q4_0-unquantizedfor the encoder.torch_dtype-bfloat16by default;float16andfloat32are also there.device-cudaorcpu.
The optional inputs that matter
tokenizer_config - the tokenizer that goes with Gemma-3. In the template it's the Gemma repo with a blank origin_file_pattern, which pulls the whole folder.
stage2_lora_config - this is the interesting one. LTX-2's quality workflow is two-stage: a first pass at low resolution, then a spatial upsampler stage. The distilled LoRA used for that second stage is loaded here, as a DIFFSYNTH_MODEL_CONFIG, pointing at a file like ltx-2-19b-distilled-lora-384.safetensors.
stage2_lora_strength - default 0.8, range 0 to 10. This is the strength of that stage-2 adapter. As with any distilled LoRA, taste varies more than you'd expect: community testing on LTX-2's distilled adapters has used strengths down around 0.4–0.5 across the two sampler stages, so if 0.8 comes out looking over-cooked or the motion gets brittle, drop it and compare rather than assuming you broke something. There's also a matching clear_lora_before_state_two boolean on the inference node, which is where you'd drop stacked adapters before the second stage runs.
vram_limit - from the VRAM Limit node. With a 19B transformer plus a 12B-class text encoder, this is not a loader where you want to leave the budget to chance.
What you're loading, roughly
LTX-2 shipped as open weights in January 2026 at 19B, with a distilled variant and a set of LoRAs including IC-LoRA control adapters. LTX-2.3 followed in 2026 at 22B with a new VAE, better detail and cleaner audio, and it ships as ltx-2.3-22b-dev plus a distilled version. This same loader handles both - you change the ModelConfig repo, not the node. Whichever you use, the divisibility rules are model-side: width and height need to be multiples of 32, and frame counts want to be a multiple of 8 plus 1.
One licensing note before you build a business on it: LTX-2 is not Apache 2.0, despite being widely called that. It's the LTX-2 Community License - free under $10M annual revenue, hosting permitted, derivatives share-alike, and an acceptable-use policy that bans sexually explicit output.
Install
ComfyUI Manager, search DiffSynth-ComfyUI, install, restart. Or:
pip install git+https://github.com/modelscope/DiffSynth-Studio.git
cd ComfyUI/custom_nodes
git clone https://github.com/modelscope/DiffSynth-ComfyUI.git
Then open general_ltx2_t2av_two_stage from the Template tab. That workflow's second half - the upscaler and distilled LoRA ModelConfigs feeding back into the stage-2 inputs - is much easier to copy than to derive.
Where people get burned
Treating the first queue as a normal run. Several multi-GB downloads plus a large model load; the loading screen isn't frozen, it's working.
Ignoring the divisibility rules. Odd resolutions and arbitrary frame counts are a reliable way to get garbage output or a shape error deep inside the pipeline.
Leaving the stage-2 LoRA wired while running a single-stage graph. If you're not running two passes, that adapter has no job, and the inference node's use_two_stage_pipeline flag is what decides whether it's used at all.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| torch_dtype | COMBO | bfloat16 | 3 options: bfloat16, float16, float32 |
| device | COMBO | cuda | 2 options: cuda, cpu |
| model_configs | DIFFSYNTH_MODEL_CONFIG_LIST | — | |
| tokenizer_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| stage2_lora_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| stage2_lora_strengthopt | FLOAT | 0.80–10 | — |
| vram_limitopt | DIFFSYNTH_VRAM_LIMIT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DIFFSYNTH_PIPE | — |