Skip to main content

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)

  1. Go to the Releases page and download LocalWhisper-Setup.zip.
  2. Extract the ZIP (right-click → Extract All). Keep the folder structure.
  3. Double-click Install.bat and 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

MIT

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

localwhisper-0.1.2.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

localwhisper-0.1.2-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file localwhisper-0.1.2.tar.gz.

File metadata

  • Download URL: localwhisper-0.1.2.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for localwhisper-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a1ae5bff209ac949fbc96e86cd036b21fbedd41edcb49f4105cecd86b88cb481
MD5 689cf780e597eec95d1e8083a77f020f
BLAKE2b-256 5e8087b80d12c1d31bfacb44468dada664eb1c4ab6797a3f08fe3e8e71d9747b

See more details on using hashes here.

File details

Details for the file localwhisper-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: localwhisper-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for localwhisper-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b6d7c5e20f7e03ac6755c2b07047165caf2d3ec67cd5171d44771b60e74d7dbc
MD5 6132cc1c6e481309fb4e025ec94c6773
BLAKE2b-256 85944217aa6caa3372dcbe40d9beb04ff80abc249b14e042de3ccf546fb4d407

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page