FL Fal Kling AI Avatar
Make a talking avatar from an image and audio
- image
- audio
- frames
- audio
- video_url
- status_msg
Give it a portrait and an audio clip, get back a video of that face talking - lip-synced to the audio. That's the pitch of FL_Fal_Kling_AIAvatar, which wires ComfyUI up to Fal AI's Kling AI Avatar API. It's the node you reach for when you want a photo to speak: a narrator, a character delivering a line, a spokesperson from a single still. Like the rest of Fill-Nodes' Fal and API nodes, the actual generation happens in Fal's cloud, so you supply an API key and Fal supplies the compute (and the bill).
How it works
You feed it an image (the face) and an audio clip (what it should say), plus your Fal api_key. The node uploads both to Fal's Kling AI Avatar endpoint, which animates the face to lip-sync the audio, waits for the job to finish, downloads the resulting video, and extracts the frames back into ComfyUI as an IMAGE batch - along with the original audio so you can mux them back together downstream. An optional text prompt lets you nudge the performance (tone, movement) on top of the audio.
Because it returns frames plus audio, you slot the output straight into a video-combine node to get your final talking clip.
The inputs and outputs
api_key- your Fal AI key. Required, and it's what gets billed.image- the face to animate. A clear, front-facing portrait works best.audio- the speech the avatar lip-syncs to.prompt(optional) - a text nudge to refine the performance.seed- for reproducibility.nth_frame- subsample the returned frames (grab every 2nd/3rd/4th) if you don't need all of them.
Outputs: frames (the video as an IMAGE batch), audio (passed back through), video_url (the hosted result on Fal), and status_msg (check this when something goes sideways).
Installing it
Ships in the Fill-Nodes pack. ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart. The pack prints a big "Machine Delusions" banner on startup - cosmetic splash, not an error.
Where people get tripped up
- It's a paid Fal API call. No local GPU work, and every generation spends Fal credits. If you're iterating on a performance, that adds up - get your image and audio right before you start burning attempts.
- Errors surface in
status_msg, not as a crash. Bad key, no credits, or a rejected input shows up there. Read it first when nothing comes back. - Face quality in, face quality out. A blurry, tiny, or heavily-angled source portrait gives a worse lip-sync. Front-facing and reasonably high-res is the reliable input.
- It's a network job - slow is normal. Fal is generating on their side and you're waiting on their queue plus a download. A long pause isn't your machine hanging.
- Audio length drives clip length. The video is synced to the audio you give it, so trim or prepare your audio to the duration you actually want.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| image | IMAGE | — | |
| audio | AUDIO | — | |
| seed | INT | 00–999999 | — |
| nth_frame | INT | 11–4 | — |
| promptopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| audio | AUDIO | — |
| video_url | STRING | — |
| status_msg | STRING | — |