Skip to main content

Local faster-whisper speech-to-text app with global hotkeys for Windows

Project description

Whisper Key - Local Speech-to-Text

Global hotkeys to record speech and transcribe directly to your cursor.

Now on Windows and macOS! Questions or ideas? Discord

✨ Features

  • Global Hotkey: Start recording speech from any app
  • Auto-Paste: Transcribe directly to cursor
  • Auto-Send: Optionally auto-send your transcription with ENTER
  • Offline Capable: No internet required after models downloaded
  • Local Processing: Voice data never leaves your computer
  • Efficient Models: Choose a small, efficient model for CPU
  • CUDA Support: Or leverage your nVidia GPU with bigger models
  • Voice activity detection: Auto-cancel after long silences and prevent hallucination
  • Cross-platform: Works on Windows and macOS
  • Configurable: Customize hotkeys, models, and much more

🚀 Quick Start

From PyPI (Recommended)

Requires Python 3.11-3.13

# With pipx (isolated environment)
pipx install whisper-key-local

# Or with pip (simpler)
pip install whisper-key-local

Then run: whisper-key

Portable App (Windows Only)

  1. Download the latest release zip
  2. Extract and run whisper-key.exe

From Source

git clone https://github.com/PinW/whisper-key-local.git
cd whisper-key-local
pip install -e .
python whisper-key.py

🎤 Basic Usage

Hotkey Windows macOS
Start recording Ctrl+Win Fn+Ctrl
Stop & transcribe Ctrl Fn
Stop & auto-send Alt Option
Cancel recording Esc Shift

Open the system tray / menu bar icon to:

  • Toggle auto-paste vs clipboard-only
  • Change transcription model
  • Select audio device

⚙️ Configuration

Local settings at:

  • Windows: %APPDATA%\whisperkey\user_settings.yaml
  • macOS: ~/Library/Application Support/whisperkey/user_settings.yaml

Delete this file and restart app to reset to defaults.

Option Default Notes
Whisper
whisper.model tiny Any model defined in whisper.models
whisper.device cpu cpu or cuda (NVIDIA GPU)
whisper.compute_type int8 int8/float16/float32
whisper.language auto auto or language code (en, es, fr, etc.)
whisper.beam_size 5 Higher = more accurate but slower (1-10)
whisper.models (see config) Add custom HuggingFace or local models
Hotkeys
hotkey.recording_hotkey ctrl+win / fn+ctrl Windows / macOS
hotkey.stop_with_modifier_enabled true Stop with first modifier only
hotkey.auto_enter_enabled true Enable auto-send hotkey
hotkey.auto_enter_combination alt / option Stop + paste + Enter
hotkey.cancel_combination esc / shift Cancel recording
Voice Activity Detection
vad.vad_precheck_enabled true Prevent hallucinations on silence
vad.vad_onset_threshold 0.7 Speech detection start (0.0-1.0)
vad.vad_offset_threshold 0.55 Speech detection end (0.0-1.0)
vad.vad_min_speech_duration 0.1 Min speech segment (seconds)
vad.vad_realtime_enabled true Auto-stop on silence
vad.vad_silence_timeout_seconds 30.0 Seconds before auto-stop
Audio
audio.host null Audio API (WASAPI, Core Audio, etc.)
audio.channels 1 1 = mono, 2 = stereo
audio.dtype float32 float32/int16/int24/int32
audio.max_duration 900 Max recording seconds (0 = unlimited)
audio.input_device default Device ID or "default"
Clipboard
clipboard.auto_paste true false = clipboard only
clipboard.paste_hotkey ctrl+v / cmd+v Paste key simulation
clipboard.preserve_clipboard true Restore clipboard after paste
clipboard.key_simulation_delay 0.05 Delay between keystrokes (seconds)
Logging
logging.level INFO DEBUG/INFO/WARNING/ERROR/CRITICAL
logging.file.enabled true Write to app.log
logging.console.enabled true Print to console
logging.console.level WARNING Console verbosity
Audio Feedback
audio_feedback.enabled true Play sounds on record/stop
audio_feedback.start_sound assets/sounds/... Custom sound file path
audio_feedback.stop_sound assets/sounds/... Custom sound file path
audio_feedback.cancel_sound assets/sounds/... Custom sound file path
System Tray
system_tray.enabled true Show tray icon
system_tray.tooltip Whisper Key Hover text
Console
console.start_hidden false Start minimized to tray

📁 Model Cache

Default path for transcription models (via HuggingFace):

  • Windows: %USERPROFILE%\.cache\huggingface\hub\
  • macOS: ~/.cache/huggingface/hub/

📦 Dependencies

Cross-platform: faster-whisper · numpy · sounddevice · soxr · pyperclip · ruamel.yaml · pystray · Pillow · playsound3 · ten-vad · hf-xet

Windows: global-hotkeys · pywin32 · pyautogui

macOS: pyobjc-framework-Quartz · pyobjc-framework-ApplicationServices

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_key_local-0.6.1.tar.gz (552.4 kB view details)

Uploaded Source

Built Distribution

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

whisper_key_local-0.6.1-py3-none-any.whl (559.9 kB view details)

Uploaded Python 3

File details

Details for the file whisper_key_local-0.6.1.tar.gz.

File metadata

  • Download URL: whisper_key_local-0.6.1.tar.gz
  • Upload date:
  • Size: 552.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for whisper_key_local-0.6.1.tar.gz
Algorithm Hash digest
SHA256 118882a593affe52db7df1247426a42536695073bcb5a5d8ed764733601263ed
MD5 8e5de5aaf2ad36307be75e558d846121
BLAKE2b-256 8122e99e1866112a516e5ebba00688acdf6364bdcd4560a1953364bc0c070b0c

See more details on using hashes here.

File details

Details for the file whisper_key_local-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for whisper_key_local-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d374c46529f548027cf2f802b77d5a5657cf23f9761152e64979b30a23c03e34
MD5 250b6586238c77ab999e613f76c04a59
BLAKE2b-256 54ec5784a455b783a566d616ecbcb80e2e7e79e3002f3f68af1597c7902caa3e

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