Nodes/Comfyui-Kling-Wrapper/Comfyui-Kling-Wrapper Custom Voice List Builder
ComfyUI Node

Comfyui-Kling-Wrapper Custom Voice List Builder

Give a Kling video several cloned voices to argue with

By magicwang1111·Created 5 months ago·Updated 18 days ago· 1
Comfyui-Kling-Wrapper Custom Voice List Builder
    • custom_voice_list
    • custom_voice_list_json
    voice_1
    voice_2
    voice_3
    voice_4
    extra_voice_ids

    Single-voice image-to-video is one thing: clone a voice, plug the ID into custom_voice_id, done. But what about a scene with two or three characters, each with their own cloned voice? That's what Custom Voice List Builder is for. It packs multiple voice IDs into a custom_voice_list that Kling's video generation can assign per-character through prompt markers.

    Structurally it's the audio twin of Element List Builder - same four-slots-plus-escape-hatch design, same "this node does the boring packing so the API doesn't have to be hand-typed" philosophy. It exists because Kling's native audio models (kling-v2-6 especially) can mix multiple voices in one clip, and the list is how you tell them apart.

    The inputs

    • voice_1 - required, takes a voice ID string (from Custom Voice Create/Query).
    • voice_2, voice_3, voice_4 - optional extra slots.
    • extra_voice_ids - a multiline or comma-separated list of more voice IDs, for when four slots aren't enough.

    Every slot takes a plain string voice ID, so you can wire from a Create/Query node or just type the ID. The node normalizes everything into a proper list and validates that at least one voice is present.

    Outputs

    • custom_voice_list - the typed list that feeds into Image2Video.custom_voice_list
    • custom_voice_list_json - the same list as a string, for inspection or text-based plumbing

    The workflow that makes it click

    The README spells out the multi-voice recipe for kling-v2-6:

    1. Clone your voices with Custom Voice Create.
    2. Connect their voice_id outputs into this builder's slots.
    3. Connect custom_voice_list into Image2Video's custom_voice_list.
    4. Set sound=on, pick a duration, and reference each voice in order with markers: <<<voice_1>>> in one character's dialogue, <<<voice_2>>> in the other's.

    The markers are ordered - voice_1 gets <<<voice_1>>>, voice_2 gets <<<voice_2>>>. Get the ordering wrong and Kling will happily assign your narrator's voice to the villain.

    The catches

    custom_voice_list, custom_voice_id, and voice_preset are mutually exclusive on Image2Video - pick exactly one. And per the README, cloned voices ride on kling-v2-6; the active API rejects the voice_list field for kling-v3. If a multi-voice run fails, check that your model actually accepts the list.

    Install

    Same pack, same 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. No models, just API credits.

    It's a tiny utility, but it's the difference between "two characters, one voice" and actual multi-character dialogue in a Kling clip. If you're cloning voices at all, you'll want it.

    CategoryComfyui-Kling-Wrapper

    Inputs (5)

    NameTypeDefaultDescription
    voice_1STRING
    voice_2optSTRING
    voice_3optSTRING
    voice_4optSTRING
    extra_voice_idsoptSTRING

    Outputs (2)

    NameTypeDescription
    custom_voice_listCOMFYUI_KLING_WRAPPER_CUSTOM_VOICE_LIST
    custom_voice_list_jsonSTRING