Lemon Whisper is a minimal macOS tool to:
- Record your voice anywhere
- Transcribe locally with Whisper.cpp
- Paste the text automatically
- Never send your audio to the cloud
- Two transcription modes:
- Base Transcription: Record complete audio, then transcribe when you stop (more accurate)
- Live Transcription: Real-time transcription as you speak with automatic pause detection
- Local-only transcription with Whisper.cpp
- Language selection through menu bar
- Hotkey integration with Hammerspoon
- Smart menu bar indicator (🍋 idle, 📝 working)
Open your Terminal and run:
git clone https://github.com/JeffryCA/lemon-whisper.git
cd lemon-whisper-
Install Homebrew (if you don't have it):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Install dependencies:
brew install cmake
-
Create and activate a Python virtual environment:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt -
Install Hammerspoon:
brew install --cask hammerspoon
-
Make the installer script executable:
chmod +x install.sh
-
If you already have Whisper.cpp built elsewhere and want to avoid duplication, set the environment variable:
export WHISPER_CPP_PATH=/path/to/your/whisper.cpp -
Run the installer:
./install.sh
This will:
- Clone and build Whisper.cpp if needed
- Download the quantized model and VAD model if missing
- Create the
tempfolder
✅ No additional edits needed.
Hammerspoon handles the global hotkey and the 🍋 indicator.
- Open Hammerspoon (
/Applications/Hammerspoon.app) - Click the menu bar icon > Open Config
- Add the code from the
init.luafile in this repository to yourinit.luafile.Important: Replace
/full/path/to/lemon-whisperwith the absolute path to your Lemon Whisper folder. - Save the file.
- In the Hammerspoon menu, click Reload Config.
Click the 🍋 icon in your menu bar to choose between:
- Base Transcription: Traditional record-then-transcribe workflow
- Live Transcription: Real-time transcription as you speak
You can also select your preferred language from the same menu.
- Place your cursor where you want the transcribed text to appear.
- Press
Ctrl + Yto start recording. - For Base Mode: Speak your message, then press
Ctrlto stop and transcribe. - For Live Mode: Speak naturally - text appears in real-time with automatic pause detection.
- The transcribed text will be automatically copied and pasted.
Notes:
- While recording, macOS shows a microphone indicator in the menu bar.
- The 🍋 icon changes to 📝 during processing.
- For Live Mode: If you pause for 0.6 seconds, it triggers transcription automatically.
- If you record less than 0.5s, transcription is skipped.
You can adjust transcription settings by editing the Python files:
- Base mode settings: Edit
base.py - Live mode settings: Edit
live.pyPAUSE_THRESHOLD: Silence duration (default: 0.6s) before triggering transcriptionVAD_THRESHOLD: Voice activity sensitivity (default: 0.6)
The Hammerspoon menu allows you to:
- Switch between Base and Live transcription modes
- Select transcription language (Auto, English, Spanish, German, etc.)
- See current mode and language selection with checkmarks
PRs welcome! Feel free to open issues or suggest improvements.