Generated reference · ComfyUI workflow · Flagship (frontier)

LTX-2 AV Scene

Open joint audio-video generation on LTX-2.3 22B distilled (Apache 2.0): text-to-video or image-to-video with synchronized generated audio in ONE sampling pass (nested AV latent), 8-step distilled schedule at cfg 1 - the open audio-video …

Flagship (frontier)22nodesGPU H100out video~300sv1.0.0

On this page

Open joint audio-video generation on LTX-2.3 22B distilled (Apache 2.0): text-to-video or image-to-video with synchronized generated audio in ONE sampling pass (nested AV latent), 8-step distilled schedule at cfg 1 - the open audio-video flagship tier

22Graph nodes
21Node classes
8Inputs
2Models

Tags: flagshipltx-2videoaudiojoint-av2026-sota

Inputs (8)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

modeenumdefault text_to_video
Pure text-to-video, or animate a start image
options: text_to_videoimage_to_video
promptstringdefault gentle rain over a temple garden, distant wind chimes, soft ambient tones
Scene, motion, AND soundscape in natural prose (the model generates matching audio)
start_imageimage
Start frame (image_to_video mode only)
start_strengthfloatdefault 1.0min 0.0max 1.0
How strongly the start image pins the first frame
generate_audiobooleandefault true
Generate synchronized audio in the same sampling pass (LTX-2's joint AV latent)
resolutionenumdefault landscape_1280
Output geometry (multiples of 32)
options: landscape_1280portrait_1280base_768
duration_secondsintegerdefault 6min 1max 20
Clip length in seconds at 24fps (frames = 24*s + 1, satisfying the 8n+1 latent rule)
seedintegerdefault -1
Random seed (-1 for random)

ComfyUI node graph (22)#

The executable ComfyUI prompt graph: 22 nodes across 21 distinct node classes, wired by 27 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: CheckpointLoaderSimple"] n1["2: LTXAVTextEncoderLoader"] n2["3: CLIPTextEncode"] n3["4: CLIPTextEncode"] n4["5: LTXVConditioning"] n5["6: EmptyLTXVLatentVideo"] n6["start_load: LoadImage"] n7["start_prep: LTXVPreprocess"] n8["start_apply: LTXVImgToVideoInplace"] n9["audio_vae: LTXVAudioVAELoader"] n10["audio_latent: LTXVEmptyLatentAudio"] n11["av_concat: LTXVConcatAVLatent"] n12["7: RandomNoise"] n13["8: CFGGuider"] n14["9: KSamplerSelect"] n15["10: ManualSigmas"] n16["11: SamplerCustomAdvanced"] n17["av_split: LTXVSeparateAVLatent"] n18["12: VAEDecode"] n19["audio_decode: LTXVAudioVAEDecode"] n20["13: CreateVideo"] n21["14: SaveVideo"] n1 -->|clip| n2 n1 -->|clip| n3 n2 -->|positive| n4 n3 -->|negative| n4 n6 -->|image| n7 n0 -->|vae| n8 n7 -->|image| n8 n5 -->|latent| n8 n9 -->|audio_vae| n10 n8 -->|video_latent| n11 n10 -->|audio_latent| n11 n0 -->|model| n13 n4 -->|positive| n13 n4 -->|negative| n13 n12 -->|noise| n16 n13 -->|guider| n16 n14 -->|sampler| n16 n15 -->|sigmas| n16 n11 -->|latent_image| n16 n16 -->|av_latent| n17 n17 -->|samples| n18 n0 -->|vae| n18 n17 -->|samples| n19 n9 -->|audio_vae| n19 n18 -->|images| n20 n19 -->|audio| n20 n20 -->|video| n21
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (22)#

1CheckpointLoaderSimplecore
ckpt_name = ltx-2.3-22b-distilled-fp8.safetensors
outputs: MODELCLIPVAE
2LTXAVTextEncoderLoadercore
text_encoder = gemma_3_12B_it_fp4_mixed.safetensorsckpt_name = ltx-2.3-22b-distilled-fp8.safetensorsdevice = default
outputs: CLIP
3CLIPTextEncodecore
text = {{prompt}} tmplclip = ◂ node 2 · out[0]
outputs: CONDITIONING
4CLIPTextEncodecore
text = static image, jitter, warped motion, watermark, subtitles, distorted faces, harsh noise, clipping audioclip = ◂ node 2 · out[0]
outputs: CONDITIONING
5LTXVConditioningcore
positive = ◂ node 3 · out[0]negative = ◂ node 4 · out[0]frame_rate = 24.0
outputs: CONDITIONINGCONDITIONING
6EmptyLTXVLatentVideocore
width = {{resolution_map[resolution].width}} tmplheight = {{resolution_map[resolution].height}} tmpllength = {{24 * duration_seconds + 1}} tmplbatch_size = 1
outputs: LATENT
start_loadLoadImagecore
image = {{start_image}} tmpl
outputs: IMAGEMASK
start_prepLTXVPreprocesscore
image = ◂ node start_load · out[0]img_compression = 18
outputs: IMAGE
start_applyLTXVImgToVideoInplacecore
vae = ◂ node 1 · out[2]image = ◂ node start_prep · out[0]latent = ◂ node 6 · out[0]strength = {{start_strength}} tmplbypass = false
outputs: LATENT
audio_vaeLTXVAudioVAELoadercore
ckpt_name = ltx-2.3-22b-distilled-fp8.safetensors
outputs: VAE
audio_latentLTXVEmptyLatentAudiocore
frames_number = {{24 * duration_seconds + 1}} tmplframe_rate = 24batch_size = 1audio_vae = ◂ node audio_vae · out[0]
outputs: LATENT
av_concatLTXVConcatAVLatentcore
video_latent = ◂ node start_apply · out[0]audio_latent = ◂ node audio_latent · out[0]
outputs: LATENT
7RandomNoisecore
noise_seed = {{seed}} tmpl
outputs: NOISE
8CFGGuidercore
model = ◂ node 1 · out[0]positive = ◂ node 5 · out[0]negative = ◂ node 5 · out[1]cfg = 1.0
outputs: GUIDER
9KSamplerSelectcore
sampler_name = euler_cfg_pp
outputs: SAMPLER
10ManualSigmascore
sigmas = 1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0
outputs: SIGMAS
11SamplerCustomAdvancedcore
noise = ◂ node 7 · out[0]guider = ◂ node 8 · out[0]sampler = ◂ node 9 · out[0]sigmas = ◂ node 10 · out[0]latent_image = ◂ node av_concat · out[0]
outputs: LATENTLATENT
av_splitLTXVSeparateAVLatentcore
av_latent = ◂ node 11 · out[0]
outputs: LATENTLATENT
12VAEDecodecore
samples = ◂ node av_split · out[0]vae = ◂ node 1 · out[2]
outputs: IMAGE
audio_decodeLTXVAudioVAEDecodecore
samples = ◂ node av_split · out[1]audio_vae = ◂ node audio_vae · out[0]
outputs: AUDIO
13CreateVideocore
images = ◂ node 12 · out[0]fps = 24audio = ◂ node audio_decode · out[0]
outputs: VIDEO
14SaveVideocore
video = ◂ node 13 · out[0]filename_prefix = ltx2_av_sceneformat = autocodec = auto

Parameter banks (1)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

resolution_map (3)#

landscape_1280
{"width": 1280, "height": 704}
portrait_1280
{"width": 704, "height": 1280}
base_768
{"width": 768, "height": 512}

Models & dependencies#

Models required (2)#

gemma_3_12B_it_fp4_mixed.safetensors
ltx-2.3-22b-distilled-fp8.safetensors

Output contract#

What a successful run of this workflow returns.

type
video
format
mp4
audio
true

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
joint-av-scene
outputPackageProfile
video-master-profile
controlModalities
model-locksampler-scheduler-lockseed-locktemporal-lock
consistencyDimensions
motioncolor-script
notes
LTX-2.3 22B distilled joint audio-video: one nested AV latent, one sampler, synchronized soundtrack; 8-step official distilled sigmas at cfg 1.