Comfyui-Kling-Wrapper Lip Sync Text Input
Type a line, get a video of someone saying it
- input
This is the laziest possible way to make a Kling video talk: you don't record audio, you don't find a file - you just type the line. Lip Sync Text Input takes your text and a voice choice, runs it through Kling's TTS, and packages the resulting audio for the Lip Sync node. Type "this is the future of video," pick a voice, and a video of someone saying it comes out the other end.
It's the sibling of Lip Sync Audio Input: where that node takes your audio, this one makes the audio for you. Same output, same downstream chain, but the input surface is text instead of media.
The inputs
Four fields, and honestly only two of them need your attention:
text- the dialogue. Multiline, so whole paragraphs are fine. This is the thing the video will say.voice_id- a dropdown with 61 preset voices, named in Chinese with personality labels (sunshine boy, gentle older sister, energetic girl, that kind of thing). The names tell you the vibe; there's no English menu of "voice 1..61" to decode. Pick the one that fits the character.voice_language-zh(default) oren. Match it to your text; a Chinese text with English language selected will sound wrong.voice_speed- 0.8 to 2.0, default 1.0. Nudge up for a fast-talking character, down for a slower, more deliberate read.
That's the whole input surface. There's no audio upload here because the node is the audio generation.
How it works
Under the hood, the node calls /v1/audio/tts with your text and voice, grabs the returned audio, and hands the downstream Lip Sync node a COMFYUI_KLING_WRAPPER_LIPSYNC_INPUT object that already carries the audio ID and its duration. So you get the same input output as Lip Sync Audio Input, but with zero media handling on your side. The chain is:
Lip Sync Text Input → Lip Sync → (talking video out)
VHS_LoadVideo ────────┘
The Lip Sync node detects this came from the text path (it carries a text2video mode marker) and knows the audio is TTS-generated rather than a manual upload.
The honest limits
Preset voices only. Per the README, Kling's TTS endpoint rejects custom cloned voice IDs with "Voice id not found" - so if you want a specific person's voice, you can't type your way there. Clone the voice, then... well, the reliable route per the docs is to run the TTS/TTS-adjacent path or generate the audio and feed it through Lip Sync Audio Input instead. For everything a preset voice can cover, this node is the fastest path from idea to talking video.
Install
Same pack drill: ComfyUI Manager (search "Comfyui-Kling-Wrapper") or git clone https://github.com/magicwang1111/Comfyui-Kling-Wrapper.git into custom_nodes, pip install -r requirements.txt, restart, key in config.local.json. The TTS call is metered like every generation here.
Is it production tooling? For anything where the voice has to be a specific real person, no. For quickly animating dialogue in a character video with a decent synthetic voice, it's the node that turns a script into a first draft with one typed paragraph and a voice pick.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| voice_id | COMBO | 61 options: 阳光少年, 懂事小弟, 运动少年, 青春少女, 温柔小妹, 元气少女, +55 | |
| voice_language | COMBO | zh | 2 options: zh, en |
| voice_speed | FLOAT | 1.00.8–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| input | COMFYUI_KLING_WRAPPER_LIPSYNC_INPUT | — |