whisper-ptt /

Local push-to-talk for macOS

Hold a key, speak, release to paste. Powered by whisper.cpp on Apple Silicon. Everything stays on-device.

Hold key record audio whisper.cpp transcribes text pasted at cursor

Install

curl -sL https://inlet.github.io/whisper-ptt/install.sh | bash

Requirements

After installing

1
Grant permissions
On first launch, macOS will prompt for Accessibility and Microphone access. Click Allow for both.
Permissions persist across updates — no need to re-grant after updating.
2
Configure Karabiner Elements
Add your key bindings to the complex_modifications.rules array in ~/.config/karabiner/karabiner.json
Show example JSON
The example uses F12, but you can change "key_code" to any key you prefer (e.g. "right_option", "f15").
{ "manipulators": [ { "description": "F12 push-to-talk: hold to record, release to transcribe", "from": { "key_code": "f12" }, "to": [ { "shell_command": "~/.config/whisper-ptt/start-recording.sh" } ], "to_after_key_up": [ { "shell_command": "~/.config/whisper-ptt/stop-and-transcribe.sh" } ], "type": "basic" } ] }

Paste into profiles[0].complex_modifications.rules in ~/.config/karabiner/karabiner.json

Karabiner picks up changes automatically — no restart needed.

Manage

Update
~/.config/whisper-ptt/update.sh
Re-runs the installer to fetch the latest release
Switch model
~/.config/whisper-ptt/switch-model.sh
Interactively switch between Whisper models (tiny, base, small, medium, large-v3)
Uninstall
~/.config/whisper-ptt/uninstall.sh
Removes all installed files, LaunchAgents, and ~/.config/whisper-ptt

Features

🔒

100% Local & Free

No cloud, no API keys, no subscriptions. Works offline too.

⚡

GPU Accelerated

whisper.cpp with Metal. Transcription in under a second.

ðŸŽŊ

Paste Anywhere

Text appears at your cursor in any app.

🌍

Multilingual

Auto-detects or select a language from the menu bar. 20+ languages supported.

âœĻ

Grammar Correction

Toggle LLM-powered grammar fix via Ollama from the menu bar.

🔊

Audio Feedback

Sound cues when recording starts and stops. Always know the state.

ðŸ“Ķ

One-Line Install

Single curl command. Up and running in seconds.

ðŸŠķ

Lightweight

Background daemons with minimal footprint. No Electron app.