whisper-hotkey
Double-tap Control to dictate with Whisper on macOS. Transcribes your speech and pastes it into whatever text field is focused.
Uses faster-whisper (CTranslate2) with int8 quantization for fast local inference. No cloud APIs, everything runs on your machine.
Install
uvx whisper-hotkey install
This will:
- Ask you to choose a model (tiny.en for speed, or distil-large-v3 for accuracy)
- Download the model
- Request microphone and accessibility permissions
- Install a LaunchAgent so it starts automatically on login
Usage
After install, just double-tap the Control key to start recording. Double-tap again to stop — your speech is transcribed and pasted into the active text field.
That's it. It works across all apps, survives reboots, and runs in the background.
Commands
whisper-hotkey install # Interactive setup (model, permissions, auto-start)
whisper-hotkey uninstall # Remove auto-start
whisper-hotkey status # Check if the service is running
whisper-hotkey # Run the service directly (not needed after install)
Requirements
- macOS (Apple Silicon or Intel)
- Python 3.12+
- uv (recommended) or pip
Models
| Model | Size | Speed | Accuracy |
|---|---|---|---|
| tiny.en (default) | ~75MB | Fastest | Good for clear English |
| distil-large-v3 | ~1.5GB | Slower | Better with accents/noise |
Permissions
The app needs two macOS permissions:
- Microphone — to record your voice
- Accessibility — to detect the keyboard shortcut and paste text
The install command will prompt for these. If the shortcut doesn't work, check System Settings > Privacy & Security and make sure both your terminal and Python have Accessibility access.
Logs
tail -f ~/Library/Logs/whisper-hotkey/stdout.log
tail -f ~/Library/Logs/whisper-hotkey/stderr.log
License
MIT
Metadata
Release files for whisper-hotkey 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| whisper_hotkey-0.1.3.tar.gz | 45.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| whisper_hotkey-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.2 kB
Release files / whisper_hotkey-0.1.3.tar.gz
| Download URL | whisper_hotkey-0.1.3.tar.gz |
|---|---|
| Size | 45.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98c9769c5dacc7bbf1134c16d1fe74154a3ae9fbbe854988aa00556afc9c5bd5
|
|
BLAKE2b-256 checksum How to use checksums |
2a4d59204afd6d4546fe4e724777bd102e26c0f0eb64b7c8a2a9d7bb1e3c07df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.10
|
Release files / whisper_hotkey-0.1.3-py3-none-any.whl
| Download URL | whisper_hotkey-0.1.3-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c9d7240b5f30d20831312fd62238302c188feb2f48fe928608cd436b35cd78e
|
|
BLAKE2b-256 checksum How to use checksums |
ec8e55c79fe112e3aee7c8ed5aad0c258bf4a398541f32d5fc1092c24827e721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.10
|