KokoroVoiceSelector
100 preset Chinese voices, zero cloning — picking a speaker in Kokoro
- KOKORO_VOICE_SETTINGS
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| voice | COMBO | zf_018 | 100 options: zf_001, zf_002, zf_003, zf_004, zf_005, zf_006, +94 |
| silence_between_paragraphs | INT | 50000–20000 | — |
| join_sentences | COMBO | False | 2 options: False, True |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| KOKORO_VOICE_SETTINGS | KOKORO_VOICE_SETTINGS | — |