SYSTEM TRAY · WHISPER.CPP GPU · ZERO CLOUD

Speak. Think out loud. Ctrl+V.

A Windows tray app that records your voice, transcribes it on your GPU with whisper.cpp, and puts the text straight on the clipboard. One click to start, one click to stop. For talking to any AI (just paste), developing ideas at speaking speed (3× faster than typing), and keeping everything private — voice carries emotion and context you might not want on anyone's server.

3-8 s/min
whisper.cpp large-v3 on CUDA
1 click
left-click the tray icon: record / stop
📋 clipboard
Set-Clipboard when done — Ctrl+V in any app
0 cloud
audio never leaves your machine; no Python/Torch to install
How it works

Click → Speak → Click → Ctrl+V.

the pipeline
🎙️ Microphone
   └─▶ ffmpeg (dshow, 16 kHz mono WAV)
          └─▶ whisper.cpp large-v3 on GPU (~3-8 s/min)
                 ├─▶ 📋 Clipboard (Set-Clipboard)
                 └─▶ 🎵 note_YYYYMMDD_HHMMSS.mp3 (backup on Desktop)

   icon states:  🔴 idle · 🔴💓 recording · 🟡 processing · 🟢 ready

Color-coded status in the tray icon. A single-instance mutex keeps two recorders from fighting over the mic. Silent autostart via a VBS launcher (no console window on login).

whisper.cpp large-v3CUDA 12ffmpeg dshowPowerShellsystem trayMP3 archive
Local by choice, not by limit. The recorder reaches whisper through a single swappable step. Don't have a GPU, or don't care about privacy? Point that step at OpenAI's hosted Whisper API and it works just the same — you just accept the trade-off: a per-minute cost and audio that leaves your machine. This build runs it fully local: zero inference cost, nothing ever leaves your computer. Same design — the call is yours.
Engineering notes

The details that bite you on Windows.

🎤

The dshow "Alternative" name

dshow exposes two names per device: the display name (with Unicode, e.g. Micrófono (HyperX)) and the "Alternative name" (always ASCII). PowerShell passes arguments as ANSI — accents in the display name corrupt the argument and silently fail to open the mic. Using the Alternative name avoids the trap.

🛑

Stopping ffmpeg gracefully

Killing ffmpeg with Kill() truncates the file (no trailer). Instead, the script sends q over stdin — ffmpeg's standard quit signal — and waits up to 8s for a clean exit. Result: a properly finalized WAV/MP3.

🔤

PowerShell 5.1 + ASCII

PS 5.1 reads a .ps1 without a BOM as ANSI: accents in source-code literals break parsing. The script stays ASCII-only in its source; whisper's output is read at runtime with -Encoding UTF8, so accents in the transcription come out correctly.

🗣️

Why not the Windows Speech API

Windows STT is decent for commands but struggles with technical vocabulary, code, or spontaneous speech in Spanish (or multilingual). Whisper large-v3 handles all of that accurately, including mixed-language output.