Owner build story

I Refused to Buy a Server for Text to Speech. The Browser Did the Job.

I nearly solved a free text-to-speech problem by buying another server. That would have been backwards. I already had a website. What I wanted was simple: someone pastes text, chooses a voice, and downloads an MP3. No account, no paid speech API, and no upload of the writing.

The first plan grew into a VPS, a job queue, temporary storage, cleanup rules, and a monthly bill. I stopped it. Then I put Kokoro and Supertonic inside the browser instead. Kokoro sounded better to me in English. Supertonic spoke far more languages. Microsoft Edge found the part of the design that still felt broken.

Full-body smoke-kawaii girl comparing two browser voice models, fixing a stalled loading process, and sending the finished audio to headphones and an MP3 file.
The smoke-kawaii mascot compares an English-focused voice path with a multilingual one, fixes a stalled browser process, and sends the result to headphones and an MP3 file.See the gallery

Short answer

Kokoro is the model I would choose first for natural US or UK English. Supertonic is the one I would choose when language range matters. The browser can turn either result into a real MP3 without sending the text to my server.

The tradeoff is the first download and the visitor's hardware. These are large models, so a fast voice on one laptop can feel stuck on another. Samples, visible progress, a compatibility fallback, and a working Cancel button matter almost as much as the voice itself.

The brief was becoming larger than the problem

Recent text-to-speech discussions keep circling the same frustrations. A free tool turns into a subscription. A useful voice sits behind an account. The character allowance runs out, or the tool will not let someone download an MP3. People also want to know where their text goes. Those are product questions, not model leaderboard questions.

Reader context: recent browser TTSand Kokoro voice discussions.

My own requirements became a useful filter. The tool had to run on the hosting I already use, but the host should not perform the speech generation. It needed real MP3 downloads, not a WAV file that a visitor would have to convert elsewhere. It also had to recover when a browser or graphics backend stalled.

The browser took the expensive job

Source: MDN's Web Workers guide

Both speech models run in a Web Worker. That keeps the heavy inference work away from the main page controls. The visitor's device supplies the processor and memory, while my existing Astro site supplies the interface and small fixed voice samples.

This does not mean the first run is offline. The browser still downloads pinned model, tokenizer, runtime, and selected voice files. Hugging Face receives those ordinary file requests. Those requests do not include the pasted text, imported document contents, chapter names, generated audio, or MP3 filenames. The audio remains in the tab until the visitor downloads it or closes the page.

That distinction matters. “Runs in your browser” describes where the browser generates speech. It does not mean “makes no network requests.” I would rather explain the boundary than hide it behind a broad privacy badge.

Kokoro and Supertonic answered different questions

I kept both models because neither one was the honest winner for every job. This table compares the way Access Free Tools currently uses them. It does not describe every app that carries the same model names.

QuestionKokoro 82MSupertonic 3
Where it fits bestNatural-sounding US and UK EnglishMultilingual speech from one model
Fixed choices in the tool28 English voices10 voice styles
Language choicesUS and UK English31 named languages plus best effort
First model downloadAbout 326 MB, or about 92 MB for the q8 fallbackAbout 398 MB plus one small voice style
Browser fallbackFull precision on WebGPU, q8 on WebAssemblyWebGPU with WebAssembly fallback

Kokoro sounded better to me in English

Sources: Kokoro's browser codeand the pinned ONNX release

I added Kokoro after the first model worked because the English result was not yet where I wanted it. With the Bella voice, Kokoro gave me the clearer, more natural English reading. That is a personal listening judgment, not a laboratory score. Names, abbreviations, unusual punctuation, and mixed-language sentences can still sound wrong.

Waiting for a full model download just to compare voices made no sense, so I generated one short local sample for each fixed voice. There are 28 Kokoro samples. Pressing play fetches only that small MP3. It does not start the worker, download the model, read the visitor's text, or autoplay anything.

Supertonic earned its place with language range

Sources: Supertonic's official repositoryand the pinned Supertonic 3 model

Supertonic 3 covers 31 named languages with the same model. That is the reason it remains the default choice in the tool. Someone preparing French, Hindi, Japanese, Ukrainian, Vietnamese, or another supported language should not have to use an English model merely because I preferred that model for my own English test sentence.

The interface exposes ten fixed Supertonic styles, five labelled female and five labelled male. I kept custom voice files and cloning out. They would add a different set of consent, safety, storage, and identity problems to a tool whose job is simply to turn permitted text into audio.

Edge looked frozen, and that mattered more than a model ranking

My first uncached Edge run took 70.4 seconds to load full-precision Kokoro and create 8.808 seconds of audio. The button said Stop. For too long, nothing else on the page gave a useful sign that work was moving. The model was not the only problem. The experience made a working tool look broken.

I added elapsed time, the active backend, clearer loading stages, a reduced-motion-safe mascot scene, and a 90-second no-progress watchdog. If Kokoro stalls in high-quality mode, the worker gets one automatic retry with the smaller q8 WebAssembly model. In a controlled Edge test, that fallback produced 7.368 seconds of audible MP3 in 37.6 seconds. A second stall now ends cleanly, unloads the worker, and restores the Generate button.

Those numbers belong to one machine and one test. I do not offer them as speed promises. The useful part is the failure rule: a visitor should see what the browser is attempting and regain control if it stops making progress.

MP3 made the experiment useful

Both models naturally produce audio data at different sample rates. On Access Free Tools, Kokoro produces 24 kHz audio and Supertonic produces 44.1 kHz audio. The browser passes either result through the same pinned encoder and creates a 128 kbps mono MP3.

I chose MP3 because it is the file people kept asking to save. A WAV-only result would make the visitor find another converter before the first tool had finished its job. The page also fixes unsafe filename characters and adds the .mp3 extension instead of trusting whatever a visitor typed into the filename box.

Different chapter voices changed the tool again

Once one MP3 worked, a longer piece exposed another flat spot. An audiobook or dialogue can need more than one voice. Chapter mode now lets a visitor name and reorder sections, choose a separate fixed voice for each one, generate them through one loaded model, and download the ordered MP3 files in a ZIP.

I tested one Kokoro chapter with Bella and another with Emma. The browser loaded the pinned model once, fetched only those two selected voice files, and produced two separate MP3s. A later failed chapter does not erase earlier results, and retrying one chapter does not force the whole set to run again.

What I deliberately left out

  • No voice cloning: the tool uses fixed model voices and does not accept voice recordings or custom styles.
  • No server upload: pasted text and imported TXT, Markdown, or EPUB content stay in the current tab.
  • No endless document promise: the current limit is 10,000 characters across one result or a chapter set.
  • No mobile claim without devices: Chrome, Edge, Firefox, and a Windows WebKit path passed, but physical iOS, Safari, and Android generation still need testing.
  • No automatic rights assumption: a visitor must confirm permission to convert the text and accept the selected model terms.

At publication time I am still treating the generator as a browser beta. The page works, but a successful desktop run is not proof that every phone can hold a large speech model in memory.

Which model should you try first?

For US or UK English, I would start with Kokoro and listen to Bella, Emma, and a few other samples before loading the model. For another supported language, I would start with Supertonic. On a browser without a usable WebGPU adapter, expect the smaller compatibility path rather than the full-precision Kokoro model.

The Text to Speech MP3 Generatorlets you hear all 38 fixed samples before making that choice. Thestep-by-step guideexplains the limits, model downloads, document import, chapter controls, and privacy boundary. Start with a short paragraph. Download the MP3 before closing the tab. Most importantly, listen to the result rather than trusting the model name.

Sources I checked

I used primary project pages and official documentation for technical facts. The links below let you check the same sources.

How this article was made

I own Access Free Tools. AI helped with research organization and draft checks. I checked the project links, examples, and claims before publishing, and I kept the final judgment and wording my own.