ComfyUI Node Runs on cloud

HuMo Embeds

Audio-driven talking-head video on Wan

By kijai·Created about a year ago·Updated 2 months ago· 6,651
HuMo Embeds
  • whisper_model
  • vae
  • reference_images
  • audio
  • image_embeds
num_frames81
width832
height480
audio_scale1.00
audio_cfg_scale1.00
audio_start_percent0.00
audio_end_percent1.00
tiled_vaefalse

This is the node for making a person talk. HuMo is ByteDance's audio-driven human video model - feed it a reference image and an audio clip and it generates video of that person speaking, with lip movement and facial emotion synced to the sound. When it dropped, the community read was that it beat Wan's own S2V and InfiniteTalk on exactly the thing those struggled with: "esp the facial emotion and actual lip movements fitting the speech," as the launch thread put it, instead of one usable take in ten. HuMoEmbeds is how you set up a HuMo generation inside Kijai's wrapper.

Base Wan has no audio at all - the KB is clear that "Wan has none at any version," and getting sound-driven motion means bringing a model that does. HuMo is that model, running on the Wan stack, and this node packages the audio, the reference, and the timing into the embeds that drive it.

How it works

It's a multi-modal conditioning node. You give it audio, one or more reference images, and (usually) a Whisper model to turn the audio into features the model can align lips and expression to. It encodes all of that against your target frame count and resolution and produces image embeds the WanVideo sampler consumes. The audio_scale/audio_cfg_scale knobs decide how tightly the video obeys the sound.

The inputs that matter

The required inputs set the canvas; the optional ones carry the actual content, which is a little backwards but worth knowing:

  • num_frames (default 81), width (832), height (480) - the clip's size and length. HuMo's own examples were mostly short (3–4 seconds), so don't expect a monologue from one generation.
  • audio_scale (default 1) - how strongly the audio drives motion. The main expressiveness dial.
  • audio_cfg_scale (default 1) - guidance strength on the audio conditioning specifically.
  • audio_start_percent / audio_end_percent - the sampling window where audio conditioning applies.

The optional inputs are where you plug the real data: audio (AUDIO), reference_images (IMAGE) for the identity, whisper_model (WHISPERMODEL) for speech features, vae (WANVAE), and tiled_vae (bool) to save VRAM on the encode. In practice you need audio, a reference, and a Whisper model for this to do its job even though the schema marks them optional.

The output is image_embeds (WANVIDIMAGE_EMBEDS) for the sampler.

How to install it

Ships in Kijai's WanVideoWrapper. 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. This is a heavy path: you need the HuMo weights (ByteDance published them as bytedance-research/HuMo; Kijai mirrors compatible versions), a Whisper model for the audio features, and the Wan VAE - on top of a real GPU. HuMo is a 17B-class model, so it's not a light lift.

Common issues & troubleshooting

Lip sync is off or the face barely moves. Two usual causes: no Whisper model wired in (the audio never gets turned into usable features), or audio_scale too low. Make sure whisper_model is connected and push audio_scale up.

It wanders past a few seconds. HuMo's sweet spot is short clips - the launch discussion openly wondered whether it could exceed 3–4 seconds. For longer talking-head content the KB points at continuation/extension approaches rather than one giant num_frames.

VRAM blowout on encode. Turn on tiled_vae. Encoding reference images and audio features for a 17B model is not cheap, and tiling trades a little speed for a lot of headroom.

CategoryWanVideoWrapper

Inputs (12)

NameTypeDefaultDescription
num_framesINT81-1–10000The total frame count to generate.
widthINT83264–4096
heightINT48064–4096
audio_scaleFLOAT1.000–100Strength of the audio conditioning
audio_cfg_scaleFLOAT1.000–100When not 1.0, an extra model pass without audio conditioning is done: slower inference but more motion is allowed
audio_start_percentFLOAT0.000–1The percent of the video to start applying audio conditioning
audio_end_percentFLOAT1.000–1The percent of the video to stop applying audio conditioning
whisper_modeloptWHISPERMODEL
vaeoptWANVAE
reference_imagesoptIMAGEreference images for the humo model
audiooptAUDIO
tiled_vaeoptBOOLEANfalseUse tiled VAE encoding for reduced memory use

Outputs (1)

NameTypeDescription
image_embedsWANVIDIMAGE_EMBEDS