Remix.run Logo
Local, CPU-Friendly, High-Quality TTS (Text-to-Speech) with Kokoro(ariya.io)
230 points by speckx 5 hours ago | 54 comments
sudobash1 3 hours ago | parent | next [-]

I have used Kokoro fairly extensively for an accessibility product. I have loved working with it (especially because I don't have an NVidia GPU like many TTS of similar quality require).

I particularly appreciate the fact that it lets you manually add IPA pronunciation guides. There have been some cases where an important word is a homograph and Kokoro assumed the wrong pronunciation.

The place where it falls a little short is in saying just a single word or two. Try having it say simply "six" and it almost always says something like "ah-six-ah". I found a way around that though. If you give it a longer sentence to say (eg "The word is: six") it will say it fine. The trick is that the Kokoro API gives you the timestamp of each word in the sentence. So you can have a Python script crop out just the word you care about. The intonation is a little flat this way, but is very reliable.

I asked about this on the discord, and was told that it is a limitation of the small parameter size. But in fairness to Kokoro, even eleven-labs' voices suffer from this occasionally.

QuantumGood 43 minutes ago | parent | next [-]

Same trick with many others. I say "Knight" to Wispr or Google and see "night". I say "Knight to f3", and just backspace out "to f3".

dr_dshiv 44 minutes ago | parent | prev [-]

Great technique, thanks for sharing

montenegrohugo an hour ago | parent | prev | next [-]

Super cool!!

I've been using my own solution since January. I'm on Linux, and can't use Aqua, Whipsrflow etc... So i made my own.

Recently cleaned it up and made it install friendly.

If anyone is interested, you can check it out here: https://github.com/Hugo0/voiceio

It's self-improving over time, runs on your local machine, and is generally decent software. 60% of my interaction with my PC nowadays is pure voice input.

yjftsjthsd-h 35 minutes ago | parent [-]

This is text to speech, yours is speech to text. (But also thanks, your STT looks interesting)

bronco21016 2 hours ago | parent | prev | next [-]

Love this model. I’m GPU poor and have had FOMO that I haven’t played with local models at all. About a month ago I setup Kokoro on my GTX1650 to do TTS for an article reader. A simple WebUI lets me paste a URL or a chunk of copy pasted text. Python cleans it up and sends to Kokoro for TTS and it’s then served via RSS for Apple Podcasts. Then for my morning drive I’ll catch up on articles or blog posts I’ve gathered.

At some point I’d like to play with separate voices and see if I could build something like NotebookLM for kind of like a radio morning show of news items I’ve gathered.

mstkllah 7 minutes ago | parent [-]

Check Open Notebook:

https://github.com/lfnovo/open-notebook

SambhavGupta 2 hours ago | parent | prev | next [-]

A couple months back I wrote a chrome extension that does this on any webpage, with simultaneous highlighting of the sentence being read. Skips both the container launching step and the copy pasting website contents step. Might be useful to anyone trying to use kokoro ergonomically.

https://chromewebstore.google.com/detail/local-reader-ai-on-...

dmayle 4 hours ago | parent | prev | next [-]

Fun... This is something I actually care about...

I used to keep a version of whisperx around, because I think it's important to have not just transcription, but also timing and speaker identification (e.g. for subtitles)... It depends on pyannote, though, which has some wierd licensing (and is tougher to script the installs because of it), so I wanted to look at something that both had better transcription, and supported diarization (the speaker and timing). I decided on parakeet for the transcription with softformer (the diarization), but most of the available engines for it don't include softformer.

I coded up an OpenAI compatible server for parakeet-rs ( https://github.com/altunenes/parakeet-rs ) (which does support softformer) and I've been using it with OpenWhispr (a desktop app for transcription that handles all sorts of neat thing).

I'm doing CPU-only transcription (because I use my GPUs for other stuff and haven't gotten around to adding in the GPU-path), but it's incredibly empowering to be able to have local transcriptions at will.

dghlsakjg 4 hours ago | parent [-]

This is TTS. Not STT.

For what you are doing, Senko works really well for diarization along with parakeet.

Faster and more accurate than Pyannote and whisper on my MacBook anyway.

dmayle 3 hours ago | parent [-]

You're right... I read the title too quickly... I'll have to look at Senko vs Softformer later...

namegulf 10 minutes ago | parent | prev | next [-]

[delayed]

namegulf a minute ago | parent [-]

[delayed]

jsemrau 33 minutes ago | parent | prev | next [-]

I am entirely sold on Qwen3-TTS's voice cloning. It runs locally and I can run it as many times as I want.

karimf 25 minutes ago | parent | prev | next [-]

This repo is a good starting point for comparing TTS models https://github.com/5uck1ess/tts-bench

Kokoro is a really good model, considered it’s released 1.5 years ago. It’s punching above its weight https://5uck1ess.github.io/tts-bench/scores.html

deivid 2 hours ago | parent | prev | next [-]

I spent a day fiddling with AI and dropping the expensive layers in kokoro, on phones, on CPU, on MNN, it runs 3x faster.

Quality is very close.

Will vary in your setup, but here is my script: https://github.com/DavidVentura/translator-rs/blob/master/sc...

mberg 41 minutes ago | parent | prev | next [-]

Kokoro is great. I built an mcp for it a while back that has gotten decent traction - https://github.com/mberg/kokoro-tts-mcp if anyone wants to go that route

dvt 4 hours ago | parent | prev | next [-]

I'm using Kokoro for a fun little side-project browser-based game I'm working on. It's legitimately super good for being only 85mb (for the wasm version) or 300mb (for the webgpu version).

mowmiatlas 3 hours ago | parent | prev | next [-]

Cool I actually got it ported to iPhone’s ANE finally yesterday! So we can get both rt natural local TTS and 4x less battery drainage and thermals

tigerquoll an hour ago | parent [-]

lol, I just finished a port to the iPhone ANE as well. I would love to compare notes

miscandlanneous an hour ago | parent | prev | next [-]

Naive question, but I once downloaded a particular voice file that I wanted to use with some other RVC TTS project, but ended up not being able to run it CPU only, so I only kept the voice I wanted. Thing is, the voice is in .pth format, and on Kokoro's huggingface page, their voices are all .pt.

Would I be able to use this voice I already have with Kokoro? If not, is there any way to convert it? I could always go looking if someone made this specific voice but in .pt format, but I barely mess with AI and don't know how I could search for this.

kn100 4 hours ago | parent | prev | next [-]

I'm using exactly this TTS engine for my intercom door system I built. The quality of the TTS is very good.

hdz an hour ago | parent | prev | next [-]

Who is going to hack together a mac widget that allows us to select text anywhere, press a shortcut key and finally get a non robotic voice outputted in a reasonable amount of time?

I am aware of the Option + Esc shortcut on osx for the onboard TTS but wow is it hard to listen to in 2026.

asteroidburger an hour ago | parent | next [-]

Have you tried /usr/bin/say ? Might already have something sufficient for you - there’s quite a few voices there.

Cyberdog an hour ago | parent | prev [-]

In System Settings, if you go to Accessibility and click "Read & Speak" in the "Vision" section, you can select a different voice using the "System voice" section. Click the "(i)" to preview your various options and even download more. Some, like "Allison (Enhanced)," sound leagues better than the default voice.

hdz 38 minutes ago | parent [-]

Great point! these are better than Samantha and they're free. But still, if I could wait a few seconds to get a much richer TTS experience I'd pay for that.

Barbing 11 minutes ago | parent [-]

Easy to send one’s clipboard to Microsoft Azure and have their DragonHD voices read the text, say with Keyboard Maestro (or presumably Alfred, Raycast, etc.). Should work with selected text too.

You’d definitely get to pay for it, not what I consider cheap. (“$15 per 1M characters”) But IMO just about best-in-class (maybe ElevenLabs has a voice I’d like even better).

rnxrx 39 minutes ago | parent | prev | next [-]

Another endorsement - I used Kokoro pretty extensively with an app I was developing over the last year and it's been excellent, both on- and off- GPU. Even with Elevenlabs (long time subscriber) the comparative quality of Kokoro keeps up really well until you get to their larger models with their professional voices.

I do wish there were better support for SSML, as well as deeper documentation of how to influence inflection in-line, but the default does well with standard emphasis (e.g. putting asterisks around text elements). Both asks are getting outside the zone of reasonable asks for this sort of distribution, though, and I remain incredibly grateful for the quality of what hexgrad and nazdridoy have put out in the world.

janpmz 2 hours ago | parent | prev | next [-]

Both Text-to-Speech and Speech-to-Text now have local models that are good enough to get the job done. Kokoro for TTS, Parakeet for STT and Fluid-1 for text formatting (I use it with FluidVoice). I hope this is a trend that continues for other applications.

zackify 2 hours ago | parent | prev | next [-]

I use kokoro with home assistant and its great. I find its the most natural sounding and small too.

I speak over sonos speakers when certain events happen. And use it as my voice assistant.

teravor 5 hours ago | parent | prev | next [-]

kokoro is decent but pocket-tts is much better especially when you rip a good voice. https://github.com/kyutai-labs/pocket-tts

the onnx version of pocket-tts does perform better. https://huggingface.co/KevinAHM/pocket-tts-onnx

psanford 33 minutes ago | parent | next [-]

I agree, pocket-tts is quite good. It is also very easy to make new voices from small sample files with pocket-tts.

mscdex 4 hours ago | parent | prev [-]

I've found that for CPU inference the PyTorch-based (non-quantized) version of Pocket TTS actually performs (both speed and quality-wise) better than the ONNX version, even after fiddling with all of the knobs that ONNX provides.

teravor 4 hours ago | parent [-]

i found the exact opposite, the pytorch version on the cpu barely does over 2 times realtime while i can get the onnx int8 version to reach 5x.

TurdF3rguson an hour ago | parent | prev | next [-]

When I hear the male voice I think: "Ok, it's the Youtube guy".

david_draco 2 hours ago | parent | prev | next [-]

It's interesting that the male voices are all so much worse than the female voices (several are quite good). There is bias in machine learning, but I wonder whether there is also systematically more training data of female speech?

raymond_goo 2 hours ago | parent | prev | next [-]

https://github.com/rhulha/StreamingKokoroJS all in browser, 100% private, nothing tracked

djmips 2 hours ago | parent [-]

I tried it but it did not function.

Judson 3 hours ago | parent | prev | next [-]

Love Kokoro tts. I wrote https://github.com/Jud/kokoro-coreml to try pushing the limits a bit on speed & size. Such great quality at a given size. As others have mentioned short utterances are problematic, but solvable.

elevation 4 hours ago | parent | prev | next [-]

Any good debian-ish distros that integrate TTS and STT in a usable shell?

stogot 37 minutes ago | parent | prev | next [-]

Has anyone tested/ported Kokoro To mobile?

0gs 4 hours ago | parent | prev | next [-]

kokoro is surprisingly great at nuance but it's tough to improve that last ~2% or so. kokoro + rvc is really great too; i use that for ELEMENT47, the LLM-centric comedy podcast i do that i wish more people would listen to. (e47.net , feel free to subscribe!)

cat_plus_plus an hour ago | parent | prev | next [-]

I just hooked it up to my personal AI Japanese Teacher app, pretty good quality / natural sounding speech in mixed English / Japanese while running fast on CPU so I don't waste VRAM.

dmezzetti 43 minutes ago | parent | prev | next [-]

I agree that Kokoro is a good TTS model.

If you're interested in an ONNX version and a permissively licensed TTS Tokenizer, I built a pipeline for that a while back: https://huggingface.co/NeuML/kokoro-base-onnx

fady0 3 hours ago | parent | prev | next [-]

Anyone know which local TTS is best, close to Eleven Labs quality?

echelon 2 hours ago | parent [-]

F5-TTS

SubiculumCode 4 hours ago | parent | prev | next [-]

kokoro is very nice, but I am disappointed that this wasn't an announcement of a new kokoro version.

othmanosx 4 hours ago | parent | prev | next [-]

Yeah, we need to keep up with how quickly AI types back to us, typing on the keyboards is no longer quick enough, gotta dictate everything now.

victorbjorklund 4 hours ago | parent | next [-]

This is the opposite way

croes 3 hours ago | parent | prev [-]

Great way to enter your passwords

thenextan 2 hours ago | parent | prev | next [-]

curious to know if it comes with audio tags?

behnamoh 2 hours ago | parent | prev | next [-]

On macOS I've been using piper (https://github.com/OHF-Voice/piper1-gpl) to announce claude code notifications and it works perfectly!

lostmsu 5 hours ago | parent | prev [-]

> Apple M2 Pro: 4.5 seconds

> AMD Ryzen 7 8745HS: 1.5 seconds

These two can probably do it much faster on their iGPUs.

dygd 3 hours ago | parent [-]

Yep, and Kokoro-FastAPI (which he already uses) makes it super easy with start-gpu_mac.sh