Echo is a macOS menu-bar voice dictation app that records speech, transcribes it, refines with AI, and types the result into your active application.
brew install sox
cd echo
npm install
npm run setup # Build local Whisper (optional)
npm startOn first launch, Echo will guide you through:
- Microphone — required for recording
- Accessibility — required to insert text into other apps
- Speech Recognition — required for live transcription (macOS STT)
| Method | Action |
|---|---|
| fn key (hold) | Hold fn to record, release to stop |
| fn key (double-tap) | Toggle recording on/off |
| fn key (single-tap) | Stop toggle recording |
Hotkey (default ⌘⇧V) |
Toggle or hold-to-talk (per Settings) |
| Overlay click | Toggle recording |
| Tray menu | Start/stop recording |
| Esc | Cancel recording |
- Recording Mode — Toggle (press to start/stop) or Hold (hold keys to record)
- Start Delay — Milliseconds before recording begins (prevents accidental triggers)
- Silence Detection — Auto-stop after period of silence
- STT Engine — Choose transcription backend
- Transcription Language — Language for STT (or auto-detect)
- Provider — Claude CLI, Codex CLI, Claude API, OpenAI API, Ollama, Llama.cpp, or None
- Grammar Check — Second pass for grammar/punctuation
- Voice Commands — "new line", "scratch that", etc.
- Templates — Voice-triggered text snippets
Add vocabulary entries so Echo learns your terms:
- Term — Correct spelling (e.g., "React")
- Misrecognitions — What STT gets wrong (e.g., "react, re act")
Echo also auto-learns corrections after 3 consistent matches.
Search and re-insert past dictations from the History tab.
| Command | Result |
|---|---|
| "new line" | Line break |
| "new paragraph" | Paragraph break |
| "period" | . |
| "comma" | , |
| "scratch that" | Cancel (skip refinement) |
| "undo that" | Cancel (skip refinement) |
Create templates triggered by voice:
- Name: Email Signature
- Trigger: "type my email signature"
- Content: Best regards,\nYour Name
| Problem | Solution |
|---|---|
| SoX not found | brew install sox |
| Whisper not ready | Settings → build binary + download model |
| Accessibility denied | System Settings → Privacy → Accessibility → Echo |
| Groq/API errors | Validate API key in Settings |
| Ollama not running | ollama serve |
| No speech detected | Check microphone, speak closer |
Settings → General → Copy Logs for bug reports.
Settings → LLM → Provider Health shows status of all configured backends.
| Key | Action |
|---|---|
⌘⇧V |
Record (default hotkey) |
⌘⇧B |
Toggle overlay |
Esc |
Cancel recording |
fn (hold) |
Hold-to-talk |
- STT Engine → Local Whisper.cpp
- Build Whisper binary + download model in Settings
- LLM Provider → Llama.cpp or None
- Disable window context and screenshots
See PRIVACY.md for data handling details.