Nodes/ComfyUI-WanVideoWrapper/LongCat Avatar Whisper Embeds (v1.5)
ComfyUI Node Runs on cloud

LongCat Avatar Whisper Embeds (v1.5)

Turn audio into a talking-avatar drive signal for Wan

By kijai·Created about a year ago·Updated 3 months ago· 6,654
LongCat Avatar Whisper Embeds (v1.5)
  • whisper_model
  • audio_1
  • audio_2
  • audio_3
  • audio_4
  • ref_target_masks
  • multitalk_embeds
  • audio
  • num_frames
normalize_loudnesstrue
num_frames93
fps25.0
audio_scale1.00
audio_cfg_scale1.00
multi_audio_typepara

This is the front door to a talking-avatar workflow in Kijai's Wan wrapper. You feed it an audio clip (or several) and a Whisper model, and it hands back an embedding that tells the LongCat Avatar model how the face should move to match the sound. Think lip-sync plus head motion plus a bit of emotion, driven entirely off the waveform.

The name is a little dense, so unpack it: LongCat is the model family (LongCat is a very active line right now - the ComfyUI crowd has been all over it), Avatar is the audio-to-talking-head task, and Whisper Embeds means it uses OpenAI's Whisper speech model to turn your audio into features the video model can read. This node doesn't generate video. It builds the conditioning; the actual frames come out of the Wan sampler downstream.

How it works

Raw audio is useless to a diffusion model - it needs the content of the speech, not the bytes. So the node runs your clip through a Whisper model to get per-frame audio features, then packages them at your target frame rate and length. The output is typed MULTITALK_EMBEDS, which is the tell: this rides the same rails as the MultiTalk talking-head system, so it slots into that sampler path and can drive more than one speaker at once.

That multi-speaker bit is the interesting part. You get four audio slots, and multi_audio_type decides how they combine - para (parallel) treats them as separate people talking at the same time, while add layers them. Pair that with ref_target_masks to say which face each audio track belongs to, and you can animate two characters in one shot having a conversation.

The inputs and outputs that matter

  • whisper_model and audio_1 - the two required feeds. The Whisper model comes from a loader node in the pack; audio_1 is your speech clip.
  • num_frames (default 93) and fps (default 25) - set your clip length and rate here. These must line up with what you ask the sampler to render, or your lip-sync drifts. Note the output also returns num_frames, so you can wire it straight into the sampler and keep them locked together.
  • audio_scale / audio_cfg_scale - how hard the audio pushes the motion. Turn these up if the mouth is barely moving; ease off if the face is over-acting.
  • normalize_loudness (on by default) - evens out quiet vs loud audio so the drive strength is consistent. Leave it on unless you've already normalized.

Outputs are multitalk_embeds (into the LongCat/MultiTalk sampler), the processed audio (so you can mux it back onto the final video), and num_frames.

How to install it

Either route works. In ComfyUI Manager, search ComfyUI-WanVideoWrapper, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt

then restart. Beyond the node pack you need three model families on disk: the LongCat Avatar video weights (Kijai republishes Wan-adjacent models as fp8 under huggingface.co/Kijai/WanVideo_comfy - grab the fp8 build unless you have VRAM to burn), a Whisper model for the audio encoding, and the usual Wan VAE and text encoder. Drop them in the matching ComfyUI/models subfolders.

Common issues & troubleshooting

The node is red / "missing nodes." LongCat Avatar is recent, so an older copy of the wrapper simply won't have this class. Update the pack (Manager → update, or git pull in the folder) and restart - that's the single most common report on new WanVideoWrapper nodes.

Lip-sync drifts out over the clip. Almost always a frame-count or fps mismatch between this node and the sampler. Keep num_frames and fps identical across both, and remember Wan's native ceiling is 81 frames per pass - long audio means chunking, and sync error accumulates across chunks.

Mouth barely moves, or moves like a puppet. That's the audio_scale / audio_cfg_scale pair. Nudge them together rather than one at a time.

Two speakers, one talking mouth. You didn't route ref_target_masks, so the model can't tell which face owns which audio. Mask each subject and feed both.

CategoryWanVideoWrapper

Inputs (12)

NameTypeDefaultDescription
whisper_modelWHISPERMODEL
audio_1AUDIO
normalize_loudnessBOOLEANtrueNormalize audio loudness to -23 LUFS before encoding (matches the v1.5 reference pipeline)
num_framesINT931–10000Total frame count to generate; bounds how much audio is consumed
fpsFLOAT25.01–60Target video fps. LongCat-Video-Avatar-1.5 is trained at 25 fps.
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
multi_audio_typeCOMBOpara'para' overlays speakers in parallel (equal length); 'add' concatenates speakers sequentially with silence padding
audio_2optAUDIO
audio_3optAUDIO
audio_4optAUDIO
ref_target_masksoptMASKPer-speaker semantic mask(s) in pixel space, one per speaker

Outputs (3)

NameTypeDescription
multitalk_embedsMULTITALK_EMBEDS
audioAUDIO
num_framesINT