talktoclaude
Say it. It's typed. Nothing leaves the room.
Press the button on your earbuds, say something, stop talking. It gets typed into whatever window has focus, and Enter is pressed. Built to talk to Claude Code from the couch. No cloud, no account, no subscription, no waiting.
Windows 11, x64 and arm64. Per-user installer, no admin; a portable zip is on the same page.
Watch it happen Press the button. Meet Sticky. Sticky has earbuds and opinions.
The conversation is made up; the timings are the desktop measurements. One line is real: "then commit and close" came out as "the milk and clothes" in an actual session, and that mishear is replayed as it happened.
How it works Four steps. Three of them are you.
Why this is slightly absurd and why it works anyway
- Zero latency to the cloud, because there is no cloud. The round trip is from your mouth to your CPU.
- Enterprise grade? No. Living-room grade. It has to survive a Bluetooth stack, a headset that won't send a second press, and a model that thinks "then commit and close" is "the milk and clothes". It does, mostly.
- Trained on nothing of yours. The model is whisper base.en, downloaded once. Your audio is decoded and forgotten in under a second.
- One exe, four DLLs, no runtime. No Python, no Electron, no 400 MB "helper". The installer is 2.7 MB.
- Open source, MIT. Every workaround is documented, including the ones that didn't work. Especially those.
"Finally, an app that respects my one button."
Get it running Under a minute, plus one model download.
- Run the installer. It goes into your user profile and onto your PATH, no admin prompt. Or unzip the portable build anywhere.
- Type
talktoclaudein any terminal, or open it from the Start menu. It lives in the notification area: grey when ready, red while listening, amber while transcribing. The first run fetches the speech model (142 MB) into your local app data. - Pair your earbuds. If Windows offers "Use LE Audio when available", turn it off: the buds have to sit in classic Bluetooth for the button to arrive.
- Focus the window you want to talk into, press the button, speak.
Click the icon to quit or open the logs. Ctrl+Alt+V takes the media button back if another app grabbed it. talktoclaude path\to\other-model.bin tries a different whisper model. Windows will warn about an unknown publisher the first time: "More info", then "Run anyway". A Store listing is on the way.
Numbers Measured, not marketed. Well, measured then marketed.
| Machine | Model | Transcription time |
|---|---|---|
| Ryzen 9 9950X3D, 32 threads | base.en | 0.2 to 0.5 s per utterance, about 5x faster than you spoke |
| Ryzen 9 9950X3D, 32 threads | small.en | 1.2 to 1.5 s per utterance |
| i7-8550U laptop, 8 threads | base.en | about as long as you spoke |
CPU only. Short utterances through an earbud mic are where base.en misses words; that is the trade for sub-second latency.
Things to know
- It owns the button while it runs. Windows gives the media button to one session, so your earbuds cannot pause a video while talktoclaude is open.
- It presses Enter. The transcript is submitted, not just typed. That is the point for a chat prompt, and a surprise anywhere else.
- Focus guard. The window in front when you pressed is the only window that gets the text. Switch windows mid-sentence and the transcript is logged and dropped.
- English only, and the models are the English-only whisper builds.
- Windows only. Capture, trigger, and injection are WASAPI, SMTC, and SendInput. A Mac or Linux version would be a port of those three, not a recompile.
Under the hood
About 1,900 lines of C++ in eight files, with whisper.cpp linked in. WASAPI captures the mic and downmixes to 16 kHz mono. A hidden window registers a System Media Transport Controls session so the earbud press is delivered to it. Silence either side of the speech is trimmed before decoding, and the encoder context is shrunk to fit the audio, which is most of the speed. The design notes, including what did not work and why, are in CLAUDE.md.