Free, local, open-source push-to-talk transcription for Windows. Hold Ctrl+Shift, speak, release — text injected anywhere. GPU-accelerated with Distil-Whisper. No cloud, no subscription.
3
stars
232
commits
Python
primary language
Sep 8, 2026
updated
Free, local push-to-talk transcription for Windows — the open-source alternative to Wispr Flow. Hold a hotkey, speak, release — transcribed text is injected directly into any active application. No cloud, no subscription, no audio ever leaving your machine.

VoiceFlow runs quietly in the system tray and surfaces a minimal overlay only while you're recording.
While you hold Ctrl+Shift, the overlay appears at the bottom of your screen with a reactive waveform visualization and live streaming preview of the transcription:

The overlay is non-intrusive — it floats above your active application so you can see what you're dictating into:

As you speak, partial transcription streams in real time so you can see what VoiceFlow is picking up:

Once you release the hotkey, the finalized transcription is injected directly into whatever application has focus:

When not recording, VoiceFlow sits quietly in the tray — no overlay, no distractions:

| Feature | VoiceFlow | Wispr Flow |
|---|---|---|
| Price | Free / open-source | $13/month |
| Processing | 100% local, no cloud | Cloud-based |
| Privacy | Audio never leaves your machine | Sent to cloud for processing |
| GPU acceleration | Yes (CUDA) | N/A |
| Customizable | Yes (source available) | No |
| Platform | Windows | Mac & Windows |
VoiceFlow runs entirely on your machine using faster-whisper (Distil-Whisper Large v3.5 by default). There is no API call on the transcription path — audio goes in, text comes out locally, and is injected into whatever window you have focused.
It ships with a continual-learning system that adapts to your accent and vocabulary over time, a streaming preview that shows partial transcription while you speak, and a tray-first UI that stays out of the way when you're not using it.
Option A — Packaged EXE (recommended)
VoiceFlow-win64.exe from the latest release.Option B — From source
git clone https://github.com/GrimFandango42/VoiceFlow.git
cd VoiceFlow
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
# Run from the repo root (not from src/)
python _app_entry.py
GPU users: use
.venv-gpuwithpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118before the editable install.
Ctrl+Shift default)voiceflow/
├── core/
│ ├── asr_engine.py # faster-whisper inference, model tier selection
│ ├── audio_enhanced.py # sounddevice capture, VAD, chunking
│ ├── streaming.py # streaming partial results
│ ├── textproc.py # cleanup passes, destination-aware formatting
│ ├── preloader.py # background model pre-warming
│ └── config.py # typed config dataclass
├── ui/
│ ├── cli_enhanced.py # main entry point, hotkey listener, orchestration
│ ├── visual_indicators.py # overlay + dock UI (tkinter)
│ ├── tray.py # system tray (pystray)
│ └── setup_wizard.py # first-run wizard (tkinter)
├── ai/
│ ├── adaptive_memory.py # continual learning, pattern extraction
│ ├── daily_learning.py # nightly batch learning pass
│ └── course_corrector.py # real-time correction pipeline
├── models/
│ └── tray_state.py # shared state types between tray and orchestrator
└── platform/
└── factory.py # platform injection abstraction (Windows: pywin32)
The hotkey listener captures audio into a ring buffer, passes it through VAD, then calls the ASR engine. Text flows through the cleanup pipeline and is injected via the platform layer. The UI receives status updates over a thread-safe command queue.
| Platform | Status |
|---|---|
| Windows 10/11 | Fully supported |
| macOS | Community fork — see FORKING_AND_PLATFORM_GUIDE.md |
| Linux | Community fork — see FORKING_AND_PLATFORM_GUIDE.md |
Most settings are available through the setup wizard (right-click tray → Setup & Defaults). Config is stored at %LOCALAPPDATA%\VoiceFlow\config.json.
Key settings:
| Setting | Default | Description |
|---|---|---|
device | auto | cuda or cpu |
model_tier | quick | tiny, quick, balanced, quality |
enable_light_typo_correction | true | Light cleanup pass |
enable_safe_second_pass_cleanup | true | Second cleanup pass |
enable_heavy_second_pass_cleanup | false | Aggressive rewrite (opt-in) |
press_enter_after_paste | false | Auto-submit after paste |
VoiceFlow observes the delta between raw transcripts and final text. Recurring corrections are promoted into adaptive replacement rules.
%LOCALAPPDATA%\VoiceFlow\adaptive_patterns.json%LOCALAPPDATA%\VoiceFlow\daily_learning_reports\%LOCALAPPDATA%\VoiceFlow\engineering_terms.jsonmain.pip install -e ".[dev]"
pytest tests/ -x -q
visual_indicators.py; keep ASR changes in core/. Do not mix layers.dist\VoiceFlow\VoiceFlow.exe) for end-to-end validation.main with a description of what changed and why.See CONTRIBUTING.md for the full guide.
MIT — see LICENSE.
215 commits
17 commits
Python
95.4%
PowerShell
2.8%
Makefile
1.1%
Free, local, open-source push-to-talk transcription for Windows. Hold Ctrl+Shift, speak, release — text injected anywhere. GPU-accelerated with Distil-Whisper. No cloud, no subscription.
3
stars
232
commits
Python
primary language
Sep 8, 2026
updated
Free, local push-to-talk transcription for Windows — the open-source alternative to Wispr Flow. Hold a hotkey, speak, release — transcribed text is injected directly into any active application. No cloud, no subscription, no audio ever leaving your machine.

VoiceFlow runs quietly in the system tray and surfaces a minimal overlay only while you're recording.
While you hold Ctrl+Shift, the overlay appears at the bottom of your screen with a reactive waveform visualization and live streaming preview of the transcription:

The overlay is non-intrusive — it floats above your active application so you can see what you're dictating into:

As you speak, partial transcription streams in real time so you can see what VoiceFlow is picking up:

Once you release the hotkey, the finalized transcription is injected directly into whatever application has focus:

When not recording, VoiceFlow sits quietly in the tray — no overlay, no distractions:

| Feature | VoiceFlow | Wispr Flow |
|---|---|---|
| Price | Free / open-source | $13/month |
| Processing | 100% local, no cloud | Cloud-based |
| Privacy | Audio never leaves your machine | Sent to cloud for processing |
| GPU acceleration | Yes (CUDA) | N/A |
| Customizable | Yes (source available) | No |
| Platform | Windows | Mac & Windows |
VoiceFlow runs entirely on your machine using faster-whisper (Distil-Whisper Large v3.5 by default). There is no API call on the transcription path — audio goes in, text comes out locally, and is injected into whatever window you have focused.
It ships with a continual-learning system that adapts to your accent and vocabulary over time, a streaming preview that shows partial transcription while you speak, and a tray-first UI that stays out of the way when you're not using it.
Option A — Packaged EXE (recommended)
VoiceFlow-win64.exe from the latest release.Option B — From source
git clone https://github.com/GrimFandango42/VoiceFlow.git
cd VoiceFlow
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
# Run from the repo root (not from src/)
python _app_entry.py
GPU users: use
.venv-gpuwithpip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118before the editable install.
Ctrl+Shift default)voiceflow/
├── core/
│ ├── asr_engine.py # faster-whisper inference, model tier selection
│ ├── audio_enhanced.py # sounddevice capture, VAD, chunking
│ ├── streaming.py # streaming partial results
│ ├── textproc.py # cleanup passes, destination-aware formatting
│ ├── preloader.py # background model pre-warming
│ └── config.py # typed config dataclass
├── ui/
│ ├── cli_enhanced.py # main entry point, hotkey listener, orchestration
│ ├── visual_indicators.py # overlay + dock UI (tkinter)
│ ├── tray.py # system tray (pystray)
│ └── setup_wizard.py # first-run wizard (tkinter)
├── ai/
│ ├── adaptive_memory.py # continual learning, pattern extraction
│ ├── daily_learning.py # nightly batch learning pass
│ └── course_corrector.py # real-time correction pipeline
├── models/
│ └── tray_state.py # shared state types between tray and orchestrator
└── platform/
└── factory.py # platform injection abstraction (Windows: pywin32)
The hotkey listener captures audio into a ring buffer, passes it through VAD, then calls the ASR engine. Text flows through the cleanup pipeline and is injected via the platform layer. The UI receives status updates over a thread-safe command queue.
| Platform | Status |
|---|---|
| Windows 10/11 | Fully supported |
| macOS | Community fork — see FORKING_AND_PLATFORM_GUIDE.md |
| Linux | Community fork — see FORKING_AND_PLATFORM_GUIDE.md |
Most settings are available through the setup wizard (right-click tray → Setup & Defaults). Config is stored at %LOCALAPPDATA%\VoiceFlow\config.json.
Key settings:
| Setting | Default | Description |
|---|---|---|
device | auto | cuda or cpu |
model_tier | quick | tiny, quick, balanced, quality |
enable_light_typo_correction | true | Light cleanup pass |
enable_safe_second_pass_cleanup | true | Second cleanup pass |
enable_heavy_second_pass_cleanup | false | Aggressive rewrite (opt-in) |
press_enter_after_paste | false | Auto-submit after paste |
VoiceFlow observes the delta between raw transcripts and final text. Recurring corrections are promoted into adaptive replacement rules.
%LOCALAPPDATA%\VoiceFlow\adaptive_patterns.json%LOCALAPPDATA%\VoiceFlow\daily_learning_reports\%LOCALAPPDATA%\VoiceFlow\engineering_terms.jsonmain.pip install -e ".[dev]"
pytest tests/ -x -q
visual_indicators.py; keep ASR changes in core/. Do not mix layers.dist\VoiceFlow\VoiceFlow.exe) for end-to-end validation.main with a description of what changed and why.See CONTRIBUTING.md for the full guide.
MIT — see LICENSE.
215 commits
17 commits
Python
95.4%
PowerShell
2.8%
Makefile
1.1%