HuMo Embeds
Audio-driven talking-head video on Wan
- whisper_model
- vae
- reference_images
- audio
- image_embeds
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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| num_frames | INT | 81-1–10000 | The total frame count to generate. |
| width | INT | 83264–4096 | — |
| height | INT | 48064–4096 | — |
| audio_scale | FLOAT | 1.000–100 | Strength of the audio conditioning |
| audio_cfg_scale | FLOAT | 1.000–100 | When not 1.0, an extra model pass without audio conditioning is done: slower inference but more motion is allowed |
| audio_start_percent | FLOAT | 0.000–1 | The percent of the video to start applying audio conditioning |
| audio_end_percent | FLOAT | 1.000–1 | The percent of the video to stop applying audio conditioning |
| whisper_modelopt | WHISPERMODEL | — | |
| vaeopt | WANVAE | — | |
| reference_imagesopt | IMAGE | reference images for the humo model | |
| audioopt | AUDIO | — | |
| tiled_vaeopt | BOOLEAN | false | Use tiled VAE encoding for reduced memory use |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_EMBEDS | — |