Nodes/ComfyUI/Separate AV Latent
ComfyUI Node Runs on cloud

Separate AV Latent

Your LTX-2 latent is secretly two latents — split them before you decode

By Comfy-Org·Created 4 years ago·Updated about 6 hours ago· 130,659
Separate AV Latent
  • av_latent
  • video_latent
  • audio_latent

Models that generate audio and video together - LTX-2 first, MiniMax H3 after it - don't hand you a plain video latent when sampling finishes. They hand you one joint latent that holds both a video stream and an audio stream packed into a single tensor. You can't decode that thing directly, because the two streams belong to different VAEs. That's the entire reason this node exists: it unpacks the pair into video_latent and audio_latent so you can decode each with the right decoder.

Where it sits in the workflow

After the KSampler, before anything touches pixels or sound:

Sampler ──> LTXVSeparateAVLatent ──> video_latent ──> VAEDecode ──> video
                        └─────────> audio_latent ──> LTXVAudioVAEDecode ──> audio

The mechanism is almost boring, which is a compliment. The joint latent's samples is a nested tensor - literally two tensors, video and audio, bound together. This node unbinds them into two ordinary latents (and splits the noise mask the same way if one is present). Its mirror, LTXVConcatAVLatent, does the reverse when you want to merge separately-encoded audio and video back into one AV latent, so the pair is the standard way to move streams in and out of the joined representation.

Inputs and outputs

The one input is av_latent (LATENT) - whatever came out of sampling, no flags, no settings. Outputs:

  • video_latent - the video stream, wired into a normal VAEDecode.
  • audio_latent - the audio stream, wired into LTXVAudioVAEDecode with the audio VAE loaded.

That's the whole node. Nothing to tune, nothing to break.

How you get it

It ships with ComfyUI core - no install, no Manager. It arrived with ComfyUI's native support for audio+video models, and per the source it's deliberately generic: "any AV model, e.g. LTXV or MiniMax H3." If your ComfyUI can load LTX-2, it has this node.

Where people get burned

The classic mistake is trying to decode the joint latent without splitting. Feed it to a plain VAEDecode and you get an error or a video that's wrong in a way that's hard to diagnose, because the shape is plausible but the data isn't. Feed audio_latent to the wrong decoder and you'll hear static or nothing. The fix is always the same: split first, then match each stream to its own VAE.

Second gotcha: the audio side needs its own model file. LTXVAudioVAEDecode takes an audio VAE, loaded with LTXVAudioVAELoader from your checkpoints folder. If you only wired up the video VAE, the audio leg of your graph will sit there red. It's a separate download, not baked into the video checkpoint.

And one expectation to adjust: the audio in these models is still the weakest link. Community reports through LTX-2.3 consistently describe the sound as compressed and occasionally tinny - usable for lipsync and foley, not a finished mix. Splitting the latent won't change that; that's the model, not the plumbing.

Categorymodel/latent/ltxv

Inputs (1)

NameTypeDefaultDescription
av_latentLATENT

Outputs (2)

NameTypeDescription
video_latentLATENT
audio_latentLATENT