WanVideo Add MMAudio To Latents
Fusing Ovi's audio and video latents into one clip
- original_samples
- audio_samples
- samples
Ovi is the interesting one in this pack. It's a model that generates video and audio together - not video that you dub afterward, but a joint generation where the sound and the picture come out of the same process. That matters because Wan itself has no native audio at any version; every other audio path in this ecosystem is a bolt-on stage. Ovi bakes it in. This node (labeled "WanVideo Add MMAudio To Latents") is a small but load-bearing step in that pipeline: it takes your video latents and your audio latents and combines them into a single latent stream the rest of the graph carries forward.
If you've seen the T2V demos where a generated person talks and the voice is generated too, that's Ovi, and this is part of the wiring that keeps the two channels together.
How it works
Ovi produces audio in a latent space (via an MMAudio VAE, loaded by OviMMAudioVAELoader) alongside the video latents. To move them through the pipeline as one object - so a later decode can pull both back out in sync - they get merged. That's this node: original_samples (your video latent) plus audio_samples (the audio latent) in, one combined samples latent out. It's deliberately dumb and deterministic; there are no strength knobs because it's a structural join, not a creative one.
The inputs and outputs that matter
Two required inputs, no options:
original_samples(LATENT) - your video latents.audio_samples(LATENT) - the audio latents from the Ovi audio branch.
Output is a single combined samples (LATENT). From here it continues through the Ovi sampling/decode chain, where the MMAudio VAE turns the audio portion back into a waveform and the Wan VAE turns the video portion back into frames.
How to install it
ComfyUI Manager - search ComfyUI-WanVideoWrapper, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. The Ovi pipeline needs its own model set: the Ovi weights plus the MMAudio VAE and vocoder (loaded via OviMMAudioVAELoader), all from Kijai's WanVideo_comfy HuggingFace repo. This node itself downloads nothing, but it's meaningless without the rest of the Ovi chain around it.
Common issues & troubleshooting
Audio and video are out of sync in the output. The two latents have to describe the same duration and frame timing going in. If the audio branch and video branch were built with mismatched frame counts, the join here won't fix it - the desync is upstream. Make sure both branches were configured for the same clip length.
No audio in the final render. Trace the audio branch: this node only combines latents, so if the audio latent was empty or the MMAudio VAE decode isn't wired on the output side, you'll get silent video. Confirm OviMMAudioVAELoader is feeding the decode path.
It's a niche, early-days pipeline. Ovi landed in late 2025 and the community's early tests were "acceptable" quality on realistic people at close range, not flawless. Set expectations accordingly - the appeal is joint audio-video generation existing at all, not it beating a dedicated video model on picture quality.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| original_samples | LATENT | — | |
| audio_samples | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |