Skip to main content

Double-tap Control to dictate with Whisper. Transcribes and pastes to any text field. macOS only.

Project description

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:

  1. Ask you to choose a model (tiny.en for speed, or distil-large-v3 for accuracy)
  2. Download the model
  3. Request microphone and accessibility permissions
  4. 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whisper_hotkey-0.1.0.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whisper_hotkey-0.1.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file whisper_hotkey-0.1.0.tar.gz.

File metadata

  • Download URL: whisper_hotkey-0.1.0.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for whisper_hotkey-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e5c2e15d7832432890eae543dc615e0e4d01c3e450bea82715bf3842ccbd157
MD5 a4bca21206e389419c6d9d62ae843bd5
BLAKE2b-256 3578513d4b7550655617ecc1260fbb667b116c72b3d21752a7c1a8cbfe6b8f25

See more details on using hashes here.

File details

Details for the file whisper_hotkey-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: whisper_hotkey-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for whisper_hotkey-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43cc4a6140a06402ce43ecb18d5b665ae7365e07e99d175f31aa60265353cb25
MD5 47d7c9f79e05641f3848a1401c9e03f8
BLAKE2b-256 9fe3b15ecd0a039e7dc672546ecc7a1e8256b8c51045d2a56d4541da9c4da992

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page