Kling Lip Sync
Kling lip-sync without leaving ComfyUI
- auth
- audio
- video
- video_file
- audio
- url
- task_id
You have a video of a person and you need their lips to match audio that wasn't recorded with it. That's the whole job, and it's one of the few places a cloud call genuinely beats the local stack - local audio-driven talking-head work exists (the Wan-S2V / Sonic family), but it wants its own models and its own VRAM. Kling does it server-side: you hand over a video and a voice, it renders a new clip where the mouth tracks the speech. KlingDirect_LipSync is the pack's main door to that.
There's a fork in this node's mode input, and picking the wrong side is the single most common mistake.
Two modes, two input sets
audio2video- the classic: you already have the audio. Feed it through theaudioinput (a ComfyUIAUDIOtensor, e.g. from a TTS node or an audio loader) or asaudio_urlif it's hosted somewhere. This mode ignorestext,voice_id, andvoice_speedentirely.text2video- you only have words. Type them intotext, pick avoice_id(defaultgirlfriend_4_speech02; the pack's Voice Selector node gives you a sane dropdown, or paste a clonedvoice_idfrom Voice Clone), and setvoice_speedif you want it faster or slower (0.5–2.0). Kling's TTS voices the text, then syncs the mouth to it in one job.
video_url is required in both cases - a public URL to the source video. If your video is a local file, that's what the pack's Raw File Loader / Video Loader outputs are for: they give you a path you can feed to a URL-based consumer. audio2video rejects a job if you give it neither audio nor audio_url, and text2video refuses to run on empty text - the node validates the mode before spending any credits, which is nicer than discovering it after the bill.
Outputs
The standard five, same shape as every video node in this pack: video (IMAGE batch of frames), video_file (downloaded path on disk), audio (the synced soundtrack as AUDIO), url (hosted result), and task_id - keep that one if you're chaining into Task Status or a later extend.
Install and what it needs
Part of the ComfyUI-Kling-Direct pack: ComfyUI Manager → search "Kling Direct" → install, or git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct into ComfyUI/custom_nodes and restart. No weights to download - everything runs on Kling's side. You need an access key + secret key from https://app.klingai.com/global/dev (KYC required), pasted into the Kling AI Authentication node (or set KLING_ACCESS_KEY / KLING_SECRET_KEY), and its auth output wired in. Watch the region: the pack defaults to the Singapore endpoint, fine for global accounts; China/US accounts want the Region Selector in front.
Where people get burned
- The audio2video/text2video mix-up described above - set the mode, then feed the inputs that mode wants.
- Unhosted media. The node takes a
video_url, not a tensor. A genuinely useful pairing: generate speech with Kling TTS, then hand itsaudio_filepath to the pack'sRaw File Loaderand let lip-sync consume it. If your video is local and you can't host it, theLip Sync (URLs)sibling and theCloud Uploadernode exist for exactly this plumbing. - Credits. Lip-sync is a video generation job - it's metered like one. Expect a multi-second wait while Kling renders, then a fresh clip with the original pacing plus the new mouth.
One more honest note: the pack's v2.1 changelog explicitly fixed a bug where voice_speed leaked into audio2video requests and could get rejected. If you're on a version older than 2.1 and an audio2video job mysteriously fails, update the pack first.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| video_url | STRING | URL of the source video for lip-sync. | |
| mode | COMBO | audio2video | audio2video syncs to provided audio; text2video generates speech from text via Kling voice. |
| audioopt | AUDIO | audio2video mode: ComfyUI audio to sync with the video. | |
| audio_urlopt | STRING | audio2video mode: alternative URL of audio. | |
| textopt | STRING | text2video mode: text to speak. Required if mode=text2video. | |
| voice_idopt | STRING | girlfriend_4_speech02 | text2video mode: Kling voice ID. Use Voice Selector node. |
| voice_speedopt | FLOAT | 1.00.5–2 | text2video mode: speech speed. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| video_file | STRING | — |
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |