Free Shipping on all orders ยท Priority Mail Shipping with fee of $8.00
๐Ÿ—ฃ๏ธ
Divine Tribe Software ยท For Windows ยท Open Source

SpeakAnywhere

Talk instead of type, and hear any text read aloud. Free for Windows.

Pythonโญ 3 starsNOASSERTION licensedOpen source
โญ 3
GitHub Stars
๐Ÿ’ป Python
Primary Language
๐Ÿ“… Oct 25, 2026
Last Updated
What it is

Dictate into any app. Have anything read back to you. All on your own PC.

Speak Anywhere is a free Windows app for voice typing and reading aloud. Tap the mic and talk, and your words land in whatever app you're in, with real punctuation. Copy any text and tap Speak Clipboard, and a natural voice reads it to you.

Everything runs on your own computer. The speech recognizer is NVIDIA's Parakeet and the voices are Kokoro, both running locally at full quality, so nothing you say is sent anywhere.

Why it's different

What makes SpeakAnywhere special

๐ŸŽค

Dictate anywhere

Tap the mic, talk, tap again. The text goes into any app or text box.

๐Ÿ”Š

Hear anything

Copy text and tap Speak Clipboard to have it read aloud.

๐ŸŽš๏ธ

Pick your voice

Voice Picker lets you audition the best Kokoro voices and keep the one you like. Speed from 0.5x to 2x.

๐Ÿ”’

Private

The recognizer and the voices run on your PC. No account, no cloud.

Who it's for

Is this for you?

  • People who would rather talk than type
  • Anyone who likes to listen to text instead of reading it
  • Accessibility-minded Windows users
How to get it

Getting started in minutes

1

Download and unzip

Put the Speak Anywhere folder anywhere you like and open Speak Anywhere.exe.

2

First run, one time

It downloads its voices and speech model, about 3 GB, with a progress bar. After that it starts in seconds and works offline.

3

Tap the mic and talk

Tap again to stop. Your words appear where your cursor is.

Ready to try SpeakAnywhere?

It's free and open source. Download it for Windows.

Full technical docs

The complete README

Open the GitHub README: every detail, every benchmark, every code block

๐ŸŽ™๏ธ Speak Anywhere

๐Ÿ—ฃ๏ธ Talk to any app. ๐Ÿ”Š Have any text read back.

๐Ÿ’ฏ Completely offline. No API keys. No accounts. No cloud. Nothing ever leaves your machine.


Offline Windows Python No GPU

ASR TTS VAD Runtime



๐Ÿ“‘ Contents

๐Ÿš€ Start here

๐Ÿ”ฌ What changed

๐Ÿ› ๏ธ Under the hood



โšก What it does

๐ŸŽค

Dictate

Tap the mic and talk. Your words are typed into whatever window has focus.

๐Ÿ”Š

Listen

Copy any text, tap Speak Clipboard, hear it in a natural neural voice.

๐Ÿ”’

Stay private

Every model runs locally. The app never opens a network connection.



๐Ÿ”ฅ The big change: Vosk is gone

โŒ Before โ€” Vosk

it's the work and get ready for you

Not one content word correct. No punctuation. No capitals.

โœ… After โ€” Parakeet

So we're gonna get ready for some soccer, okay? Love you.

Sentence, contractions, punctuation, capitals. All of it.

๐ŸŽง Same 7-second recording. Same USB microphone. Same moment. Only the engine changed.

Vosk is built on Kaldi, and that generation of recognizer has simply been overtaken. Switching to Vosk's most accurate English model didn't fix it either โ€” it just pushed cold start to 35 seconds.


๐Ÿ“Š And it got dramatically faster

๐ŸŒ Before ๐Ÿš€ Now ๐ŸŽฏ Gain
โฑ๏ธ Time to window 129.5 s 2.6 s 127 seconds faster
๐ŸŽค Dictation ready 129.5 s ~5 s the recognizer loads behind the open window
๐Ÿ”Š First word of a long read 77 s 1.2 s no longer grows with the text
๐Ÿง  Memory 9.6 GB 2.3 GB 7.3 GB lighter

Note

๐Ÿ•ต๏ธ Why the old number was so bad. The old build loaded its 2.7 GB speech model twice โ€” once in the launcher, once in the app, which never read the launcher's copy. That 9.6 GB was two full copies of the same model sitting in RAM.

Note

โฑ๏ธ Nothing on screen waits for a model any more. The window used to sit behind the full splash video and a 2.4 GB recognizer load. Speak Clipboard never touches the recognizer, and dictation only needs it to decode โ€” so it loads behind the open window, the microphone opens immediately, and audio is buffered until it arrives. Nothing spoken in those first seconds is lost.

The 77 s above was a 2,500 character paste. It is not a typo: the old reader rendered the entire clipboard to a WAV before playing a single word, so the silence scaled with the text.



๐Ÿ—ฃ๏ธ The voice

Text-to-speech used to be Piper on en_US-hfc_male-medium. Small, fast, and audibly synthetic on anything longer than a sentence.

It now runs Kokoro-82M through sherpa-onnx โ€” which was already a dependency, so this added zero new ones.

๐Ÿ”ˆ Piper ๐Ÿ”Š Kokoro-82M
๐Ÿงฌ Parameters ~20 M 82 M
๐ŸŽญ Naturalness flat, synthetic markedly better
โšก Speed on CPU fast ~1.5x realtime
๐Ÿ“… Generation older current

Piper stays available rather than deleted. A few of its voices hold up fine.


๐ŸŽš๏ธ Picking one

python voice_picker.pyw

Click a voice โ–ธ hear it read a sample line โ–ธ Use this voice. Saved to %APPDATA%/SpeakAnywhere/voice.json, picked up on next launch.

Tip

๐Ÿงน The list is short on purpose. Kokoro ships 54 voices and publishes a quality grade for each. Everything graded C or D is excluded โ€” am_adam is a D โ€” plus af_sky and am_santa, both trained on only minutes of audio.

โœ… What's left: 15 English voices at grade A or B, plus 3 Piper voices. The point is to pick a voice, not to audition a pile of bad ones.



๐Ÿ”Š How the reader actually works

It starts talking on the first sentence instead of rendering the whole clipboard first.

  ๐Ÿ“‹ clipboard
       โ”‚
       โ–ผ
  sentences โ”€โ”€โ–บ chunks: 60 chars โ”€โ–บ 90 โ”€โ–บ 135 โ”€โ–บ 202 โ”€โ–บ 400 โ€ฆ
                          โ”‚
                          โ–ผ
                   ๐Ÿ—ฃ๏ธ render thread โ”€โ”€โ–บ ๐Ÿ“ฅ queue (3 deep) โ”€โ”€โ–บ ๐Ÿ”ˆ one output stream
                       ~1.75x realtime                          gapless

The opener is short because it is the only piece anyone waits on. Everything after it is rendered while earlier audio is still playing.

Why it is built this way
๐Ÿ“ˆ Chunks grow by half each time. Rendering runs ~1.75x faster than speech plays, so every pass banks more finished audio than it spends. Jumping straight to full size leaves the renderer 8 seconds behind after a 2 second opener โ€” a stall exactly where it is most audible.
โœ‚๏ธ A long opening sentence is broken at its commas. Only near the start, where there is no buffer to coast on. Past that, sentences are left whole so chunk edges land where a reader would pause anyway.
๐Ÿ”— One output stream for the whole read, opened on the first chunk's rate โ€” so the joins are silent instead of a click per sentence.
โน๏ธ Stop lands within 0.2 s. Audio is written to the device in fifths of a second rather than a chunk at a time.

Note

๐ŸŽฏ Measured on a 2 minute read: no gap at all. 1.2 s to the first word, and the renderer stayed ahead of the listener for the remaining 128 s of audio.



โš™๏ธ How dictation actually works

  ๐ŸŽค microphone
       โ”‚
       โ–ผ
  512-sample windows โ”€โ”€โ–บ ๐Ÿง  Silero VAD โ”€โ”€โ–บ speech segments
                                                โ”‚
                                                โ–ผ
                                         ๐Ÿ“ฅ segment queue
                                                โ”‚
                                                โ–ผ
                            ๐Ÿ”€ decoder thread โ”€โ”€โ–บ Parakeet โ”€โ”€โ–บ โŒจ๏ธ typed

๐Ÿง  Silero decides what is speech

The recognizer never sees room noise or keyboard clatter.

An early energy-threshold version fired on a single door bump and transcribed nothing.

๐Ÿ”€ Decoding is off the audio thread

Transcribing a phrase takes about as long as saying it.

Inline, every word spoken during a decode would be dropped by the buffer.

๐Ÿ“ฅ Nothing is lost on stop

Switching dictation off drains the queue first.

The last thing you said before hitting the button still lands.

Important

โš–๏ธ The tradeoff, stated plainly. Vosk streamed words as you spoke them. Parakeet transcribes a whole utterance, so text lands a second or two after you finish a phrase instead of trickling out live.

That is the cost of the accuracy โ€” and the reason the dictation loop was rewritten rather than just repointed at a new model file.



๐Ÿ“ˆ Performance

Measured on an 11th-gen Core i7-1185G7 โ€” 4 cores, no discrete GPU:

Step Result
๐ŸชŸ Window on screen 2.6 s ยท waits for nothing but itself
๐Ÿงฉ Parakeet model load 3.5 s warm, much longer on a cold disk ยท behind the open window
๐Ÿ—ฃ๏ธ Kokoro voice load ~3 s ยท after the recognizer, not competing with it
๐Ÿ”Š First word of a read 1.2 s ยท any length of text
โšก Decode @ 4 threads 1.9x realtime โœ…
๐Ÿข Decode @ 8 threads 1.1x realtime โŒ

Note

๐Ÿงฑ What is left is the floor, not a bug. That 3.5 s is 2.4 GB of full precision encoder weights coming off disk. There are smaller quantized builds; this project does not use one. It is now spent behind an open window instead of in front of it.

Warning

๐Ÿงต More threads is slower. Hyperthread siblings contend for the same execution units. The app derives its own thread count โ€” roughly half the logical processors, clamped to 2โ€“8 โ€” so there is nothing to configure and nothing tuned to one machine.



โฌ‡๏ธ Download (Windows 10 and 11)

Download Speak Anywhere for Windows

Unzip it, open the Speak Anywhere folder and run Speak Anywhere.exe. The first time, it downloads its speech model and voices once (about 3 GB, with a progress bar) into %LOCALAPPDATA%\SpeakAnywhere\models. After that it starts in seconds and runs offline. Voice Picker.exe in the same folder lets you audition voices and keep one.

If Windows shows a blue "protected your PC" box, click More info, then Run anyway.



๐Ÿ“ฆ Setup from source

git clone https://github.com/nicedreamzapp/SpeakAnywhere.git
cd SpeakAnywhere
pip install -r requirements.txt

โฌ‡๏ธ The models are not in this repo โ€” they're about 3 GB together.

๐ŸŽง ย Download the speech recognizer ย ยทย  2.5 GB
mkdir -p _resources/parakeet-tdt-0.6b-v2
cd _resources/parakeet-tdt-0.6b-v2
BASE=https://huggingface.co/csukuangfj/sherpa-onnx-nemo-parakeet-tdt-0.6b-v2/resolve/main
curl -LO $BASE/encoder.onnx
curl -LO $BASE/encoder.weights    # 2.4 GB, this is the slow one
curl -LO $BASE/decoder.onnx
curl -LO $BASE/joiner.onnx
curl -LO $BASE/tokens.txt

โš ๏ธ encoder.onnx references encoder.weights as external data, so both files must sit in the same folder.

๐ŸŽฏ There are int8 builds that load faster and use a third of the memory. This project deliberately uses the full-precision export โ€” accuracy is the entire reason for the switch, and quantization is the first thing that erodes it.

๐Ÿง  ย Download the voice activity detector ย ยทย  630 KB
cd _resources
curl -LO https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx
๐Ÿ—ฃ๏ธ ย Download the text-to-speech voices ย ยทย  350 MB
cd _resources
curl -LO https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kokoro-multi-lang-v1_0.tar.bz2
tar -xjf kokoro-multi-lang-v1_0.tar.bz2 && rm kokoro-multi-lang-v1_0.tar.bz2

[!CAUTION] ๐Ÿ”ข Take v1_0, not v1_1. Despite the higher number, v1.1 is the Chinese-focused release โ€” it carries 3 English voices against v1.0's 28.


โ–ถ๏ธ Then run it:

python speak_anywhere.py


๐ŸŽ›๏ธ Using it

Step
1๏ธโƒฃ Launch the window is up in about 2 seconds
2๏ธโƒฃ ๐ŸŽค Tap the mic and talk tap again to stop
3๏ธโƒฃ ๐Ÿ”Š Copy text, tap Speak Clipboard hear it read back
4๏ธโƒฃ ๐ŸŽš๏ธ Open the voice picker keep the one you like
5๏ธโƒฃ โฉ Adjust speed 0.5xโ€“2.0x, mic and speaker both selectable

๐Ÿ’ฌ Voice commands

Say Get
๐Ÿ—ฃ๏ธ "new line" โŽ Enter
๐Ÿ—ฃ๏ธ "period" .
๐Ÿ—ฃ๏ธ "comma" ,

โœจ Parakeet emits real punctuation on its own, so these are mostly a holdover for when you want to be explicit.



๐Ÿ“ Project structure

SpeakAnywhere/
โ”œโ”€โ”€ ๐Ÿ“„ speak_anywhere.py            # the application
โ”œโ”€โ”€ ๐Ÿ—ฃ๏ธ voices.py                    # voice catalog, saved choice, synthesis
โ”œโ”€โ”€ ๐ŸŽš๏ธ voice_picker.pyw             # audition voices and pick one
โ”œโ”€โ”€ ๐Ÿ“‹ requirements.txt
โ”œโ”€โ”€ โš–๏ธ LICENSE.txt
โ”œโ”€โ”€ ๐Ÿ™ CREDITS.md
โ””โ”€โ”€ ๐Ÿ“ฆ _resources/
    โ”œโ”€โ”€ ๐Ÿ–ผ๏ธ SpeakAnywhere.ico
    โ”œโ”€โ”€ ๐ŸŽฌ splash_video.mp4
    โ”œโ”€โ”€ ๐ŸŽต splash_audio.mp3
    โ”œโ”€โ”€ ๐Ÿง  silero_vad.onnx           โฌ‡๏ธ downloaded
    โ”œโ”€โ”€ ๐ŸŽง parakeet-tdt-0.6b-v2/     โฌ‡๏ธ downloaded
    โ”œโ”€โ”€ ๐Ÿ—ฃ๏ธ kokoro-multi-lang-v1_0/   โฌ‡๏ธ downloaded
    โ””โ”€โ”€ ๐Ÿ”ˆ piper/                    optional alternate voices


๐Ÿ”จ Building the download

powershell -NoProfile -ExecutionPolicy Bypass -File build-windows.ps1

It builds in its own clean environment and writes dist\Speak-Anywhere-windows.zip: one folder with Speak Anywhere.exe and Voice Picker.exe. The models are left out and fetched on first run.



๐Ÿ™ Built on

Project Role
๐ŸŽง NVIDIA Parakeet TDT Speech recognition
๐Ÿ—ฃ๏ธ Kokoro-82M Text-to-speech
๐Ÿง  Silero VAD Voice activity detection
โš™๏ธ sherpa-onnx Runtime for all three
๐Ÿ”ˆ Piper Alternate voices
๐ŸŽš๏ธ PyAudio ยท sounddevice Audio I/O
โŒจ๏ธ PyAutoGUI Keyboard automation
๐Ÿ–ฅ๏ธ Tkinter Interface
๐ŸŽฌ OpenCV ยท Pygame Splash video and audio

Full attribution in CREDITS.md.



โš–๏ธ License

Copyright ยฉ 2024 Nice Dreamz LLC. All Rights Reserved. Proprietary software โ€” see LICENSE.txt.


๐Ÿ‘ค Author

Matt Macosko ยท Nice Dreamz LLC info@nicedreamz.wholesale.com


Made offline