XB_WanHuMoImageToVideo
Audio-driven human motion with Wan HuMo
- positive
- negative
- vae
- audio_encoder_output
- ref_image
- positive
- negative
- latent
Most Wan I2V nodes are about motion you describe in text. XB_WanHuMoImageToVideo is the odd one in the pack: it's audio-driven. It's the conditioning node for Wan HuMo, the human-motion model where the music or sound drives what the subject does - feed it an audio encoder output plus a reference image, and the generated motion follows the rhythm rather than a prompt sentence.
The display name is the bare class name (XB_WanHuMoImageToVideo), and it's a specialist node: you only reach for it when your project is "character performs to a soundtrack," not "character walks across a room."
How it works
Two conditioning streams get built, and both are unusual:
- Reference identity. Your
ref_imageis upscaled, VAE-encoded, and pushed into the conditioning asreference_latents- the subject the model should keep recognizable. (If you don't supply one, it still inserts a zero latent so the conditioning shapes line up.) - Audio drive. The
audio_encoder_output(theAUDIO_ENCODER_OUTPUTfrom Wan's audio encoder node) is stacked, downsampled from 50fps to 25fps feature rate, windowed into per-frame audio embeddings via a temporal windowing helper, and written into the conditioning asaudio_embed. The negative side gets the same embedding zeroed out. Thataudio_embedis the direct channel through which the music steers the motion.
The node then builds the latent at your width/height/length (default 97 frames - HuMo's native length is longer than the 81-frame standard) and returns positive, negative, latent.
Inputs that matter
The two inputs doing the real work are audio_encoder_output and ref_image. The length default of 97 is a hint: this model's training cadence expects a longer clip, so don't chop it to 41 "to save time" - you'll fight the model's native tempo. vae_tile_size (64) and the scale/crop options behave like the rest of the pack.
Install & expectations
Standard pack install: ComfyUI Manager → XB_ToolBox, or git clone https://github.com/wjluoxiao/XB_ToolBox.git into custom_nodes, restart. Declared deps are opencv-python and easyocr; no weights ship. You'll need the Wan HuMo checkpoint, the Wan audio encoder (loaded via ComfyUI's audio-encoder node, the same one the S2V and InfiniteTalk nodes use), plus the usual VAE/CLIP/T5.
Honest expectations: audio-conditioned human motion is a fiddly niche, so budget for prompt-and-audio iteration. If the motion ignores the beat, check that your audio encoder and the node are on the same 50→25fps framing - a mismatched encoder output is the usual culprit, not the node itself.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–8192 | — |
| height | INT | 48016–8192 | — |
| length | INT | 971–8192 | — |
| batch_size | INT | 11–4096 | — |
| vae_tile_size | INT | 6464–3840 | — |
| audio_encoder_outputopt | AUDIO_ENCODER_OUTPUT | — | |
| ref_imageopt | IMAGE | — | |
| scale_methodopt | COMBO | lanczos | 5 options: lanczos, bilinear, bicubic, nearest-exact, area |
| crop_modeopt | COMBO | center | 2 options: center, disabled |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |