Local, offline push-to-talk and wake-word voice-to-text for Windows — types speech at your cursor.
Project description
LocalWhisper 🎙️
Local, offline voice-to-text for Windows. Speak, and it types wherever your cursor is — in any app. No cloud, no account, no data leaves your PC.
Three ways to trigger it:
| Trigger | How | Best for |
|---|---|---|
| Ctrl + B | Hold and speak, release to insert | quick phrases (walkie-talkie) |
| Alt + N | Tap to start, tap again to stop | longer dictation (hands free) |
| "Hey Jarvis" | Say it, then speak | fully hands-free |
Powered by faster-whisper (small.en model) and openWakeWord.
Install (easiest — no Python needed)
- Go to the Releases page and download
LocalWhisper-Setup.zip. - Extract the ZIP (right-click → Extract All). Keep the folder structure.
- Double-click
Install.batand approve the Windows admin prompt.
That's it. LocalWhisper installs, starts immediately, and launches automatically every time you log in. A small tray icon shows its state:
- ⚪ grey = idle 🟢 green = recording 🟠 amber = transcribing
Right-click the tray icon to Quit. To remove it later, run Uninstall.bat.
First-launch notes
- Windows SmartScreen may show "Windows protected your PC" — this is expected for a new, unsigned app. Click More info → Run anyway.
- Administrator rights are required because global hotkeys (Ctrl+B / Alt+N) need a system-level keyboard hook. The installer sets this up for you.
- If nothing happens on launch, check the log at
%LOCALAPPDATA%\LocalWhisper\localwhisper.log. - Needs a 64-bit Windows 10/11 PC and a microphone. If the app won't start, install the Microsoft Visual C++ Redistributable (x64).
Install via pip (for Python users)
If you already have Python 3.9+:
pip install localwhisper
localwhisper
On first run it downloads the small.en model (~240 MB) and the wake-word models automatically. Run your terminal as Administrator so the global hotkeys work.
Tuning
Behavior lives in localwhisper/config.py (edit + rerun from source, or rebuild):
| Setting | Default | What it does |
|---|---|---|
model_name |
small.en |
Transcription model. base.en is faster, less accurate. |
wakeword_model |
hey_jarvis |
Also: alexa, hey_mycroft, hey_rhasspy. |
wakeword_threshold |
0.5 |
Lower = triggers more easily; raise if it false-fires. |
endpoint_silence_ms |
1500 |
Silence (ms) that ends a hands-free utterance. |
energy_threshold |
0.01 |
Loudness that counts as speech. |
Build from source / run the tests
git clone https://github.com/Bhargava-R-dev/localwhisper
cd localwhisper
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -c "import openwakeword.utils as u; u.download_models()"
# run from source
.\.venv\Scripts\python.exe -m localwhisper.app
# run the tests
.\.venv\Scripts\python.exe -m pytest -v
Build the distributable EXE
.\.venv\Scripts\python.exe -m pip install pyinstaller
.\.venv\Scripts\python.exe packaging\build_exe.py
Output lands in dist\LocalWhisper\. See packaging/ for the installer scripts and how the release ZIP is assembled.
How it works
One microphone stream feeds a small state machine. When idle it runs the wake-word detector; the two hotkeys post events from a background thread. Any trigger records audio, hands it to the warm whisper model, and pastes the result at the cursor via the clipboard. Everything runs locally on CPU.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file localwhisper-0.1.1.tar.gz.
File metadata
- Download URL: localwhisper-0.1.1.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
068d6d139d439f667a5049bd99cb90cf615d83b3f15214ed55c9fafcea3d2765
|
|
| MD5 |
51d7aa85ef3350e7b229c95d0df661a9
|
|
| BLAKE2b-256 |
dd02a25e2318c30c7a8b706ce158b9e3c53b73f869b51e4c4bf099d454a681e6
|
File details
Details for the file localwhisper-0.1.1-py3-none-any.whl.
File metadata
- Download URL: localwhisper-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
672464b5ec8fb185584fa0313c67337761f797e4cddcb1210f71b08882f83653
|
|
| MD5 |
59558be9363c900db9c1bddbc520bb60
|
|
| BLAKE2b-256 |
d18d4af4965a1f2ba2f71f2ab08569527d328b5f42149584f9be4694b12b0933
|