Fixlark

Runs on our server

Text to speech

Type or paste, pick a voice, and get a WAV back. This is Kokoro-82M running on our own machine — no account, no per-character billing, and no third party receiving your text.

On our serverYour file is uploaded, processed, and deleted — 30 minutes after the job, or 10 minutes after you download it.

Why Kokoro

Kokoro-82M is a small text-to-speech model — 82 million parameters — that sounds markedly better than it has any right to at that size. It runs on a CPU at roughly real time, which is what makes it possible to offer here at all: this server has no graphics card, and the models that sound better all need one.

It is Apache-2.0 licensed, weights included, so we can run it, and you can use what it produces commercially. Attribution, which the licence asks for: Kokoro-82M, Apache-2.0, hf.co/hexgrad/Kokoro-82M.

Nothing is sent to a speech API. There is no per-character cost, which is why there is no account and no card, and also why there is a queue.

Nine languages. Vietnamese is not one of them.

Kokoro ships voices for English (US and UK), French, Italian, Spanish, Brazilian Portuguese, Hindi, Japanese and Mandarin Chinese.

There is no Vietnamese voice. Not a worse one, not a slower one — none. Feeding Vietnamese text to an English voice does not produce accented Vietnamese; it produces an English speaker reading Vietnamese letters aloud, which is unintelligible. We would rather write that down here than let anybody discover it by trying.

This is a limitation of the model, not of our server. A larger machine would not fix it. What would fix it is a different model with a Vietnamese voice, and the ones that exist are either not free to redistribute or need hardware this box does not have. It is written up properly in the language coverage notes for whenever that changes.

Choosing a voice, and writing for one

The prefix is the useful part of the name: af_ and am_ are American female and male, bf_ and bm_ British. af_heart is the warmest of them and the sensible default — it is the one that does not sound like it is reading a form.

Write for the ear, not the eye:

  • Punctuate. Sentences are split on full stops, question marks and exclamation marks. A paragraph with no terminal punctuation is read as one long breath.
  • Spell out acronyms you want read as letters. Write "F D A" if you want the letters; "FDA" may be attempted as a word.
  • Check your numbers. "328 MB" is read as "three hundred and twenty-eight M B", which is usually right and occasionally not.
  • Speed is better adjusted here than afterwards. Slowing the model down keeps the pitch; slowing the audio file down does not.

What you get, and what to do with it

A 24 kHz mono WAV. Not MP3 — adding an encoder to this service would mean another eighty megabytes of software to keep patched, for a file that is deleted within the hour anyway. Every browser, editor and phone plays WAV. Convert it afterwards if you need something smaller.

Three thousand characters at a time, which is roughly 500 words, or about four minutes of speech. Longer scripts should be done in sections — and doing them in sections is better practice anyway, because it lets you re-do one paragraph without regenerating the whole thing.

The audio is deleted from the server thirty minutes after it is made, or ten minutes after you download it, whichever comes first.

What not to use it for

Do not use it to imitate a real person. The preset voices are the supported use. Making a recording that sounds like an identifiable individual saying something they did not say is not something this tool should be part of, whatever the licence permits.

It is also not a screen reader. If you need a page or a document read aloud continuously, your operating system has a far better tool for that built in, and it works offline.