Nodes/ComfyUI/WanInfiniteTalkToVideo
ComfyUI Node Runs on cloud

WanInfiniteTalkToVideo

Make a person talk forever from one photo and one audio file

By Comfy-Org·Created 4 years ago·Updated about 17 hours ago· 130,663
WanInfiniteTalkToVideo
  • model
  • model_patch
  • positive
  • negative
  • vae
  • audio_encoder_output_1
  • clip_vision_output
  • start_image
  • previous_frames
  • model
  • positive
  • negative
  • latent
  • trim_image
mode
width832
height480
length81
motion_frame_count9
audio_scale1.00

This is the node that makes a face talk in sync with an audio track - lips, head movement, expression - for as long as the audio lasts, and then keeps going past it. InfiniteTalk is MeiGen-AI's model (the same team behind MultiTalk), built on Wan 2.1, and while it can do the obvious "photo + voice clip = talking head," the fun version is feeding it previous frames and letting it extend a clip until you run out of patience. It's a conditioning node, like every Wan video node: it doesn't sample anything. It hands you a patched model, conditioning, and a latent, and a KSampler does the actual denoising.

How it works

InfiniteTalk patches a base Wan image-to-video model. You give it three pieces: the base checkpoint, the InfiniteTalk model patch (the file that contains the audio projection layers - loaded separately as a MODEL_PATCH), and the output of an audio encoder. The node projects the encoded audio into the model via the patch's audio projection network, then hooks cross-attention so the audio literally steers what the mouth and head do during sampling.

The interesting part is the two-speaker mode. Switch mode to two_speakers and the node grows a second audio input plus two masks - you paint a mask over each speaker's face in the frame, and the model routes each voice to the right region via a cross-attention target mask. Two people, two voices, one conversation. That's the party trick, and it's the reason this node exists at all.

For long generations you feed previous_frames (the last N frames of the video you already made) and set motion_frame_count to how many of those to use as motion context. That's the "infinite" in the name - you loop, chaining chunks. The trim_image output tells you how many frames to slice off the front of the new chunk so chunks butt together cleanly.

The inputs that matter

  • model - a base Wan 2.1 I2V checkpoint (the 480P variant is the officially paired one).
  • model_patch - the InfiniteTalk weights, loaded from models/model_patches. This is the file everyone forgets; without it the node produces audio-free Wan video and you'll wonder what you're missing.
  • audio_encoder_output_1 - feed this from AudioEncoderEncode, fed by a loaded audio encoder. InfiniteTalk uses a wav2vec2-based encoder (the Chinese wav2vec2 base, in models/audio_encoders).
  • positive / negative - text prompts describing the scene, same as any Wan I2V.
  • start_image - the first frame. Omit it and you get a blank latent.
  • audio_scale - how hard the audio pulls on the generation. Default 1.0; negative values exist but are an experiment.
  • length - frames per chunk (default 81, the Wan-native clip).

Outputs: the patched model, positive, negative, and latent all go into a KSampler; trim_image is an int for your chunk-joining logic.

Getting it

It ships with ComfyUI core - nothing to install, just update. Native support landed in January 2026 (PR #10179). Model files to grab: the Wan 2.1 I2V checkpoint, the InfiniteTalk patch from MeiGen-AI/InfiniteTalk into models/model_patches, and the wav2vec2 audio encoder into models/audio_encoders. All Apache 2.0 and ungated.

Common issues

The error you'll actually hit is Not enough previous frames provided - you fed fewer previous_frames than motion_frame_count. Feed the whole tail, not a couple of frames. Two-speaker mode is strict: pick it and the node demands both masks plus the second audio, and it raises if you give a second audio without masks. And budget your time: long takes are slow, and the community's first runs clocked 30+ minutes for extended clips even with distilled-step LoRAs. Test on a short chunk first.

Categorymodel/conditioning/wan/infinite talk

Inputs (15)

NameTypeDefaultDescription
modeCOMBO2 options: [object Object], [object Object]
modelMODEL
model_patchMODEL_PATCH
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–16384
heightINT48016–16384
lengthINT811–16384
audio_encoder_output_1AUDIO_ENCODER_OUTPUT
motion_frame_countINT91–33Number of previous frames to use as motion context.
audio_scaleFLOAT1.00-10–10
clip_vision_outputoptCLIP_VISION_OUTPUT
start_imageoptIMAGE
previous_framesoptIMAGE

Outputs (5)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_imageINT