FantasyTalking Wav2Vec Embeds
Drive a Wan talking head from an audio clip
- wav2vec_model
- fantasytalking_model
- audio
- fantasytalking_embeds
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's4n+1frame 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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| wav2vec_model | WAV2VECMODEL | — | |
| fantasytalking_model | FANTASYTALKINGMODEL | — | |
| audio | AUDIO | — | |
| num_frames | INT | 811–1000 | — |
| fps | FLOAT | 23.01–60 | — |
| audio_scale | FLOAT | 1.00–100 | Strength of the audio conditioning |
| audio_cfg_scale | FLOAT | 1.00–100 | When not 1.0, an extra model pass without audio conditioning is done: slower inference but more motion is allowed |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| fantasytalking_embeds | FANTASYTALKING_EMBEDS | — |