Make a photo sing with an API
One portrait, one vocal track, one request. This is how we made a painted portrait sing two choruses of a song for a music video, what it cost, and the mistakes that cost us retries.
Models: kling-ai-avatar-v2
Price per image
| Size and quality | Kling AI Avatar v2 on KeelRouter | List price |
|---|---|---|
| standard | $0.065 | $0.0562 |
| pro | $0.13 | $0.115 |
Per image, before reference-image charges. List price: the same image at the model maker's published token rates. Checked 2026-11-12.
Which model, and why
We tried five ways to make the same portrait sing the same 5-second line: Kling AI Avatar v2 Standard and Pro, OmniHuman 1.5, VEED Fabric, and a video model with the song as reference audio. Kling AI Avatar v2 Standard gave the right mouth shapes, kept the face, and was among the cheapest. Pro looked the same to us at twice the price.
A video model with reference audio is the trap. Seedance 2.0 given our song as a reference sang its own garbled version of the line, so the mouth followed its singing, not ours. If you must keep your own recording, use a model that is driven by your audio, like this one.
The request
POST /v1/video/generations with an image_url and an audio_url, then poll GET /v1/video/generations?task_id= until state is completed. The video is as long as the audio, up to 300 seconds. duration is the audio length in whole seconds, rounded up: we hold that much from your balance when the job starts and charge what the provider actually bills when it finishes.
Calm singer, Standard
Standard, $0.065 a second. Made on KeelRouter on 2026-11-08: a 5-second chorus took about 4 minutes and was billed $0.33.

POST /v1/video/generations
{
"model": "kling-ai-avatar-v2",
"image_url": "https://example.com/portrait.jpg",
"audio_url": "https://example.com/chorus-vocals.mp3",
"prompt": "A tired young woman sings quietly to the camera with a calm, serious, slightly sad expression. No smile. Small natural lip and jaw movement, almost no head movement.",
"duration": 6
}Pro tier
Same fields plus mode. $0.13 a second.
POST /v1/video/generations
{
"model": "kling-ai-avatar-v2",
"mode": "pro",
"image_url": "https://example.com/portrait.jpg",
"audio_url": "https://example.com/chorus-vocals.mp3",
"duration": 6
}The prompt sets the face
The audio drives the mouth; the prompt drives everything else. Our first prompt said she sings with confidence, and our character, whose life was not a happy one, grinned through the whole chorus. The model even added fake captions. Saying calm, serious, slightly sad, no smile fixed both. Write the mood you want in plain words, and say no smile if you mean it.
Prepare the audio
Send mp3 or wav. Some audio models reject m4a outright.
Cut the clip to exactly the lines you want sung, and silence everything before the first word and after the last. With silence there, the mouth stays shut until she starts; with the backing track there, it moves to the drums.
Make one clip per line, even when a chorus repeats. We reused the first chorus for the second and it was visibly out of sync: the singer phrased the same words differently the second time.
FAQ
- How much does a singing clip cost?
- Standard is $0.065 a second of output and Pro $0.13. A 30-second verse on Standard is about $1.9500000000000002. You pay what the provider bills for the actual length, not the duration you send.
- Can I use a drawing or an AI-generated face?
- Yes. Our test used a painted portrait made with an image model. A clear, front-facing face works best.
- Does it sing in other languages?
- The mouth follows the sounds in the audio, so any language works. Check the first seconds of a long song before paying for all of it.
More guides
KeelRouter is an independent service and is not affiliated with Kuaishou. Model names are trademarks of their owners, used here only to name the model a request runs on.