Nodes/ComfyUI API Toolkit/Kling Lip Sync
ComfyUI Node

Kling Lip Sync

Make your AI video talk — audio-synced lips, no manual animation

By IxMxAMAR·Created 5 months ago·Updated 2 months ago· 1
Kling Lip Sync
  • auth
  • audio
  • video
  • video_file
  • audio
  • url
  • task_id
video_url
modeaudio2video
audio_url
text
voice_idgirlfriend_4_speech02
voice_speed1.0

The "talking head" problem, solved by one API call: you've got a video of a person and an audio track, and you want their lips to move in sync with the audio. Or you've got a video and no audio at all, and you want Kling to speak your text in a voice of your choosing and sync the lips to that. This node does both, which is why it's one of the more fun toys in the pack - you can caption a character, voice a meme, or turn a silent render into a scene where someone actually talks.

Two modes, set with the mode input:

  • audio2video (default) - feed the video plus an audio source and Kling re-animates the mouth to match. You can provide audio as a ComfyUI AUDIO input, or audio_url as an alternative. The node's video source is a video_url string.
  • text2video - no audio needed. Give it text, a voice_id (default girlfriend_4_speech02; use the pack's Voice Selector node to browse), and a voice_speed (0.5–2.0), and Kling synthesizes the speech and syncs the lips in one shot.

Both modes take the same video_url as the source video. Mechanically it's the pack's standard submit-and-poll: auth in, task created, polled to completion, then you get the full output set - video frames, video_file, the generated/attached audio, url, and task_id. The audio output is a real bonus if you ran text2video: you get the spoken track as a file you can reuse.

The quality ceiling is set by your source video. Clear, front-facing, well-lit faces with the mouth visible sync beautifully; profile shots and heavy angles degrade fast. It's the same physics as every lip-sync tool - the model needs to see the mouth.

Installing it

Bundled in ComfyUI-API-Toolkit. Manager: search "API Toolkit". Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
pip install -r requirements.txt

Restart ComfyUI. The audio handling uses soundfile (or a torchaudio fallback), so install the full -r requirements.txt rather than the bare Kling deps if you plan to feed ComfyUI AUDIO in.

Gotchas

The video must be at a URL for Kling to fetch it - that's what the video_url input is for, and it's where the Cloud Uploader node earns its place in a lip-sync workflow. If your video lives on disk, upload it first or grab its URL from a prior generation. Also: text2video costs a TTS call plus the lip-sync generation, so it bills more than audio2video - if you already have the voice line you want, use audio2video. And the content-policy note applies hard here: Kling will refuse to lip-sync into content it flags (error 1302), and there's no local bypass on a hosted model.

CategoryAPI Toolkit/Kling AI/Video

Inputs (8)

NameTypeDefaultDescription
authKLING_AUTH
video_urlSTRINGURL of the source video for lip-sync.
modeCOMBOaudio2videoaudio2video syncs to provided audio; text2video generates speech from text via Kling voice.
audiooptAUDIOaudio2video mode: ComfyUI audio to sync with the video.
audio_urloptSTRINGaudio2video mode: alternative URL of audio.
textoptSTRINGtext2video mode: text to speak. Required if mode=text2video.
voice_idoptSTRINGgirlfriend_4_speech02text2video mode: Kling voice ID. Use Voice Selector node.
voice_speedoptFLOAT1.00.5–2text2video mode: speech speed.

Outputs (5)

NameTypeDescription
videoIMAGE
video_fileSTRING
audioAUDIO
urlSTRING
task_idSTRING