ComfyUI Node

Kling Lip Sync

Kling lip-sync without leaving ComfyUI

By IxMxAMAR·Created 5 months ago·Updated 2 months ago· 4
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

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 the audio input (a ComfyUI AUDIO tensor, e.g. from a TTS node or an audio loader) or as audio_url if it's hosted somewhere. This mode ignores text, voice_id, and voice_speed entirely.
  • text2video - you only have words. Type them into text, pick a voice_id (default girlfriend_4_speech02; the pack's Voice Selector node gives you a sane dropdown, or paste a cloned voice_id from Voice Clone), and set voice_speed if 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 its audio_file path to the pack's Raw File Loader and let lip-sync consume it. If your video is local and you can't host it, the Lip Sync (URLs) sibling and the Cloud Uploader node 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.

CategoryKling 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