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
📅 September 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 excludedam_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.5x2.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