Nodes/XB_ToolBox/XB_WanHuMoImageToVideo
ComfyUI Node

XB_WanHuMoImageToVideo

Audio-driven human motion with Wan HuMo

By wjluoxiao·Created 5 months ago·Updated 6 days ago· 302
XB_WanHuMoImageToVideo
  • positive
  • negative
  • vae
  • audio_encoder_output
  • ref_image
  • positive
  • negative
  • latent
width832
height480
length97
batch_size1
vae_tile_size64
scale_methodlanczos
crop_modecenter

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_image is upscaled, VAE-encoded, and pushed into the conditioning as reference_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 (the AUDIO_ENCODER_OUTPUT from 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 as audio_embed. The negative side gets the same embedding zeroed out. That audio_embed is 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.

CategoryXB_ToolBox/Pipeline

Inputs (12)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–8192
heightINT48016–8192
lengthINT971–8192
batch_sizeINT11–4096
vae_tile_sizeINT6464–3840
audio_encoder_outputoptAUDIO_ENCODER_OUTPUT
ref_imageoptIMAGE
scale_methodoptCOMBOlanczos5 options: lanczos, bilinear, bicubic, nearest-exact, area
crop_modeoptCOMBOcenter2 options: center, disabled

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT