EchoType is a macOS menu bar app for fast voice-to-text in any application.
It records from your microphone, sends the audio to Groq (model: whisper-large-v3), and inserts the resulting text at your current cursor position.
- Runs as a menu bar app (no Dock icon).
- Works in any app you can type into (Mail, Slack, Notes, browsers, IDEs, etc.).
- Uses a global hotkey:
- Double-tap Control: start recording (will be translated to English before insert)
- Triple-tap Control: start recording (transcribe only, no translation)
- Single-tap Control while recording: stop, process, then insert
- Plays system sounds for start/stop/error feedback.
- Prompts for and stores your Groq API key.
- Guides you through required macOS permissions.
- macOS (tested on Apple Silicon)
- A Groq API key
- Internet access (audio is sent to Groq for transcription/translation)
- Download the latest
EchoType.app.zipfrom the project’s Releases page. - Double-click to unzip it.
- Move
EchoType.appinto yourApplicationsfolder. - Open
Applicationsand launch EchoType.
If you see a warning because the app is not signed/notarized:
- Try right-click
EchoType.app-> Open (this often shows an “Open” button). - Or go to System Settings -> Privacy & Security and click Open Anyway for EchoType.
- Launch EchoType.
- When prompted, paste your Groq API key (the full key is visible, not masked).
- Grant permissions when macOS asks (EchoType will remember your choices).
EchoType needs these permissions to work correctly:
- Microphone: to record your voice
- Input Monitoring: to detect the Control hotkey globally
- Accessibility: to insert text into other apps at the cursor
If something doesn’t work, open the tray menu and click Permissions… to jump to the right Settings page. After changing permissions, quit and relaunch EchoType.
- Click where you want the text to be inserted (place your caret).
- Double-tap Control to start recording (English translation mode).
- Speak.
- Single-tap Control to stop.
- EchoType transcribes/translates and inserts the text at your cursor.
- Double-tap Control: translate speech to English, then insert
- Triple-tap Control: transcribe in the original spoken language, then insert
EchoType includes a menu bar icon with:
- Status line (Ready/Recording/Processing/Error)
- Enable/Disable Hotkey
- Permissions…
- Set/Update Groq API Key…
- Quit
- Ensure Input Monitoring permission is enabled for EchoType.
- Use tray menu -> Permissions… to open the exact settings page.
- Quit and relaunch EchoType after granting permissions.
- Ensure Accessibility permission is enabled for EchoType.
- Quit and relaunch after granting.
- Ensure Microphone permission is enabled for EchoType.
- Ensure your default input device exists and works in macOS Sound settings.
EchoType is single-instance. If you see duplicates, quit all instances and re-open the one in:
/Applications/EchoType.app
- Hotkey detection
- Uses a CoreGraphics event tap (
CGEventTap) to listen for Control key taps globally.
- Uses a CoreGraphics event tap (
- Audio recording
- Records the default input device via
cpal. - Encodes audio as mono 16-bit WAV via
hound.
- Records the default input device via
- Speech-to-text
- Sends the WAV to Groq’s OpenAI-compatible Whisper endpoints using
reqwest. - Model:
whisper-large-v3 - Two modes:
- Transcription:
/audio/transcriptions - Translation to English:
/audio/translations
- Transcription:
- Sends the WAV to Groq’s OpenAI-compatible Whisper endpoints using
- Text insertion
- Types the result into the currently focused app using
enigo. - Waits briefly for mouse/caret activity to settle so the text lands where you just clicked.
- Types the result into the currently focused app using
- Rust toolchain (stable)
cargo-bundleinstalled:
cargo install cargo-bundleFrom the project root:
cargo bundle --releaseThe app bundle will be created at:
target/release/bundle/osx/EchoType.app
# Make sure EchoType is not running (menu bar icon -> Quit) before reinstalling.
rm -rf "/Applications/EchoType.app"
ditto "target/release/bundle/osx/EchoType.app" "/Applications/EchoType.app"
open "/Applications/EchoType.app"Audio is sent to Groq’s API for transcription/translation. Do not use EchoType for sensitive audio unless you understand and accept that.