๐ Geeky Kokoro TTS (2025)
Kokoro TTS in ComfyUI without the API key circus
- audio
- text_processed
If you've been piecing together ComfyUI video with a separately-invoked TTS, this is the node that kills half the glue code. ๐ Geeky Kokoro TTS (2025) runs the Kokoro-82M model - a small, surprisingly good neural TTS - fully locally inside ComfyUI. No API, no key, no "free tier exhausted" popup. Just text in, an AUDIO tensor out. For an 82-million-parameter model it punches well above its weight; it's the same model behind a lot of the "why is this TTS so good for its size" posts on r/comfyui, and at ~2GB of VRAM it'll run on hardware that chokes on image models.
What it actually is
Kokoro-82M (v0.19) is a decoder-only model built on StyleTTS 2 with an ISTFTNet vocoder, outputting 24kHz mono audio. The node is a full wrapper: it pulls the model from hexgrad/Kokoro-82M on Hugging Face automatically on first run (no manual model download, despite the models/place_models_here.txt folder), then hands your text to per-language KPipelines that handle phonemization (the g2p step - this is where espeak-ng comes in), synthesis, and reassembly.
Long text gets chunked into ~350-character pieces that respect sentence and paragraph boundaries, synthesized in order, and stitched back with ~150ms pauses. If you've ever had a TTS mangle an audiobook paragraph into run-on garbage, you'll appreciate that this one keeps structure.
The inputs that matter
You get a multiline text, a voice dropdown, speed (0.5โ2.0x), and a use_gpu toggle. That's the whole core. Two things trip people up:
- The dropdown shows fewer voices than the README advertises. The author claims 54+ across 9 languages, but the node only lists voices whose model files actually loaded. That's why your menu shows ~41 - and why the Japanese voices are missing unless you've built the custom wheel the README warns about. Don't chase missing entries; pick from what's there.
use_gpudefaults to whatever the node detects. For short text, CPU is often just as fast, so don't treat the toggle as mandatory.
Beyond the core: enable_blending + second_voice + blend_ratio (0.0โ1.0) mix two voices. The mechanism is neat - the node blends the voices' reference embeddings and runs the pipeline against the interpolated embedding, so it's a true voice blend, not two clips crossfaded. Same-language pairs sound best; the README's Heart+Bella at 0.6 is a good starting point.
Outputs are audio (an AUDIO tensor - wire it into a preview or save node) and text_processed, the cleaned/chunked text as a string if you want to display or inspect what was actually spoken.
Installing it
ComfyUI Manager: search "Geeky Kokoro TTS" and hit install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/ComfyUI-Geeky-Kokoro-TTS
cd ComfyUI-Geeky-Kokoro-TTS
pip install -r requirements.txt
Then restart ComfyUI. The requirements pull kokoro>=0.9.4, librosa, scipy, soundfile, and friends - a chunky install, so don't be surprised if it takes a minute. Install espeak-ng for best phoneme handling (sudo apt install espeak-ng, brew install espeak-ng, or the Windows release), though English works without it. Note the head-scratcher: the README title says Python 3.13 doesn't work while the badge says it's supported - treat 3.12 as the tested target.
Troubleshooting
- "Kokoro import error" โ
pip install --upgrade "kokoro>=0.9.4". - Voice not loading โ restart ComfyUI fully;
pip install --force-reinstall kokoroif it persists. - GPU OOM on long text โ flip
use_gpuoff; CPU handles long reads fine, just slower. - Distorted output โ check you're not clipping before it ever reaches an effects node; the TTS node itself is clean.
Where the README is honest: Japanese needs a custom wheel, and the advanced voice node is still "under construction." For plain, local, good-sounding narration this is the node to reach for.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Welcome to Geeky Kokoro TTS with complete voice support across 9 languages and 54+ voices! | โ |
| voice | COMBO | ๐บ๐ธ ๐บ Heart โค๏ธ | 41 options: ๐บ๐ธ ๐บ Heart โค๏ธ, ๐บ๐ธ ๐บ Bella ๐ฅ, ๐บ๐ธ ๐บ Nicole ๐ง, ๐บ๐ธ ๐บ Aoede ๐ต, ๐บ๐ธ ๐บ Kore, ๐บ๐ธ ๐บ Sarah, +35 |
| speed | FLOAT | 1.00.5โ2 | โ |
| use_gpu | BOOLEAN | false | โ |
| enable_blendingopt | BOOLEAN | false | โ |
| second_voiceopt | COMBO | ๐บ๐ธ ๐บ Heart โค๏ธ | 41 options: ๐บ๐ธ ๐บ Heart โค๏ธ, ๐บ๐ธ ๐บ Bella ๐ฅ, ๐บ๐ธ ๐บ Nicole ๐ง, ๐บ๐ธ ๐บ Aoede ๐ต, ๐บ๐ธ ๐บ Kore, ๐บ๐ธ ๐บ Sarah, +35 |
| blend_ratioopt | FLOAT | 0.50โ1 | โ |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | โ |
| text_processed | STRING | โ |