KlingAI Avatar 2.0 Pro
A talking head from one photo and an audio file
- image
- video
Feed it a photo of a person, feed it an audio file, and it returns video of that person talking - mouth synced to the audio, head moving naturally. That's the whole node. Kling AI Avatar 2.0 Pro is the quality tier of Kuaishou's talking-head model, and on Runware it's the rare video node with two required inputs: image and audio. No prompt needed, though one is there if you want it.
Why you'd reach for it
Digital humans are usually a local headache - a voice clone here, a face-animator there, a pile of custom nodes that all fight each other. Avatar 2.0 Pro collapses it into one cloud call: your still frame becomes the actor, your audio becomes the performance. For explainers, character dialogue, dubs, or just a fun way to make a portrait talk, it's dramatically simpler than the local alternative, which barely exists at this quality.
How it works
The two required inputs take different shapes, so pay attention. image is an IMAGE tensor - wire in Load Image (or any image output), and the pack base64s it to a PNG data URI. audio is a string: a URL, a local file path, or a Runware media UUID. Both ride to the Runware REST API via the runware SDK, and the synced clip returns as a native ComfyUI VIDEO object. The Pro tier is where lip-sync fidelity and head motion look genuinely natural.
Inputs that matter
image(IMAGE) - required. A clear, front-facing photo of the person; quality in, quality out.audio(STRING) - required. URL, path, or UUID of the speech/audio track.positivePrompt- optional. Nudge the style, expression, or delivery; the model works without it.numberResults(1–4) - variations, each a separate cost.outputFormat(MP4/WEBM/MOV),outputQuality(95).safetygroup - content-check toggles; off by default (model default).
Output: one video socket (VIDEO type).
Install and the API key
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart ComfyUI (or Runware via ComfyUI Manager). Key from the Runware dashboard → Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.
Gotchas
- The
audioinput is the trap: it's a string (URL/path/UUID), not an AUDIO tensor. Don't try to wire a sound node's output into it. - The
imageinput is the opposite - it must be a tensor, so Load Image first. - Faces: a well-lit, straight-on photo gives dramatically better sync than a side profile. Garbage in, uncanny valley out.
- It's paid, closed, and per-run: Kuaishou's model, rented by the clip, with the cost printed on the node title bar.
Avatar 2.0 Pro is the "wow, that actually worked" node - one photo, one audio file, a synced talking clip with zero local AI machinery in the way.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| audio | STRING | Audio input (UUID or URL). | |
| positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |