Nodes/Comfyui-zhenzhen/Concurrent Submit | Zhenzhen_lip_sync
ComfyUI Node

Concurrent Submit | Zhenzhen_lip_sync

Lip-sync your Kling videos in bulk instead of one agonizing render at a time

By T8mars·Created about a year ago·Updated 2 days ago· 740
Concurrent Submit | Zhenzhen_lip_sync
    • task
    video_id
    task_id
    modetext2video
    text
    voice_languagezh
    zh_voice阳光少年
    en_voiceSunny
    voice_speed1.0
    seed0
    api_key
    video_url
    audio_typefile
    audio_file
    audio_url
    skip_errorfalse

    Lip sync is the step that makes a talking-head video feel finished: you've got a Kling clip of a character, and you want their mouth to match a line of dialogue. Doing that one clip at a time in ComfyUI is soul-crushing because each run is a slow remote job. This node - the Concurrent Submit twin of Zhenzhen_lip_sync - is the answer to that specific pain: it hands every lip-sync job to the shared 10-worker video pool and lets you queue a whole batch of clips instead of blocking the graph on each one.

    How it works

    The underlying Comfly_lip_sync node does two things in one call: pick a voice, generate (or accept) the audio, then sync it onto a source video's face. There are two modes:

    • text2video (default) - you type the line in text, pick a voice, and the API synthesizes speech and drives the mouth.
    • audio2video - you bring your own audio and it just does the mouth sync.

    The inputs that matter

    • video_id / video_url / task_id - how you point at the source video: a previously generated video's ID, a URL, or a task ID from an earlier run. One of these is your "where's the face" answer.
    • mode - text2video / audio2video.
    • text - the line to speak (text2video only).
    • voice_language - zh or en.
    • zh_voice - 35 Chinese voices, and they're great: 阳光少年 (sunny boy), 温柔姐姐, 东北老铁, 川妹子... pick by character vibe.
    • en_voice - 27 English voices with friendlier names (Sunny, Sage, Ace, Peppy...).
    • voice_speed - 0.8 to 2.0. Bump past 1.3 and characters sound like they're on espresso; fine for comedy.
    • audio_file / audio_url / audio_type - for audio2video mode.
    • seed - note this one is a required INT here (0–2^31). It's the standard cache-control seed, same semantics as the rest of the pack.
    • api_key / skip_error - key for the main API route; skip_error disables fail-hard behavior.

    The concurrent flow

    Like every Submit node, output is a single task (COMFLY_VIDEO_FUTURE), not a video. Wire it (and your other lip-sync tasks) into ComflyConcurrent_Video_Await, which collects up to 10 video tasks, preserves slot order, and returns the finished clips plus a status JSON. If one clip in a batch fails and you don't want to lose the whole queue, either set the collector's failure_mode to placeholder or tick skip_error.

    Install and gotchas

    It ships with T8mars/Comfyui-zhenzhen - ComfyUI Manager → search "Comfyui-zhenzhen", or git clone https://github.com/T8mars/Comfyui-zhenzhen into custom_nodes and restart. Nothing heavy to download; it's all server-side. The usual Zhenzhen caveats: paid token, overseas servers (proxy needed from China), and voice output is a billed API call per clip, so a 10-clip batch is 10 billings.

    Categoryzhenzhen/Comfly_kling/Concurrent Submit

    Inputs (15)

    NameTypeDefaultDescription
    video_idSTRING
    task_idSTRING
    modeCOMBOtext2video2 options: text2video, audio2video
    textSTRING
    voice_languageCOMBOzh2 options: zh, en
    zh_voiceCOMBO阳光少年35 options: 阳光少年, 懂事小弟, 运动少年, 青春少女, 温柔小妹, 元气少女, +29
    en_voiceCOMBOSunny27 options: Sunny, Sage, Ace, Blossom, Peppy, Dove, +21
    voice_speedFLOAT1.00.8–2
    seedINT00–2147483647
    api_keyoptSTRING
    video_urloptSTRING
    audio_typeoptCOMBOfile2 options: file, url
    audio_fileoptSTRING
    audio_urloptSTRING
    skip_erroroptBOOLEANfalse开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。

    Outputs (1)

    NameTypeDescription
    taskCOMFLY_VIDEO_FUTURE