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.1.tar.gz (20.9 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.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

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

Hashes for localwhisper-0.1.1.tar.gz
Algorithm Hash digest
SHA256 068d6d139d439f667a5049bd99cb90cf615d83b3f15214ed55c9fafcea3d2765
MD5 51d7aa85ef3350e7b229c95d0df661a9
BLAKE2b-256 dd02a25e2318c30c7a8b706ce158b9e3c53b73f869b51e4c4bf099d454a681e6

See more details on using hashes here.

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

Hashes for localwhisper-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 672464b5ec8fb185584fa0313c67337761f797e4cddcb1210f71b08882f83653
MD5 59558be9363c900db9c1bddbc520bb60
BLAKE2b-256 d18d4af4965a1f2ba2f71f2ab08569527d328b5f42149584f9be4694b12b0933

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