Nodes/ComfyUI-WanVideoWrapper/FantasyTalking Wav2Vec Embeds
ComfyUI Node Runs on cloud

FantasyTalking Wav2Vec Embeds

Drive a Wan talking head from an audio clip

By kijai·Created about a year ago·Updated 3 months ago· 6,654
FantasyTalking Wav2Vec Embeds
  • wav2vec_model
  • fantasytalking_model
  • audio
  • fantasytalking_embeds
num_frames81
fps23.0
audio_scale1.0
audio_cfg_scale1.0

Feed it audio, get a talking face. FantasyTalking is one of the audio-driven talking-head approaches for Wan - you give it a voice clip and it produces conditioning that makes a generated character's mouth (and, to a degree, face) move in sync with the speech. This node is the front end of that: it encodes your audio with Wav2Vec and packages it into the embeds the Wan sampler needs to do the lip-sync.

Talking-head generation is a whole active corner of the Wan ecosystem - MultiTalk, InfiniteTalk, FantasyTalking all compete here, and honest community reports put MultiTalk ahead on raw quality in a lot of cases. So treat FantasyTalking as one option among several rather than the default. It's worth a look if the others aren't landing for your footage or you want to compare.

How it works

Wav2Vec2 is a speech model that turns raw audio into a sequence of feature embeddings - a compact numeric representation of what's being said, frame by frame. This node runs your audio through the Wav2Vec model, then combines those features with the FantasyTalking model's weights to produce a FANTASYTALKING_EMBEDS object that conditions the Wan generation on the speech. The video model then animates the face to match.

The inputs that matter

  • wav2vec_model (WAV2VECMODEL, required) - the loaded Wav2Vec2 audio encoder, from its loader node.
  • fantasytalking_model (FANTASYTALKINGMODEL, required) - the FantasyTalking weights.
  • audio (AUDIO, required) - your speech clip. This is what drives the mouth.
  • num_frames (default 81) - how many frames to generate. Match it to your intended clip length (and remember Wan's 4n+1 frame math - 81 is the sane default).
  • fps (default 23) - frame rate the audio is aligned against. Get this consistent with your output fps or the sync will drift.
  • audio_scale (default 1) - how strongly the audio drives the motion. Turn it up for more pronounced mouth movement, down if it's over-articulating.
  • audio_cfg_scale (default 1) - guidance strength specifically for the audio conditioning.

The output is fantasytalking_embeds (FANTASYTALKING_EMBEDS) → into the Wan sampler/embeds chain.

How to install it

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. This one needs model downloads: a Wav2Vec2 model for the audio encoder plus the FantasyTalking model weights, placed where the wrapper's loader nodes expect them. Missing either is the usual reason the graph won't run.

Common issues & troubleshooting

Lip-sync drifts over the clip. Almost always an fps/frame-count mismatch. The audio is aligned to fps and sliced across num_frames - if your downstream video fps doesn't match, sync slides as the clip goes on. Keep fps, num_frames, and your output frame rate consistent.

Missing-node / missing-model errors. The talking-head nodes are the ones people most often can't get running on the first try, and it's usually the extra model files, not the code. Confirm both the Wav2Vec model and the FantasyTalking weights actually downloaded and sit in the right folder, and that your WanVideoWrapper install is current.

Mouth barely moves, or over-moves. That's the audio_scale knob - raise it for stronger articulation, lower it if the face is chewing scenery. And if FantasyTalking just isn't giving you clean results, it's fair to compare against MultiTalk, which several users find superior for this task.

CategoryWanVideoWrapper

Inputs (7)

NameTypeDefaultDescription
wav2vec_modelWAV2VECMODEL
fantasytalking_modelFANTASYTALKINGMODEL
audioAUDIO
num_framesINT811–1000
fpsFLOAT23.01–60
audio_scaleFLOAT1.00–100Strength of the audio conditioning
audio_cfg_scaleFLOAT1.00–100When not 1.0, an extra model pass without audio conditioning is done: slower inference but more motion is allowed

Outputs (1)

NameTypeDescription
fantasytalking_embedsFANTASYTALKING_EMBEDS