🌐 Visit tools.dubnext.com to download WisperLocal
📦 To install: download
WisperLocal-Setup.exefrom tools.dubnext.com and double-click itThat's everything you need — no Python, no setup, no command line.
The
Source Codefolder holds the full project (Python code, build scripts, installer config, docs, and tests). You only need it to build or modify WisperLocal for future development — not to use the app.
Press a key. Talk. It types — wherever your cursor is.
Download · Features · How to use · How it works · Samples · For developers
WisperLocal is a private, on-device dictation app for Windows — a free, local alternative to tools like Wispr Flow. Press a global hotkey, speak, and your words are transcribed by Whisper and pasted straight into whatever app you're using. Nothing leaves your machine — audio is never uploaded, and after a one-time model download it works fully offline.
It's free and unlimited — no accounts, no subscriptions, no telemetry, no per-word caps. A personal project by Chaand Sheikh.
The floating overlay appears right where you're working — speak, then press the hotkey again (or click ✓) and the text lands at your cursor.
🟢 Just want to use it? Download the installer below — that's everything you need. No Python, no setup, no command line.
Get WisperLocal-Setup.exe from tools.dubnext.com or download it directly and run it — it's a per-user installer, no admin required. A 🎙️ icon then appears in your system tray. (Optional AI enhancement needs nothing extra — the model downloads itself on first use.)
Requirements: Windows 10 or 11 · a microphone. Whisper models download automatically the first time you use them.
ℹ️ The installer isn't signed by a recognised publisher yet, so Windows SmartScreen shows a "Windows protected your PC" warning — click More info → Run anyway. (To remove the warning on your own machines, see [code signing](Source Code/docs/CODE_SIGNING.md).)
| 🎙️ Global hotkey dictation | Press Ctrl+Alt+W (configurable) in any app |
| 🌊 Live listening overlay | Floating waveform with cancel / insert buttons |
| 📋 Pastes at the cursor | Works in any app — keeps your place, no window-switching |
| ✍️ Built-in formatting | Capitalization, punctuation, spoken commands, filler removal |
| 🤖 Optional AI polish | Fix punctuation with a small local LLM (Qwen / Llama / Gemma) — GPU-accelerated, CPU fallback, never rewrites your words |
| 🧠 Any Whisper model | tiny → large-v3-turbo, downloaded on demand with a progress bar |
| ⚡ CPU or GPU | Runs on CPU; auto-uses your NVIDIA GPU when available |
| 🔁 Toggle or push-to-talk | Whichever recording style you prefer |
| 🔒 100% local & private | Offline after first download · no accounts · no telemetry |
| 💸 Free & unlimited | No subscriptions, no caps, ever |
- Click into any text field — a browser, Notepad, your IDE, a chat box.
- Press
Ctrl+Alt+W→ a beep sounds and the floating waveform appears. - Speak. Press
Ctrl+Alt+Wagain (or click ✓) to stop. - Your text is transcribed, cleaned up, and pasted right where your cursor was.
Double-click the tray icon any time to open the home window, run a system test, or change settings.
Pick speed vs. accuracy — models download on demand with a progress bar, so the installer stays tiny (nothing is bundled).
| Model | Size | Speed | Accuracy |
|---|---|---|---|
tiny / base |
75–150 MB | ⚡⚡⚡ | Good for quick notes |
small (default) |
~480 MB | ⚡⚡ | Great everyday balance |
medium |
~1.5 GB | ⚡ | More accurate |
large-v3-turbo |
~1.6 GB | ⚡⚡ | Best, and fast on a GPU |
For an extra touch of polish, WisperLocal can run your transcript through a small local language model that runs fully in-process — no Ollama, no server, nothing to keep running. Pick a lightweight model in Settings (Qwen 0.5B/1.5B, Llama 3.2 1B, or Google Gemma 2 2B); it downloads itself once from Hugging Face and is cached on your machine, then runs offline. It uses your GPU when one is available (cross-vendor, via Vulkan) and falls back to the CPU automatically otherwise. It's deliberately conservative — it only fixes punctuation and capitalization and never rewrites, rephrases, or reorders your words — and is off by default.
"so i think we should ship the feature on friday and tell the team"
↓
"So I think we should ship the feature on Friday, and tell the team."
flowchart LR
A([Hotkey]) --> B[Record mic]
B --> C[Whisper<br/>transcribe locally]
C --> D[Formatting<br/>caps - commands - fillers]
D --> E{Enhanced<br/>writing?}
E -- off --> G[Paste at cursor]
E -- on --> F[Local LLM<br/>polish]
F --> G
Every step runs on your computer. Full walk-through: [HOW_IT_WORKS.md](Source Code/docs/HOW_IT_WORKS.md).
Model, hotkey, microphone, language, CPU/GPU, recording mode, formatting rules, and enhanced writing — all from one dialog.
Real dictation, cleaned up entirely on-device — more in [SAMPLES.md](Source Code/docs/SAMPLES.md):
🎙️ "the the main point is um we need a lot more testing before we ship" ✍️ WisperLocal: "The main point is we need a lot more testing before we ship."
- Per-app profiles (different model/formatting per application)
- Custom vocabulary & text replacements
- Streaming / partial transcription
- More enhanced-writing backends
- Linux / macOS support
ℹ️ You only need this section to build or modify WisperLocal. To just use the app, download the installer above — you don't need any of this.
WisperLocal is a Python app (faster-whisper + PySide6). It runs from source on Python 3.12. All source lives in the Source Code folder — cd "Source Code" first, or clone the repo.
Run from source
cd "Source Code"
scripts\setup.bat # creates a venv and installs dependencies
scripts\run.bat # start it (or double-click scripts\run-hidden.vbs for no console)Build the app & installer (generate the .exe)
Step-by-step, from a fresh clone to a shippable WisperLocal-Setup-x.y.z.exe:
- Install the prerequisites — Python 3.12 and Inno Setup 6 (only needed for step 4).
- Open a terminal in the
Source Codefolder and set up the environment:cd "Source Code" scripts\setup.bat :: creates a venv and installs all dependencies
- Build the app with PyInstaller:
scripts\build.bat :: -> dist\WisperLocal\WisperLocal.exe - Build the installer with Inno Setup:
scripts\build-installer.bat :: -> installer_output\WisperLocal-Setup-x.y.z.exe - Done — the installer in
installer_output\is the file you ship (the same kind of file served at tools.dubnext.com).
Details (GPU bundling, Inno Setup) in [PACKAGING.md](Source Code/docs/PACKAGING.md).
Project layout
WisperLocal/
├── README.md CHANGELOG.md # this file + version history
└── Source Code/ # full project, for future development
├── LICENSE requirements.txt
├── run_app.py WisperLocal.spec # PyInstaller entry + spec
├── wisperlocal/ the app — controller, transcriber, overlay, enhancer, ...
├── assets/ app icon
├── docs/ screenshots + HOW_IT_WORKS - SAMPLES - PACKAGING - RELEASING
├── scripts/ setup - run - build - build-installer - run-hidden
├── installer/ WisperLocal.iss (Inno Setup)
├── tools/ gen_icon.py - gen_assets.py
└── tests/ smoke_test.py - tts_test.py
Releasing: see [RELEASING.md](Source Code/docs/RELEASING.md) and CHANGELOG.md. Pushing a vX.Y.Z tag triggers GitHub Actions, which builds the GPU-accelerated installer and publishes a Release. The CI builds llama.cpp with the Vulkan backend (GPU on NVIDIA/AMD/Intel, CPU fallback) and AVX disabled (runs on any CPU). A macOS (Metal) job is included but experimental — the app still needs platform adaptation (paste keystroke, startup mechanism) to be fully functional there.
faster-whisper · CTranslate2 · llama-cpp-python · PySide6 · sounddevice · pynput · Inno Setup
[MIT](Source Code/LICENSE) © 2026 Chaand Sheikh — do anything you like, just keep the notice. Whisper models carry their own (MIT) licenses.
Built for people who'd rather talk than type — and keep their words to themselves.


