Stack_WanSoundImageToVideoExtend
Stack_WanSoundImageToVideoExtend
- video_latent
- ref_image
- control_video
- audio_encoder_output
- SoundImage_ex
Sound-to-video is the last frontier Wan never got natively. Alibaba's Wan family has no audio channel at any version - the community workaround has always been a separate LTX or MMAudio stage bolted on after the fact. ComfyUI-Apt_Preset's Stack_WanSoundImageToVideoExtend is the pack's answer for the "extend" half of that job: you've already got a sound-driven clip, and you want to keep going from where it stopped.
It sits in the Apt_Preset/stack/šŗbackup category, which is the pack's way of saying "this is the older or alternative set of Wan stack nodes - the supported hub is sum_stack_Wan." Don't read "backup" as broken; read it as "wired into the same controller, not the flagship path."
What it actually does
This is a parameter-packaging node, not a sampler. It takes your settings and media, bundles them into a single typed token, and hands that token to sum_stack_Wan's SoundImage_ex input. The actual Wan model work happens downstream when the stack's merge() builds the conditioning. You configure here; the stack executes.
The "Extend" part is the video_latent input. The plain Stack_WanSoundImageToVideo node starts from a reference image at a fixed width/height. This one drops those - you're not setting a fresh canvas, you're feeding in the latent of the previous clip (video_latent) so the next generation continues from its final state instead of restarting. Same trick every Wan extension chain uses, just tucked behind one wire.
The inputs that matter
- length - frames for the new segment. Default 77, which is right around the 81-frame native context Wan likes; keep it in the 4-increment steps and you're fine.
- video_latent - the previous clip's latent. This is what makes it an extension rather than a fresh generation.
- audio_encoder_output - the
AUDIO_ENCODER_OUTPUTtoken from the pack's audio encoder stage. No audio in, no point to this node. - ref_image - optional anchor for identity, if you're not just chaining blindly.
- control_video - optional structure/control input if you're following a pose or depth reference.
One output: SoundImage_ex, type SOUNDIMAGE_EX, which plugs into sum_stack_Wan ā SoundImage_ex.
Wiring it in
Context ā sum_load_simple (load your Wan 2.2 model, Unet + clip1) ā prompt/conditioning ā sum_stack_Wan, with this node feeding its SoundImage_ex input and sum_Ksampler doing the actual denoising. sum_stack_Wan also hands you vace_trim_latent and trim_image integers for post-trimming the result.
Installing it
From ComfyUI Manager, search ComfyUI-Apt_Preset and install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
cd ComfyUI-Apt_Preset
pip install -r requirements.txt # Windows: double-click install.bat
The requirements pull in soundfile and pydub - the audio half of this node's dependency - plus a fairly heavy stack (onnxruntime, opencv, pandas). Expect the install to take a while.
Where people get burned
This is a genuinely new, low-footprint node - a literal search for the pack name returns nothing on the usual boards, and sound-to-video on Wan is still frontier territory, so there's no forum thread to save you. The realistic failure is forgetting that the audio encoder is a separate node in the pack: audio_encoder_output has no default, and leaving it unplugged silently produces a node that has nothing to extend. And because it's a token-passing node, if sum_stack_Wan isn't in your graph, this node does literally nothing visible - it has no preview and no output image. Build the whole chain, then debug.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| length | INT | 771ā4096 | ā |
| video_latentopt | LATENT | ā | |
| ref_imageopt | IMAGE | ā | |
| control_videoopt | IMAGE | ā | |
| audio_encoder_outputopt | AUDIO_ENCODER_OUTPUT | ā |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SoundImage_ex | SOUNDIMAGE_EX | ā |