Nodes/ComfyUI-KokoroTTS-Zh/KokoroVoiceSelector
ComfyUI Node

KokoroVoiceSelector

100 preset Chinese voices, zero cloning — picking a speaker in Kokoro

By ruanjianlun·Created about a year ago·Updated about a year ago· 2
KokoroVoiceSelector
    • KOKORO_VOICE_SETTINGS
    voicezf_018
    silence_between_paragraphs5000
    join_sentencesFalse

    ComfyUI-KokoroTTS-Zh ships with 100 preset speakers, and this is the node that picks one. KokoroVoiceSelector is your casting director: it bundles a voice choice with the two pacing settings that shape how the audio comes out, and hands the whole bundle to the generator as a single KOKORO_VOICE_SETTINGS wire.

    What it is

    The voice menu is the entire list: zf_001 through zf_050 are female voices, zm_001 through zm_050 male - the "f" and "m" are in the id. Default is zf_018. There's no preview on the node, so auditioning is part of the job. Kokoro is real-time and cheap, so the move is to run a one-sentence test per candidate rather than guessing from the names - the names tell you nothing about the voice.

    Important: this is the whole casting call. Base Kokoro can't clone a voice - its training explicitly excluded voice clones, and nothing in this pack adds cloning on top. If you need a specific real person's voice, you're in the wrong corner of TTS. These 100 presets are the menu, and that's fine for narration, video voiceovers, and character voices you're happy to pick rather than mimic.

    The three inputs

    Three widgets, all worth knowing:

    • voice - the enum of 100, above. The one you'll touch most.
    • silence_between_paragraphs - default 5000, range 0–20000. The trap is the unit: it's samples at the output's 24kHz rate, not milliseconds. 5000 samples is about 0.2 seconds of dead air between paragraphs; 24000 would be a full second. Crank it for a slow, deliberate audiobook feel; drop it toward zero for snappy ad copy.
    • join_sentences - False or True. False lets the generator synthesize each sentence in a paragraph separately; True glues a paragraph's sentences into one chunk first. In practice this shifts how Kokoro handles internal pauses, so try both on a two-sentence paragraph and keep whichever doesn't sound rushed.

    The output

    The single output, KOKORO_VOICE_SETTINGS, feeds KokoroTTSGenerator's voice_settings input. Nothing else in the graph uses it. Because the settings are bundled here rather than scattered across the generator, swapping voices mid-project is a one-widget change: pick a new id, re-run, done. That's the nicest thing about the node.

    Installing

    Part of the same pack, installed once - ComfyUI Manager, search "ComfyUI-KokoroTTS-Zh", install, restart; or git clone https://github.com/ruanjianlun/ComfyUI-KokoroTTS-Zh into custom_nodes and pip install -r requirements.txt. The node appears under KokoroTTS alongside the loader, text input, and generator. If the Chinese pipeline throws a G2P error further up the chain, pip install "misaki[zh]>=0.8.1" is the usual fix.

    CategoryKokoroTTS

    Inputs (3)

    NameTypeDefaultDescription
    voiceCOMBOzf_018100 options: zf_001, zf_002, zf_003, zf_004, zf_005, zf_006, +94
    silence_between_paragraphsINT50000–20000
    join_sentencesCOMBOFalse2 options: False, True

    Outputs (1)

    NameTypeDescription
    KOKORO_VOICE_SETTINGSKOKORO_VOICE_SETTINGS