WinSTT logoWinSTT

Text-to-Speech

Read any selected text aloud with the on-device Kokoro-82M voice — 54 voices across 9 languages, all synthesized locally.

Select text anywhere, press a hotkey, and WinSTT reads it back to you in one of 54 voices — synthesized on your own machine by the bundled Kokoro-82M ONNX model, with no cloud round-trip.

54
Voices
9
Languages
82M
Model params
0
Cloud calls
report.txt

The quarterly numbers are in — revenue is up 18% and churn fell.

1 Select text in any app, press your hotkey
Kokoro-82M
USHeart
2 Synthesized on your machine — no cloud
Speakers (default)
3 Plays through your output device
Highlight text in any app, press your read-aloud hotkey, and WinSTT speaks it back — captured, synthesized, and played entirely on your device.
The Text-to-Speech settings section: a master toggle, a searchable voice picker with per-row preview buttons, and a speed slider.
Enable read-aloud, pick a voice, and set the playback speed in Settings → Read Aloud.

How it works

Text-to-Speech runs the same way dictation does — in reverse. Highlight text in any application, fire the hotkey, and WinSTT captures the active selection, synthesizes it to 24 kHz PCM audio with Kokoro-82M, and plays it through your chosen output device. Synthesis happens on-device; the text never leaves your machine.

The voice catalog covers 54 voices across 9 languages — US/UK English, Japanese, Mandarin, Spanish, French, Hindi, Italian, and Brazilian Portuguese. Picking a voice also sets its language, so there is no second picker to keep in sync. The voice list is the complete set of languages local TTS can speak: if a language has no voice in the picker, Kokoro can't synthesize it, and it never translates — it reads the selected text in the chosen voice's language.

Synthesized locally

Kokoro-82M runs entirely on local hardware — the same ONNX runtime that powers transcription. Selected text is read from the focused app and synthesized in memory; it is never written to disk or uploaded.

Need a language that isn't listed?

Local Kokoro is the only text-to-speech engine WinSTT ships today, so its 9 languages are the hard limit for on-device read-aloud. A cloud engine such as ElevenLabs synthesizes dozens of languages — and WinSTT already talks to ElevenLabs for cloud transcription — but cloud text-to-speech isn't wired up yet. For now, languages beyond the 9 above mean reaching for an external TTS tool.

First-time setup

The Kokoro engine and voice files aren't bundled into the installer — they're fetched once, on demand, the first time you enable TTS, and cached on disk forever after.

  1. Toggle Text-to-Speech on

    Open Settings → Desktop → Text-to-Speech and flip the section toggle. WinSTT probes the download size; if the pack is already cached it skips straight to step 3.

  2. Confirm the one-time download

    A dialog itemizes the components and the total size, then waits for you to choose Download & Enable. If WinSTT can't reach the server to size the download, you'll see an offline notice with a Retry button instead.

  3. Wait for the pack to install

    An install banner shows live progress with Pause, Resume, and Cancel buttons. The voice/speed controls stay locked until the engine is ready. Cancel discards the download and flips the toggle back off.

  4. Pick a voice and speak

    Once installed, the voice picker fills with the full catalog. Choose a voice, set your speed, and use the TTS hotkey from any app — or the per-row preview button to audition.

The pack downloads in three parts, totaling about 190 MB:

A one-time download. Subsequent launches reuse the cached files and work fully offline.
ComponentWhat it isSize
Engine packThe Kokoro ONNX runtime support files~50 MB
Voice modelThe 82M-parameter Kokoro model weights~100 MB
VoicepacksPer-voice embeddings for all 54 voices~40 MB

Download, pause, resume

The install streams in the background. Use Pause/Resume on the banner to manage bandwidth, or Cancel to abandon it. If a download fails, a Retry action appears.

Controls

Text-to-Speechdefault false
tts.enabled

Master on/off gate. Turning it on triggers the first-use download (or skips it if the pack is cached). The toggle is disabled while a download is in progress.

Voicedefault af_heart
tts.voice

Searchable dropdown of all 54 voices, grouped by country with a region badge (US, UK, JP, ZH, …). Each row has a preview button; picking a voice also previews it and sets the matching language. The default is Heart, a US female voice. If a saved voice ever drops out of the catalog, TTS auto-selects the first available voice.

Speeddefault 1.0
tts.speed

Playback-speed multiplier from 0.5× to 2.0× in 0.1 steps, displayed as 1.0×. Applied by the Kokoro session itself, not post-processed. A reset button appears when the value isn't 1.0×.

Languagedefault en-us
tts.lang

Set automatically from the chosen voice — there's no separate language control to manage. Each voice belongs to exactly one of the 9 supported languages, and those 9 are the only languages local TTS can speak — there's no way to add more on-device.

Text-to-speech keydefault LMeta+LShift+E
tts.hotkey

Global combo that reads the active selection aloud from any app. Defaults to LMetaLShiftE. Hold the same combo together with Backspace to stop playback immediately — it halts both future generation and already-buffered audio. Rebind it from the Hotkey settings.

Previewing a voice

Every voice row — and the selected voice in the closed picker — has a preview button that speaks a fixed sample, "The quick brown fox jumps over the lazy dog.", at your current speed. The button cycles through play → loading → stop, and clicking a different voice cancels the in-flight preview so you always hear the latest pick.

Output device

TTS playback (and recording-mode chimes) route to whichever device you pick under Settings → Audio → Output Device. Leave it on System default or choose a specific output. The section only appears when TTS or the recording sound is enabled, and routing uses the browser setSinkId() API under the hood.

The output device picker dropdown listing the system default plus each available playback device.
TTS and recording chimes both follow this output selection.

Compute device

There is no separate TTS compute device. The synthesizer shares the main speech-to-text model's device — set it once with Device in the Model tab (model.device).

TTS follows model.device

The spawn layer mirrors your Model-tab device choice onto the server's --tts-device flag. So Auto lets a GPU build run Kokoro on the available accelerator (DirectML) and falls back to CPU otherwise — exactly like transcription. Change it in one place.

On this page