Kokoro Speaker Combiner
Blend two TTS voices into one you actually like
- speaker_a
- speaker_b
- speaker
None of the 54 stock Kokoro voices feel quite right? This is the node nobody expects a TTS pack to have. KokoroSpeakerCombiner takes two speakers and blends them into a third - a new voice that isn't quite either parent. If you want a narrator who sounds like a warmer af_sarah, or a male voice with a hint of the female lead, this is the knob you've been looking for.
It slots into the stavsap/comfyui-kokoro chain right between the speaker picker and the generator: Kokoro Speaker (voice A) and Kokoro Speaker (voice B) both feed this node, and its output feeds Kokoro Generator.
How it works
This is a math node, not a model node. A Kokoro speaker is a voice-style embedding - a vector. The combiner just takes the weighted average of the two vectors: speaker_a × weight + speaker_b × (1 - weight). No inference, no model reload, effectively instant. That's why it's so cheap to play with: you can dial weights all day and never wait on a queue.
The weight field is the fraction of speaker_a - the README spells it out: a weight of 0.7 means 70% speaker_a and 30% speaker_b. It's a float from 0 to 1, default 0.5, with a 0.05 step, so you can sweep a full blend in fine increments.
The inputs that matter
Three in, one out:
- speaker_a / speaker_b - both must be
KOKORO_SPEAKERtype, i.e. wired from Kokoro Speaker nodes. You can't type voice names in. - weight - 0 to 1, default 0.5. Strength of speaker_a. 1.0 is just speaker_a; 0.0 is just speaker_b.
- speaker - a new
KOKORO_SPEAKER, straight into the generator.
Two tips from people who actually run these. First, it's an embedding average, not a professional voice-morphing pipeline - blend a male and female voice at exactly 50/50 and the result can sound uncanny or just muddled, so start near one parent and nudge. Second, because it's instant, batch-test weights: run several combiner values into the same generator and pick the one that reads naturally.
Installing it
Same pack, same story as its siblings. ComfyUI Manager → search "Kokoro" by stavsap, or:
cd ComfyUI/custom_nodes
git clone https://github.com/stavsap/comfyui-kokoro.git
cd comfyui-kokoro
pip install -r requirements.txt
Restart, done. Requirements are kokoro-onnx, onnxruntime, numpy, requests, tqdm.
The one shared gotcha applies here too: the first run of any node in the pack downloads the 325 MB kokoro.onnx plus voice data into the node folder, so your first queue stalls on a progress bar. And on Windows portable installs, install requirements into the embedded Python (python_embeded\python.exe -m pip install -r ...\requirements.txt) or the import fails. Cheap node, instant math - the only cost is that first download, paid once.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| speaker_a | KOKORO_SPEAKER | — | |
| speaker_b | KOKORO_SPEAKER | — | |
| weight | FLOAT | 0.500–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| speaker | KOKORO_SPEAKER | — |