Nodes/comfyui-stillfront/SF WaveSpeed InfiniteTalk
ComfyUI Node

SF WaveSpeed InfiniteTalk

Talking-head video from one portrait and an audio file

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed InfiniteTalk
  • client
  • video_url
audio
image
resolution720p
enable_sync_modefalse
prompt
mask_image
seed-1
enable_base64_outputfalse

Give it a face and a voice, get back a video of that face talking in sync with the voice. That's the whole pitch of SF WaveSpeed InfiniteTalk, and it's genuinely good at it - accurate lip sync, natural head movement, facial expressions that track the audio's mood, and crucially, it can keep going for as long as you need rather than choking at a fixed clip length. It's the node you reach for when you want a character to actually deliver lines - narration, a singing performance, a virtual presenter - instead of just staring at you.

How it works

This is an audio-driven generation, which is a different shape from the image nodes in this pack. The input is a public URL for an audio file plus a public URL for a portrait image. The node posts both to WaveSpeed's infinitetalk endpoint, and the model animates the face to match the audio - lip movements, head tilt, expressions - while preserving the identity in your image. Because it's an audio-first pipeline, the output is a video URL string, not an IMAGE tensor. You'll typically feed that URL into a video loader or a download node to actually see the result. Note enable_sync_mode defaults to false here, unlike most of the pack's image nodes - the node submits the job and waits on the task either way, so don't read too much into it; just know a generated video isn't instant.

The inputs that matter

  • client - from SF WaveSpeed Client. Always the first wire.
  • audio - public URL of the audio file driving the lips.
  • image - public URL of the portrait to animate.
  • resolution - 480p or 720p, with the pricing spelled out in the tooltip ($0.15 vs $0.30 per 5 seconds). For longer speeches that difference adds up fast.
  • prompt (optional) - generation instructions that control scene, pose, and behavior while keeping audio sync. This is how you steer the performance - "looking down, then smiling at the end" - without breaking the lip-sync.
  • mask_image (optional) - if your image contains multiple people, mask the one to animate.
  • seed (optional, -1 = random) and enable_base64_output (optional).

Output: video_url (STRING).

Installing it

In the SF ComfyUI Nodes pack from Stillfront. ComfyUI Manager → "SF ComfyUI Nodes" → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt

Plus a WaveSpeed key via SF WaveSpeed Client, and a way to serve your audio/image files at public URLs.

Common issues

Two inputs, both URL strings, both must be publicly reachable - that's where almost every failure lives. A local file path won't work; you need whatever host you use for the "Upload Audio" / "Upload Image" nodes the tooltips reference, or any direct-link hosting. Second, pacing: longer clips cost more per 5-second block, so test the sync quality on a short clip before committing to a monologue. And if the video comes back as a URL you can't preview, you need a node that fetches and displays remote video - the URL output is a pointer, not the pixels themselves.

CategoryStillfront/WaveSpeed

Inputs (9)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
audioSTRINGAudio file URL for generating lip-synced output (connect from Upload Audio node)
imageSTRINGImage to animate (connect from Upload Image node)
resolutionCOMBO720pOutput video resolution (480p: $0.15 per 5 seconds, 720p: $0.3 per 5 seconds)
enable_sync_modeBOOLEANfalseWait for video generation to complete before returning
promptoptSTRINGOptional generation instructions to control scene, pose, and behavior while maintaining audio synchronization
mask_imageoptSTRINGOptional mask image URL to specify which person to animate (connect from Upload Image node)
seedoptINT-1-1–2147483647Random seed for reproducible results. -1 for random seed
enable_base64_outputoptBOOLEANfalseEnable base64 output format

Outputs (1)

NameTypeDescription
video_urlSTRING