Kokoro TTS v4
Generate speech from a saved custom voice
- voice
- audio
KokoroTTS_v4 looks a lot like the pack's simplest node (v1) - text in, speed dial, audio out - but the voice input isn't a dropdown of Kokoro's 46 presets. It's a VOICE socket, meaning it wants a voice shape wired in from somewhere else in your graph. In practice that "somewhere else" is KokoroTTS_LoadVoice_v1, feeding in a custom voice you blended and saved earlier. This is the node you actually generate with once you've settled on a voice you like.
Why this exists separately from v1
The rest of this pack's blend nodes (v2, v3) do the blending and generate audio in the same step, every single time you run them - which is fine for one-off tests, but wasteful if you're narrating a whole script and want the exact same custom voice on every line. The pack solves that with a save/load pair: KokoroTTS_SaveVoice_v1 blends two presets once and bakes the result to a .kkv file, KokoroTTS_LoadVoice_v1 reads it back in as a VOICE value, and KokoroTTS_v4 is what you actually generate speech with, over and over, without re-blending or re-picking presets each time. It's the "production" node for a custom voice - the equivalent of what v1 is for a stock preset.
Inputs and outputs
- text (STRING, default "Hello, world!") - what gets spoken.
- voice (VOICE) - a custom voice shape, wired in from KokoroTTS_LoadVoice_v1's output. Not an enum, not a preset picker - it has to come from another node.
- speed (FLOAT, 0.5–2, default 1) - playback speed.
One output: audio (AUDIO), same as every other generation node in this pack - wire it to Save Audio, Preview Audio, or wherever your pipeline consumes it.
Installing it
- ComfyUI Manager - search "DJZ-KokoroTTS", install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/MushroomFleet/DJZ-KokoroTTS, then restart.
On Windows portable, run install-portable.bat from the repo with ComfyUI closed - it sorts out dependencies and paths for the portable build.
Two model files also need to be in /comfyui/models/kokoro/. The README links directly to the ONNX weights - kokoro.onnx from taylorchu/kokoro-onnx's v0.2.0 release - but doesn't spell out the second file's name, so check the repo's models.json instead of guessing.
Where people get stuck
The node-specific trap here is upstream of v4 itself: if you haven't saved and loaded a voice yet, there's nothing valid to plug into the voice socket, and it'll error rather than fall back to a default. Run KokoroTTS_SaveVoice_v1 first, then KokoroTTS_LoadVoice_v1, and only then wire the result into v4. This node doesn't do anything useful in isolation.
Beyond that, the usual pack-wide issue applies: model files not sitting exactly in /comfyui/models/kokoro/ is the most common failure the README's own troubleshooting section calls out. And like any custom node pack, this one installs its own requirements.txt into ComfyUI's shared Python environment with no isolation from anything else you've got installed - if the node fails to load rather than fails to generate, check the ComfyUI console at startup for a dependency conflict before assuming the model files are the problem.
This is a low-traffic node - not many people have hit it yet - so if you run into something odd, the repo's GitHub issues are a better bet than a community thread.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello, world! | — |
| voice | VOICE | — | |
| speed | FLOAT | 1.00.5–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |