ComfyUI Node

KlingAI Lip-Sync

New audio for an existing video, done in the cloud

By Runware·Created 2 years ago·Updated about a month ago· 140
KlingAI Lip-Sync
    • video
    video
    audio
    numberResults1
    providerSettings.klingai.originalAudioVolume1.00
    safetyfalse
    safety.checkContentfalse
    safety.modefast
    providerSettings.klingai.soundVolume1.00
    ttlfalse
    ttl_value60
    outputFormatMP4
    outputQuality95

    Dubbing done right is a pain in the neck. This node is the shortcut: you give it an existing video and an audio track, and Kling re-animates the mouth to match the new audio. No required prompt, no reference images - just video and audio in, a re-synced VIDEO out. It's Kling AI Lip-Sync, and it's the node that turns "I need to change what this person says" from a reshoot into a single cloud call.

    Why you'd reach for it

    Local lip-sync tooling exists but it's fiddly - face mesh, audio conditioning, and a lot of nodes that occasionally melt down. This is one node doing the whole job on Runware's GPUs: keep the performance, replace the words. That covers localization, fixing a botched line, ADR, or just swapping in a different take of dialogue. The providerSettings give you real control over the mix, which is the part people usually miss.

    How it works

    Both required inputs are strings: video and audio each take a URL, a file path, or a Runware media UUID. They go to the Runware REST API via the runware SDK, Kling regenerates the mouth/lip motion to the new track, and the result returns as a native ComfyUI VIDEO. Because the inputs are references rather than tensors, you can point it at anything Runware can fetch - including clips you've already generated in the same graph.

    Inputs that matter

    • video (STRING) - required. The source clip (URL/path/UUID).
    • audio (STRING) - required. The new audio track (URL/path/UUID).
    • providerSettings.klingai.originalAudioVolume (0–2, default 1) - how much of the source clip's original sound survives. Set 0 to kill it completely.
    • providerSettings.klingai.soundVolume (0–2, default 1) - the volume of the newly generated audio. These two are how you balance old ambience against new speech.
    • numberResults (1–4) - variations, each a separate cost.
    • outputFormat (MP4/WEBM/MOV), outputQuality (95).
    • safety.mode - none / fast / full content checking.

    Output: one video socket (VIDEO type).

    Install and the API key

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

    Restart ComfyUI (or Runware via ComfyUI Manager). Key from the Runware dashboardSettings → Runware API key, RUNWARE_API_KEY, or runware auth login.

    Gotchas

    • The inputs are strings, not VIDEO/AUDIO tensors. Trying to wire a video node's output directly in will fail - export/reference it by path or URL first.
    • Head-turns and profile shots are where lip-sync degrades first; straight-on, talking-to-camera footage gives the cleanest result.
    • It's closed Kuaishou tech, paid per run, with the cost printed on the title bar. Loop with numberResults at 1.
    • If your source audio has useful ambience you want to keep, raise originalAudioVolume - the default blend is often better than going full mute.

    For anyone who's ever re-recorded a line and wished the mouth would just follow, this node is the fix that's actually good.

    CategoryRunware/Video/klingai

    Inputs (12)

    NameTypeDefaultDescription
    videoSTRINGVideo input (UUID or URL).
    audioSTRINGAudio input (UUID or URL).
    numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
    providerSettings.klingai.originalAudioVolumeoptFLOAT1.000–2Volume level of original audio from input video. 0 removes the original audio completely; higher values blend it with the new synchronized audio.
    safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
    safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
    safety.modeoptCOMBOfastSafety checking mode for video generation.
    providerSettings.klingai.soundVolumeoptFLOAT1.000–2Volume level of generated audio.
    ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
    ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
    outputFormatoptCOMBOMP4File format for the generated video.
    outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

    Outputs (1)

    NameTypeDescription
    videoVIDEO