Fast, local voice-to-text for macOS using faster-whisper. Hold a hotkey to record, release to transcribe and inject text into any input field. The most simple privacy-focused voice-to-text solution for macOS.
- Ultra-fast transcription with faster-whisper small model optimized for Apple Silicon
- Hold-to-record interface (Cmd+Shift+Space by default)
- Local processing - no internet required, completely private
- Automatic text injection into focused input field using AppleScript
- Voice Activity Detection to filter out silence
- macOS (Apple Silicon M1/M2/M3)
- Python 3.9+
- Microphone access
- Install dependencies:
pip install -r requirements.txt- Grant permissions:
- Microphone Access: You'll be prompted on first run
- Accessibility Access: System Settings > Privacy & Security > Accessibility
- Add Terminal (or your Python IDE) to the list
Run the script:
python main.pyTo use:
- Hold
Cmd+Shift+Spaceto start recording - Speak your text
- Release the keys to stop and transcribe
- Text will be automatically typed into the focused input field
Exit: Press Ctrl+C in the terminal
Edit main.py to customize:
wispa = Wispa(
model_size="small", # Options: tiny, base, small, medium, large-v3
hotkey="<cmd>+<shift>+<space>" # Change hotkey combination
)Language: Change line 115 from language="en" to your language code, or None for auto-detection
On Apple Silicon M1:
- Model loading: ~2-5 seconds (one-time at startup)
- Transcription: ~1-3 seconds for typical voice clips (5-10 seconds of speech)
- Memory usage: ~500MB-1GB
"No audio recorded!"
- Check microphone permissions in System Settings
Text not injecting:
- Grant Accessibility permissions to Terminal/IDE
- Try clicking into the input field before recording
Slow transcription:
- Use
tinyorbasemodel for faster results - Reduce
cpu_threadsif CPU usage is too high
Built with:
- faster-whisper - Fast Whisper implementation
- pynput - Keyboard listener
- sounddevice - Audio recording