Kling AI Lip Sync (2026): Setup, Fixes and API Code
Unicorn API Team · · 11 min read
Kling AI lip sync is the feature inside Kling’s video app that re-animates a face so its mouth matches a voice track you supply, either an audio file you upload or speech generated from text. It is one of the quickest ways to make a generated character talk, and it is also the source of a lot of uncanny, out-of-step mouths. This guide covers how the feature works, how to get clean results, why it fails, how it compares with other AI lip sync tools, and how to build the same kind of talking video through an API when you need to make many of them.
What is Kling AI lip sync?
Lip sync, in AI video, means taking a face and an audio track and generating mouth, jaw and nearby facial movement that lines up with the sounds being spoken. The model has to learn which mouth shapes go with which sounds (these shapes are called visemes) and then blend them into the existing face without breaking its identity, lighting or head movement.
Kling AI lip sync works on video. You generate a clip in Kling or upload one, then add audio and let the model rewrite the mouth area to match. That is different from audio-driven avatar models, which start from a single still image and generate the whole performance, including head motion and expression, from the audio. Both approaches end in a “talking” video, but they suit different jobs:
- Video-to-video lip sync (what Kling’s feature does): you already have a shot you like and only want the mouth to say something new. Body movement and camera stay as they were.
- Image-plus-audio generation: you have a portrait and a voice track and want the model to produce the whole clip. This is the usual route for avatars, explainers and UGC-style ads, and it is the approach most APIs expose.
Creators use Kling AI lip sync for short films, dubbing a character into another language, music clips, talking pets and product spokespeople. The common thread is that the face already exists and the audio arrives separately, often from a voice tool.
How to use Kling AI lip sync in the Kling app
The interface changes between versions, but the flow has stayed roughly the same:
- Get a source clip. Generate a video in Kling (text-to-video or image-to-video) or upload your own. Pick a shot where the face is clearly visible and roughly facing the camera.
- Open the lip sync option on that clip. In Kling it sits alongside the other editing actions for a finished video.
- Add audio. Either upload a local audio file or type a script and use the built-in text-to-speech voices. Many people generate the voice in a dedicated voice tool first, because it gives more control over pacing and emotion.
- Trim the audio to the clip. The voice should fit inside the length of the video. If the audio is longer, shorten the script or generate a longer source clip.
- Generate and review. Watch the result at full size, then again with the sound off, focusing on the mouth. Silent playback makes timing errors much easier to spot.
A practical tip from the people who use Kling AI lip sync heavily: write the script before you generate the source clip. If you know the line takes about six seconds to say, you can generate a six-second shot with a calm, mostly still face instead of fitting dialogue onto a clip where the character turns away halfway through.
Text-to-speech or uploaded audio?
Built-in text-to-speech is convenient for drafts. Uploaded audio wins for anything you will publish, because you can choose a better voice, direct the delivery, clean up breaths and cut dead air. If you are pricing a voice pipeline, our breakdown of the ElevenLabs API price shows how per-character voice costs add up.

Why AI lip sync looks wrong (and how to fix it)
Most complaints about Kling AI lip sync come down to a handful of causes. Nearly all of them are about the inputs rather than the model.
The face is not usable
Lip sync models need to see the mouth. Side profiles, faces that fill only a small part of the frame, heavy motion blur, hands or microphones in front of the mouth, and beards or masks that hide the lips all make results worse. If the mouth smears or the teeth look like a single white block, regenerate the source shot with the face larger, front-facing and evenly lit.
The audio is dirty
Background music, room echo, crosstalk and reverb all give the model sounds to chase that are not speech. The mouth then moves during the music or mumbles during a reverb tail. Run the voice through noise reduction, cut long silences, and keep levels consistent. For songs, separate the lead vocal from the instrumental first, lip sync to the vocal alone, then put the full mix back over the finished clip in your editor.
The clip is too long
AI video models in general tend to lose consistency over long scenes: identity drifts, motion gets strange and lip timing slips. Keep each lip-synced clip to a sentence or two and cut between them, the way an editor cuts between takes. Shorter clips are also cheaper to redo when one goes wrong.
The edit broke the timing
Frame rate is the number of still images shown per second. If you drop a generated clip into a timeline set to a different frame rate, the editor has to duplicate or drop frames, and the mouth can end up a frame or two off the audio, which viewers notice on hard consonants like “p” and “b”. Match your project to the clip’s frame rate, and do not re-time the audio after syncing.
Multiple faces in shot
When two people are visible, the model may animate the wrong one, or both. Use a single-face shot for each speaker and cut between them.
Expression does not match the voice
A shouted line on a calm face looks fake even when the timing is perfect. Generate the source clip with an expression that fits the delivery, or use an image-plus-audio model that generates expression from the audio itself.
Kling AI lip sync vs other AI lip sync tools
There are now plenty of AI lip sync tools, and they split into three groups: built-in features inside video generators, avatar platforms, and API models you call from code. The right one depends on where your footage starts and how many videos you need.
| Option | Starts from | Best for | Trade-off |
|---|---|---|---|
| Kling AI lip sync (in the Kling app) | An existing video plus audio or text | Making a Kling-generated character speak without leaving the app | Manual, clip by clip; tied to Kling’s own credits |
| CapCut lip sync | A video in the CapCut editor | Quick social edits where you are already editing in CapCut | Less control over the generation itself |
| HeyGen AI lip sync and avatars | A stock or custom avatar plus a script | Presenter-style training and marketing videos | Avatar look is more templated than a custom generated character |
| OmniHuman 1.5 via Unicorn API | A still image plus an audio file | Scripted pipelines: avatars, explainers, UGC-style ads at volume | Billed per second of output; you write a little code |
If you are searching for an “AI lip sync video generator free”, be realistic: generation runs on expensive GPUs, so free tiers usually mean watermarks, low resolution, queues or a small daily allowance. They are fine for testing whether a shot works. For anything you ship, the useful questions are what each finished second costs and whether you can see that cost before you press generate.
Where Unicorn API fits: it is one API key and one bill across many models. You can generate the scene with one model and the talking shot with another, under the same credit balance, rather than juggling a subscription per tool.

Lip sync through an API: an image and audio to talking video
When you need tens or hundreds of talking clips, clicking through an app stops scaling. The API route on Unicorn API for audio-driven lip sync is OmniHuman 1.5, a ByteDance video model that takes a portrait image, an audio track and an optional prompt. Its input fields are image_url, audio_url, prompt, seed, mask_url, pe_fast_mode and output_resolution; the API documentation covers the optional ones.
Media models on Unicorn API are asynchronous: you create a job, poll it, then download the result. The flow is:
- Create an API key on the keys page and export it as
UNICORN_API_KEY. - Host your portrait image and audio file at public URLs.
- Optionally check the exact price with
POST /v1/models/price. - Create the job with
POST /v1/jobs. - Poll
GET /v1/jobs/{id}untilstatusis"succeeded", then readoutputs[0].url.
Quick test with curl
curl -X POST https://api.unicornapi.net/v1/jobs \
-H "Authorization: Bearer $UNICORN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "omnihuman-1-5",
"input": {
"prompt": "A friendly presenter speaking to camera in a bright studio, natural head movement",
"image_url": "https://example.com/presenter.png",
"audio_url": "https://example.com/line-01.mp3"
}
}'
Complete Python script
import os
import time
import requests
API = "https://api.unicornapi.net"
HEADERS = {
"Authorization": f"Bearer {os.environ['UNICORN_API_KEY']}",
"Content-Type": "application/json",
}
body = {
"model": "omnihuman-1-5",
"input": {
"prompt": "A friendly presenter speaking to camera in a bright studio, natural head movement",
"image_url": "https://example.com/presenter.png",
"audio_url": "https://example.com/line-01.mp3",
},
}
# 1. Check the price before spending credits
price = requests.post(f"{API}/v1/models/price", json=body, headers=HEADERS)
price.raise_for_status()
print("Price:", price.json())
# 2. Create the job
resp = requests.post(f"{API}/v1/jobs", json=body, headers=HEADERS)
resp.raise_for_status()
job = resp.json()
job_id = job["id"]
print("Job created:", job_id)
# 3. Poll until it finishes
deadline = time.time() + 15 * 60
while True:
job = requests.get(f"{API}/v1/jobs/{job_id}", headers=HEADERS).json()
status = job["status"]
if status == "succeeded":
break
if status in {"failed", "canceled", "cancelled"}:
raise RuntimeError(f"Job {job_id} ended with status {status}: {job}")
if time.time() > deadline:
raise TimeoutError(f"Job {job_id} still {status} after 15 minutes")
time.sleep(5)
# 4. Download the video
video_url = job["outputs"][0]["url"]
with open("line-01.mp4", "wb") as f:
f.write(requests.get(video_url).content)
print("Saved line-01.mp4 from", video_url)
If you would rather try it before writing code, the video playground runs the same models in the browser. If you work in Cursor or Claude Code, the agents setup lets your coding assistant call these models directly.
Making the scene shots too
A talking head alone gets dull. Many pipelines pair the lip-synced shot with cutaways made by other models: Kling 4.0 Keyframe To Video for controlled shots between a first and last frame, Grok Imagine Video 1.5 for cheap image-to-video B-roll from 1 to 15 seconds, Grok Imagine Video 1.0 for longer clips up to 30 seconds, and PixVerse V6 Max Image To Video, which can also generate its own audio. None of those take your voice file as input, so keep dialogue on the lip sync model and use them for everything around it. The full list is in the model catalog.
What AI lip sync costs per clip
OmniHuman 1.5 costs 27 credits per second of video, rounded up to whole credits. Since the clip is driven by your audio, plan on the video being about as long as the voice track, which means trimming silence is the simplest way to control cost. Credits cost $0.01 each on monthly plans (Starter $25, Creator $50, Studio $100, Pro $200 per month) and $0.015 each as top-ups, which never expire. Details are on the pricing page.
| Clip length | Credits | Cost on a monthly plan | Cost with top-up credits |
|---|---|---|---|
| 5 seconds | 135 | $1.35 | $2.03 |
| 10 seconds | 270 | $2.70 | $4.05 |
| 20 seconds | 540 | $5.40 | $8.10 |
| 30 seconds | 810 | $8.10 | $12.15 |
| 60 seconds | 1,620 | $16.20 | $24.30 |
For comparison, a 5-second 720p B-roll shot on Grok Imagine Video 1.5 is 22.5 credits, and a 5-second 720p shot on Kling 4.0 Keyframe To Video is 28.5 credits per second, so 143 credits after rounding. Talking shots are the expensive part of a video, which is another reason to keep them tight and cut to cheaper cutaways.
Worked example: a 30-second talking explainer
Say you want a 30-second product explainer with a presenter, the kind of thing people usually make with Kling AI lip sync or an avatar tool, but you want to script it so you can make ten language versions.
- Script and voice. Write three short lines of about 6 seconds each, about 18 seconds of speech in total. Generate each line as its own audio file and trim leading and trailing silence.
- Portrait. Create or photograph one front-facing, evenly lit portrait with the mouth closed and unobstructed. Use the same image for all three lines so the presenter stays consistent.
- Talking shots. Run OmniHuman 1.5 once per line with the script above, looping over the three audio URLs. Three 6-second clips cost 3 × 162 = 486 credits.
- Cutaways. Make two 6-second 720p product shots with Grok Imagine Video 1.5 at 27 credits each, 54 credits in total.
- Edit. Assemble at the clips’ native frame rate: line 1, cutaway, line 2, cutaway, line 3. Add music under the voice after syncing, never before.
Total: about 540 credits, roughly $5.40 on a monthly plan or $8.10 with top-ups, for one language version of a 30-second video. Each extra language reuses the portrait and cutaways, so it only costs the three talking shots again: 486 credits. Check every job’s price with the price endpoint first and you will never be surprised by the bill.
Mistakes to avoid in this kind of pipeline
- One long audio file. A single 18-second take is harder to fix than three 6-second ones. If one line drifts, you redo 6 seconds, not 18.
- Music baked into the voice track. The model will animate the music. Keep voice and music as separate files until the final mix.
- A smiling, open-mouth portrait. A neutral, closed-mouth start gives the model the most room to form sounds.
- Re-timing audio in the editor. Speeding up or slowing down a voice after syncing breaks the alignment you paid for.
- Skipping silent review. Watch each clip muted once. Timing slips that sound fine are obvious on screen.
Choosing between Kling AI lip sync and an API workflow
Use Kling AI lip sync when you are already generating in Kling, you have a shot you love, and you need a character to say a few lines. It keeps the original performance and camera, and the app handles everything in one place.
Use an API workflow when the work repeats: many languages, many products, many scripts, or videos assembled by code or an agent. Image-plus-audio generation with OmniHuman 1.5 lets you keep one portrait, swap the audio, and know the cost of each clip before it runs. Either way, the rules that make lip sync video AI look real are the same: a clear face, clean audio, short clips and an edit that leaves the timing alone.
Frequently asked questions
Is Kling AI lip sync free?
Kling runs on its own credit system inside its app, and its free allowances and plan prices change over time, so check the app for current terms. If you want predictable costs through an API instead, OmniHuman 1.5 on Unicorn API is billed at 27 credits per second of video, and you can get the exact price of any request before running it.
Can Kling AI lip sync work with songs?
Yes, but songs are harder than speech. Backing vocals, reverb and instruments confuse the model, so the mouth chases sounds that are not the lead singer. Split the vocal stem from the music first, lip sync to the isolated vocal, then lay the full mix back over the finished clip in your editor. Short sections of a song also hold up better than one long take.
Why does my AI lip sync look off or drift out of sync?
The usual causes are a face that is turned, small or partly covered, noisy audio, clips that run too long, and frame rate changes during editing. Use a front-facing face that fills a good part of the frame, clean the audio, keep each clip to a sentence or two, and export your final edit at the same frame rate as the generated clip.
Can I do Kling AI lip sync through an API?
The audio-driven lip-sync route on Unicorn API covered here is OmniHuman 1.5 by ByteDance. You send a portrait image URL, an audio URL and an optional prompt to POST /v1/jobs, poll the job until its status is succeeded, then download the video from the first output URL. Kling 4.0 Keyframe To Video is also available for scene shots without speech.
How much does API lip sync cost per video?
OmniHuman 1.5 costs 27 credits per second, rounded up to whole credits. A 10-second clip is 270 credits, which is $2.70 on a monthly plan where credits cost $0.01 each, or $4.05 with top-up credits at $0.015 each. Top-ups never expire. Trimming silence from your audio is the easiest way to cut cost.
What is the best AI lip sync tool?
It depends on your source. If you already work inside Kling, its built-in lip sync is the shortest path. For presenter-style videos made in a browser, avatar platforms such as HeyGen are popular. For automated pipelines that turn a still portrait and a voice track into video, an API model such as OmniHuman 1.5 fits better because you can script it.