WebNarrator gives you two ways to get better voices. The first is to flip on the built-in neural voices - six on-device AI voices that ship with the extension, run entirely on your machine, and work the same in every desktop browser on every OS. The second is to download premium voices from your operating system - Apple, Microsoft, and Google all offer better-than-default voices for free, and WebNarrator picks them up automatically.

The OS-voice path is older, depends on what your machine has installed, and is finicky on Windows. The built-in neural voices are the easiest and most consistent option, but the built-in neural voices won’t be as good as the highest quality voices from Apple and Microsoft.

Built-in neural voices (easiest option)

As of v1.1.0, WebNarrator ships with six on-device neural voices - three female, three male, in US and UK English - powered by Kokoro 82M. They run entirely in your browser using WebGPU (with a WASM fallback), so once the model is downloaded, no audio ever leaves your machine.

To use them:

  1. Open the WebNarrator popup.
  2. Flip the Open-source neural voices toggle on.
  3. Read the consent row that appears, then click Download voice model (~310 MB).
  4. Wait for the download to finish. It happens once per browser profile and is cached locally afterward.
  5. The Kokoro voices appear in the voice picker alongside any OS voices you already have.

This is the easiest way to get high-quality voices, and the only path that’s identical across Chrome, Firefox, Edge, and every desktop OS. If you don’t want to think about premium voice packs, SAPI5 vs. Natural, or which browser sees which voice, just turn this on.

If you’d rather stick to OS voices - or want to add to what you already have - read on. A lot of the ‘classic’ OS voices are absolutely awful, but the premium ones below are free and worth grabbing.

macOS

macOS ships with Samantha (the “classic” voice) and makes you opt in to the premium Siri and Enhanced voices.

  1. Open System Settings -> Accessibility -> Spoken Content.
  2. Click the System Voice dropdown -> Manage Voices…
  3. Scroll through the list. Voices labeled (Premium), (Enhanced), or (Siri) are much higher quality than the default.
  4. Click the cloud/download icon next to any voice you want. They’re ~100–500 MB each.
  5. Wait for the download to finish. The voice now appears in WebNarrator’s voice picker.

Recommended starting points for English:

  • Siri Voice 1–4 (en-US), best quality, most natural prosody
  • Ava (Premium), excellent for long-form reading
  • Evan (Enhanced), crisp, slightly faster cadence

If you’re multilingual, grab a Premium voice for each language you read. The difference between “Premium Italian” and “classic Italian” is the difference between going to Italy and going to Olive Garden.

Note: You may need to restart your browser to see newly downloaded languages.

Windows

Windows is the platform where the OS-voice path is least reliable, and where we most strongly recommend the built-in neural voices above instead.

Windows 10 and 11 have two types of voices, SAPI5 voices and the newer Narrator Natural voices. Natural is supposed to be much higher quality, but getting it into the browser is inconsistent: Edge sees Natural voices reliably, Chromium browsers (Chrome, Brave, Arc, Opera) sometimes do and sometimes don’t, and Firefox on Windows is limited to SAPI5 voices - no matter how many Natural voices you install, they won’t appear in Firefox’s voice list. We’ve had reports of users installing Natural voices and seeing them never appear in Chrome either, even after restarts. Your mileage will vary.

If you want to try the OS-level voices anyway, here’s how they’re meant to work.

Natural voices (Edge, sometimes Chrome / Chromium browsers)

  1. Open Settings -> Accessibility -> Narrator.
  2. Under Narrator’s voice, click Add natural voices.
  3. Pick a voice and click Install. They’re ~100 MB each.
  4. Restart your browser.

Natural voices to try:

  • Microsoft Aria Online (Natural) - English (United States)
  • Microsoft Ava Online (Natural)
  • Microsoft Andrew Online (Natural)

SAPI5 voices (works in every browser, including Firefox)

For additional SAPI5 voices, Settings -> Time & language -> Language & region -> add a language -> click it -> Language options -> Add voices. These are lower quality than Natural but they’re the only option for Firefox users on Windows, and they cover languages Natural doesn’t yet support.

Linux

Linux doesn’t have a first-party premium voice catalog, but you can substantially upgrade the defaults.

espeak-ng comes with Linux. It’s small, fast, and robotic. To get something more natural:

# Debian/Ubuntu
sudo apt install mbrola mbrola-en1 mbrola-us1 mbrola-us2 mbrola-us3
sudo apt install speech-dispatcher-mbrola

MBROLA voices sound better. After installing, restart your browser and they’ll appear in WebNarrator’s voice list.

For a system-wide upgrade that benefits every Linux app using the Web Speech API, Piper is the current state of the art, neural TTS that runs locally, with voices rivaling commercial ones:

# Install piper (check the piper repo for the latest instructions)
# Then wire it up to speech-dispatcher so browsers pick it up

Piper setup is more involved than a single apt install, but once speech-dispatcher is pointed at it, every app using the Web Speech API, including WebNarrator, gets the upgrade for free. If you only care about WebNarrator, the built-in neural voices give you the same outcome with zero setup.

ChromeOS

ChromeOS includes Google voices that are already quite good, nothing to install. But you can add more:

  1. Settings -> Advanced -> Accessibility -> Manage accessibility features.
  2. Scroll to Text-to-Speech -> Text-to-Speech voice settings.
  3. Any voice marked (needs download), click it to fetch.

Google’s enhanced voices (en-US-Standard-*, en-US-Wavenet-*) are worth grabbing if you read a lot.

iOS / Android

WebNarrator is a desktop-browser extension, so this section is only relevant if you’re curious, but for completeness:

  • iOS: Same pipeline as macOS. Settings -> Accessibility -> Spoken Content -> Voices -> download the Premium/Enhanced variants.
  • Android: Settings -> Accessibility -> Text-to-speech output -> install Google TTS voices or third-party engines like Acapela.

How to tell which voice is currently playing

Open the WebNarrator extension. The voice dropdown shows the currently selected voice and its locale code. If you’re not sure what you’re listening to, it’s probably whatever your OS said was the default, which on a fresh macOS install is Samantha, on Windows is Microsoft David, and on Linux is usually espeak-ng. The built-in neural voices, if you’ve enabled them, sit in the same dropdown and are clearly named (Kokoro <name>).

None of the OS defaults are bad. But none of them are what you’d get if you spent thirty seconds flipping on the built-in neural voices, or five minutes downloading the premium OS ones.

A note on privacy

Every voice recommended in this post - including WebNarrator’s built-in neural voices - runs entirely on your device. No audio is sent to a server, at least not by WebNarrator.

The built-in neural voices have one network event: a one-time model download from HuggingFace, fetched only after you explicitly grant consent in the popup. After that, the model is cached locally per browser profile and never re-fetched. Nothing about what you read or listen to leaves your machine.

Look out for OS voices explicitly marked “Online” or “Cloud” in their name, some Windows installations include these. WebNarrator will still play them if you pick one, but the audio synthesis happens on Microsoft’s servers, not your machine. If that matters to you, stick to voices without “Online” in the name.

If the voice list is still short

The fastest fix is to turn on the built-in neural voices in the popup. They appear in the dropdown as soon as the model download finishes, no OS configuration required, no browser-specific gotchas.

If you’d rather get OS voices working and they’re not showing up:

  1. Fully quit the browser (not just close the window, quit the process).
  2. Reopen the browser.
  3. Open the WebNarrator popup.
  4. The onvoiceschanged event fires once the OS has reported its updated list; the dropdown should repopulate within a second.

If the list is still missing voices, the browser may not have permission to enumerate system voices. On macOS, grant Chrome/Firefox access under System Settings -> Privacy & Security -> Accessibility.

On Windows, Natural voices are inconsistent across browsers - Firefox can’t see them at all (it’s SAPI5-only), and we’ve had reports of Chrome failing to enumerate Natural voices even after a clean install. If you’ve tried and they’re still not appearing, just use the built-in neural voices instead.


Questions & feedback welcome, you can join my discord or email me david@linkidex.com. No soliciting.