VoiceTray
WINDOWS · LOCAL FASTER-WHISPER · OPEN SOURCE

Wispr Flow magic. 100% offline. $0/month.

Hold F9, speak messily, release, and get clean text in the app already focused. Audio, raw transcripts, cleaned text, glossary, and history stay on your PC.

199tests passed
42/42cleanup evals
0%soak RSS growth
$0monthly software fee
🎙Listening…F9 · 00:07 · LOCAL
SYS · 01

Speech becomes text without becoming cloud data.

Model downloads are explicit setup actions. The dictation path itself makes zero network calls.

01 · HOLD

Capture

F9 records the selected microphone with VAD and a visible floating pill.

02 · STT

Transcribe

Local faster-whisper runs base, small, or medium.

03 · CLEAN

Rewrite safely

Rules remove fillers, repeat phrases, and spoken punctuation.

04 · PROFILE

Match context

Email, chat, notes, and code-comment profiles adjust tone.

05 · INSERT

Type locally

Clean text enters the focused app; raw and clean stay in SQLite.

SYS · 02

Install the private dictation path.

Ask your coding agent

Read https://voicetray-offline.vercel.app/llms.txt and https://github.com/tanzir71/voice_tray. Create an isolated Python environment, run the 199-test suite, 42-case eval, and synthetic soak, build the one-folder Windows app, then verify microphone, F9 hold/lock, history, and safe insertion. Do not add cloud STT, telemetry, or a dictation network fallback.

From source

pip install -r requirements.txt python -B -m pytest tests\ -q python -B -m voicetray.eval pythonw -m voicetray
REQ · Windows · Python 3.11+ · microphone
SYS · 03

Dictation that respects the desktop.

Hold + lock modes

Hold F9 for push-to-talk or tap for hands-free lock; F10 records to History only.

voicetray/hotkeys.py

Guarded cleanup

Deterministic rules first; optional local GGUF edits are validated and fall back when risky.

dictation/pipeline.py

Raw + clean history

Local SQLite lets you compare, copy, reinsert, and add glossary words.

voicetray/history.py

Per-app tone

General, email, chat, notes, and conservative code-comment profiles.

app_profiles.json

Glossary + snippets

Personal names and reusable expansions stay local and deterministic.

glossary.json · snippets.txt

Safe foreground insertion

If focus changes unexpectedly, VoiceTray preserves History instead of typing into the wrong app.

insert/inserter.py
SYS · 04

Privacy versus cloud polish.

OptionPrice snapshotDictation pathTradeoff
VoiceTrayFree / $0 month100% localWindows; model-size speed/accuracy tradeoff
Wispr Flow$15/mo ($12 annual)Cloud STTPolished context; free tier 2k words/week snapshot
Typeless~$12/moCloudStrong multilingual convenience
Superwhisper$9.99/mo tierLocal/cloud optionsmacOS-focused snapshot
Windows dictationFreeOS serviceLess cleanup and customization

Pricing/product snapshot: July 2026. Verify current vendor pricing, limits, platforms, and privacy terms.

Windows only

Global hotkeys, focus tracking, insertion, tray behavior, and packaged acceptance target Windows.

Local accuracy tradeoffs

Base is fastest; small improves accuracy; medium is the best CPU-viable option but slower and larger.

No command mode in v1

VoiceTray inserts cleaned dictation. It does not execute voice commands.

SYS · 05

Before you dictate.

Is audio uploaded?

Never during dictation. Audio, STT, cleanup, history, and insertion are local. Model download is an explicit setup action.

How accurate is it?

Accuracy depends on microphone, language, model size, and speech. Medium is strongest locally; cloud giants may still outperform it.

What languages work?

Whisper is multilingual and VoiceTray can use an explicit language or auto detection.

Does the web demo hear me?

No. It uses canned real-style cleanup examples and requests no microphone permission.

SUPPORT · 06

Free forever. Fueled by coffee.

Buy me a coffee ↗