Skip to main content

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.

Two hotkeys work out of the box:

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)

There is also an optional "Hey Jarvis" wake word — but it is OFF by default (see Optional wake word below), because an always-on listener can false-trigger and type transcribed audio into whatever window is focused.

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.


Optional wake word

The "Hey Jarvis" wake word is disabled by default. It is an always-on microphone listener that types transcribed audio into the focused window, so a false trigger (from a meeting, a video, or background speech) can insert unwanted text. Hotkeys are safer because they only act when you press them.

To enable it (no reinstall needed), create a file at %LOCALAPPDATA%\LocalWhisper\config.json with:

{
  "wakeword_enabled": true,
  "wakeword_threshold": 0.8
}

Then quit and relaunch LocalWhisper (or log out/in). Raise wakeword_threshold toward 0.9 if it still false-fires. To turn it back off, set "wakeword_enabled": false (or delete the file). The same file overrides any other setting in the table below.

Tuning

Every field in localwhisper/config.py can be overridden by the config.json file above — no rebuild required:

Setting Default What it does
model_name small.en Transcription model. base.en is faster, less accurate.
wakeword_enabled false Turn the always-on wake word on/off.
wakeword_model hey_jarvis Also: alexa, hey_mycroft, hey_rhasspy.
wakeword_threshold 0.75 Higher = fewer false triggers.
wakeword_patience 3 Consecutive detections required to fire (rejects blips).
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

Metadata

Release files for localwhisper 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for localwhisper 0.1.4
File Size Uploaded Provenance Actions
localwhisper-0.1.4.tar.gz 24.1 kB Without provenance Details for localwhisper-0.1.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for localwhisper 0.1.4
File Interpreter ABI Platform Actions
localwhisper-0.1.4-py3-none-any.whl Python 3 none any Details for localwhisper-0.1.4-py3-none-any.whl

Total release size: 46.2 kB

Release files / localwhisper-0.1.4.tar.gz

Download URL localwhisper-0.1.4.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
00a675bee7a4ddfec9ccbfd3ad6ac9d5f32b0ef4e03bb56de1ca7c9c523dd783
BLAKE2b-256 checksum
How to use checksums
93f38bc34fcf70ac430f1465da619ca4008e4601b937907431d32056c9ea3d53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / localwhisper-0.1.4-py3-none-any.whl

Download URL localwhisper-0.1.4-py3-none-any.whl
Size 22.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d25070d28c02a05527f3180d2a6192d0bec1f087d5542198796397e9ee9e2e1b
BLAKE2b-256 checksum
How to use checksums
ac84368a4afd1703769f2756b542d01dada2158cd09c4ba2b5433415a528cb1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Security for localwhisper 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page