Comfyui-Kling-Wrapper Lip Sync Audio Input
Feed real audio into Kling lip-sync
- audio
- input
Lip Sync Audio Input is the front half of the pack's talking-head pipeline: it's the node that turns "I have an audio file of someone talking" into the typed object that the Lip Sync node knows how to chew on. If you've recorded your own voice, downloaded a TTS file, or pulled dialogue from anywhere else, this is where it enters the workflow.
It's a thin node - one output, no generation happens here - but it exists to solve a real problem: Kling's lip-sync API needs audio in a specific shape, with timing that the API can't always infer. This node does that packaging, and it's the difference between "connect a wire" and "paste a URL and pray."
The audio inputs
Exactly one of these, matching the pack's general "pick your input method" pattern:
audio- a ComfyUIAUDIOconnection. This is the nice one: when audio comes in as a ComfyUI object, its duration is supplied automatically, so you don't have to do timing math.audio_id- a Kling audio ID from another node in the pack (e.g. a TTS result).audio_file- a local file path.audio_url- a public http(s) URL.
The timing fields
Two integers that only matter when duration can't be inferred - i.e. when you're using audio_id, audio_file, or audio_url:
sound_start_time_ms- where in the audio the speech begins (default 0).sound_end_time_ms- where it ends. The README is explicit: for URL, file, and ID inputs you must providesound_end_time_mswhen the duration can't be inferred, because the downstream Lip Sync node needs a 2–60 second clip and will reject anything wheresound_end_time_msdoesn't exceedsound_start_time_ms.
If you connect ComfyUI audio (say, from a Load Audio node), the node knows the duration and you can leave both at 0.
Output and wiring
One output: input, of type COMFYUI_KLING_WRAPPER_LIPSYNC_INPUT. That connects straight into the Lip Sync node's required input slot. So the canonical chain is:
Load Audio → Lip Sync Audio Input → Lip Sync → (video out)
VHS_LoadVideo ────────────┘
The README spells out the Video Helper Suite variant: connect LoadAudio → Lip Sync Audio Input.audio, then VHS_LoadVideo.IMAGE → Lip Sync.video_frames and VHS_LoadVideo.video_info → Lip Sync.video_info.
Install and gotchas
Same pack install as everything else: ComfyUI Manager (search "Comfyui-Kling-Wrapper") or clone into custom_nodes + pip install -r requirements.txt + restart, key in config.local.json.
The trap is forgetting the timing rule: URL/file/ID inputs need sound_end_time_ms, ComfyUI audio doesn't. If your lip-sync keeps erroring with a "sound_end_time_ms must be greater than sound_start_time_ms" message, that's the cause. The fix is either to fill in the end time or switch to feeding a real AUDIO connection so the duration comes along for free. It's a quiet node, but every talking video you make from real audio passes through it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audioopt | AUDIO | — | |
| audio_idopt | STRING | — | |
| audio_fileopt | STRING | — | |
| audio_urlopt | STRING | — | |
| sound_start_time_msopt | INT | 00–60000 | — |
| sound_end_time_msopt | INT | 00–60000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| input | COMFYUI_KLING_WRAPPER_LIPSYNC_INPUT | — |