Nodes/comfyui-ltx2-efficient/LTX2 Separate Audio/Video Latent
ComfyUI Node

LTX2 Separate Audio/Video Latent

Split LTX-2's combined audio/video latent so you can sample video alone

By kakachiex2·Created 7 months ago·Updated 7 months ago· 10
LTX2 Separate Audio/Video Latent
  • latent
  • video_latent
  • audio_latent
  • has_audio
create_empty_audiotrue

LTX-2 packages audio and video into one combined latent, and there are two problems with that for a low-VRAM workflow: the combined thing is harder to denoise efficiently, and not every node knows what to do with it. LTX2SeparateAVLatent pulls it apart into a standalone video latent and a standalone audio latent, so you can run the video half through the efficient sampler (which is tuned for video-only latents) while keeping the audio safe for recombination later. It's the front half of the pack's audio-video sandwich, and the counterpart to LTX2CombineAVLatent.

How it works

It takes one latent and inspects what's inside. Combined latents show up in a few different wrappers, and the node recognizes each:

  • NestedTensor (from LTXVConcatAVLatent) - tries unbind() to get [video, audio], guessing which is which by dimensionality (video is 5D, audio is 4D).
  • Tuple (video, audio) - split directly.
  • AVLatentWrapper - the pack's own wrapper from LTX2CombineAVLatent, which exposes the same unbind() API, so a combined latent from this pack's own combine node splits cleanly.
  • Plain video tensor - no audio at all; the node offers to synthesize one.

That last case is what create_empty_audio controls. With it on (the default), a video-only input still yields an audio output - a zeros tensor in LTX audio-latent format - plus has_audio=false so you can tell. With it off, you get None for the audio output.

The outputs

  • video_latent (LATENT) - the video half, ready for LTX2EfficientSampler.
  • audio_latent (LATENT) - the audio half, to stash until you recombine.
  • has_audio (BOOLEAN) - true if real audio was found, false if you got a synthesized placeholder. Handy for a conditional routing node if you're building one graph that serves both audio and video inputs.

Where it sits

[LTXVConcatAVLatent] -> [LTX2SeparateAVLatent] -> video_latent -> [LTX2EfficientSampler] -> [LTX2CombineAVLatent] -> [LTXVDecodeAV]
                                                   audio_latent ---------------------------->/

The README frames the whole loop this way: split, sample the video efficiently (with an optional audio pipeline alongside), recombine, decode. If your latent is already video-only, you don't need this node - and if you only feed it plain video, you're really just using it as a placeholder generator, which LTX2EmptyAudioLatent does more directly.

Installation

Part of kakachiex2/comfyui-ltx2-efficient. ComfyUI Manager (search "LTX2 Efficient") or:

cd ComfyUI/custom_nodes/
git clone https://github.com/kakachiex2/comfyui-ltx2-efficient
cd comfyui-ltx2-efficient
pip install -r requirements.txt

Restart ComfyUI. No model files; the only listed dependency across the pack is the optional pynvml.

Troubleshooting

  • has_audio is false when you expected true - the node logged "Could not extract from NestedTensor" or hit an unrecognized format. Check which node produced the combined latent and that it matches one of the supported wrappers (official LTX NestedTensor or this pack's wrapper).
  • Video-only output is fine but audio is silent - you ran with create_empty_audio, so you got a placeholder. Either the source latent genuinely had no audio, or extraction failed and it fell back.
  • Broken sync after recombining - make sure the audio latent you recombine is the same one this node gave you (or your own real audio pipeline's output), and that frame counts match up.

It's a plumbing node with a clear job, and it's the correct first step whenever an LTX-2 AV workflow is giving your sampler trouble - because almost every "weird" failure in that stack starts with the sampler receiving a combined latent it wasn't expecting.

Categoryvideo/ltx2

Inputs (2)

NameTypeDefaultDescription
latentLATENT
create_empty_audiooptBOOLEANtrueCreate empty audio latent if none found

Outputs (3)

NameTypeDescription
video_latentLATENT
audio_latentLATENT
has_audioBOOLEAN