macOS status bar app for local speech-to-text using MLX Whisper on Apple Silicon, with Ollama or OpenAI post-processing.
- local transcription with MLX Whisper
- menu bar UI with global hotkey recording
- automatic paste back into the previously focused app
- optional post-processing via Ollama or OpenAI
- optional translation
- launch at login toggle in Preferences
- macOS on Apple Silicon
- Python 3.11+
- uv
- Ollama for local post-processing
git clone https://github.com/basuev/localwhisper.git
cd localwhisper
bash scripts/install.shAfter installation:
- allow Microphone access when macOS asks
- allow Accessibility access for the terminal or
localwhisper - wait for the first Whisper model download to finish on first launch
- focus the app where you want text inserted
- press
Right Optionto start recording - press
Right Optionagain to stop recording - wait for transcription and optional post-processing
- the result is pasted back into the previously focused app
Press Escape during recording to cancel.
Config file: ~/.config/localwhisper/config.yaml
Important settings:
| option | default | description |
|---|---|---|
whisper_model |
mlx-community/whisper-large-v3-mlx |
Whisper model |
language |
ru |
speech language |
ollama_model |
gemma3:4b |
Ollama model |
postprocessor |
ollama |
ollama or openai |
launch_at_login |
true |
start app automatically after login |
hotkey_keycode |
61 |
hotkey, 61 is Right Option |
translate_to |
null |
translation target or disabled |
input_device |
null |
audio input device or system default |
See config.example.yaml for the full config.
| purpose | path |
|---|---|
| config | ~/.config/localwhisper/config.yaml |
| auth | ~/.config/localwhisper/auth.json |
| history | ~/.local/share/localwhisper/history.jsonl |
| logs | ~/.local/share/localwhisper/app.log |
Install dependencies:
uv sync --group devRun from source:
./scripts/run.shVerify:
bash scripts/verify.sh