A macOS menu-bar voice input app. Press a trigger key, speak, and text is typed into the focused input field.
- Native On-Device ASR via qwen3-asr-swift (MLX Swift):
- Qwen3-ASR 1.7B -- best accuracy on Apple Silicon (default)
- Qwen3-ASR 0.6B -- faster, lower latency variant
- Additional Engines (switchable from menu bar):
- Apple (Streaming) -- built-in, no setup needed
- Cohere Transcribe -- via remote vLLM server
- Recording Modes: Hold, Toggle (Enter to send), Auto (silence detection)
- LLM Refinement (optional): Clean up filler words using local Ollama LLM
- Languages: Chinese, English, Japanese, Korean, Auto
- HUD Capsule: Floating waveform animation with real-time transcription preview
- Streaming: Partial results displayed during recording
- Unicode Typing: Direct CGEvent text injection (no clipboard)
- macOS 15.0+
- Apple Silicon (M1/M2/M3/M4)
- Xcode (for Metal shader compilation)
- Accessibility permission (for key monitoring)
- Microphone permission
# Build and install the app
make install
# Run the app
open /Applications/ClaudeVoice15.appGrant Accessibility and Microphone permissions when prompted.
The app runs as a menu-bar icon (no Dock icon). Click the microphone icon to configure.
Models are downloaded automatically from HuggingFace on first use (~680MB for 0.6B, ~3.2GB for 1.7B).
Runs entirely on-device via MLX Swift. No server, no network, no setup.
- 1.7B: Best accuracy (default)
- 0.6B: Lower latency
Switch between models from the menu bar under STT Engine.
Built-in macOS speech recognition. Works out of the box.
Requires a GPU server with vLLM:
# On a GPU server:
docker run -d --gpus '"device=0"' -p 8000:8000 \
vllm/vllm-openai:latest \
--model CohereLabs/cohere-transcribe-03-2026 --port 8000 --host 0.0.0.0Removes filler words from transcription using a local LLM via Ollama:
# Install Ollama, then pull a small model:
ollama pull qwen3:1.7bEnable from menu bar: LLM Refinement (Ollama).
Right Option key. Changeable from menu bar.
| File | Description |
|---|---|
AppDelegate.swift |
Central orchestrator, recording flow, mode handling |
AudioEngine.swift |
AVAudioEngine, RMS calculation, WAV/Float export |
NativeASREngine.swift |
On-device Qwen3-ASR inference via MLX Swift |
WhisperClient.swift |
OpenAI-compatible API client (Cohere) |
SpeechRecognizer.swift |
Apple SFSpeechRecognizer streaming wrapper |
LLMRefiner.swift |
Ollama LLM integration for text cleanup |
TextInjector.swift |
CGEvent Unicode text typing |
FnKeyMonitor.swift |
Global hotkey monitoring via CGEvent tap |
MenuBarManager.swift |
NSStatusItem menu bar UI |
CapsulePanel.swift |
Floating HUD window |
WaveformView.swift |
5-bar waveform animation |
Settings.swift |
UserDefaults persistence |
MIT