System-wide voice dictation for macOS, powered by ChatGPT's own web dictation — no API keys, no per-use cost, no local model downloads.
Hold the hotkey → speak → release → the transcript is pasted into whatever app has focus.
- Hold-to-talk — hold Right ⌥ (default, configurable), speak, release.
- Hands-free mode — double-tap the hotkey, talk freely, tap once to stop.
- Dictation pill — floating HUD with a live waveform, ✕ cancel and ✓ submit buttons that never steal focus from the app you're typing into.
- History — every transcript saved locally; pin, copy, multi-select delete.
- Works everywhere — any app with a text field: editors, browsers, chat apps.
- Self-updating — checks GitHub Releases and updates in place (SHA-256 verified).
- Private by design — audio goes only to chatgpt.com through your own logged-in session, exactly as if you used dictation on the website. History stays on your Mac.
A hidden WKWebView keeps a logged-in chatgpt.com session. The hotkey drives ChatGPT's dictation buttons:
hotkey down → click "Start dictation" (mic listens)
hotkey up → click "Submit dictation" (ChatGPT transcribes server-side)
→ read transcript from composer (the message is NEVER sent)
→ clear composer → paste into the focused app
Pure Swift, single binary, zero external dependencies. ~150–250 MB while the page is loaded, ~30 MB idle in keep-warm mode.
- Grab
EchoType.dmgfrom the latest release. - Open it and drag EchoType onto the Applications shortcut.
- First launch: the app is not notarized, so right-click → Open → Open (only needed once). Alternatively:
xattr -dr com.apple.quarantine /Applications/EchoType.app
git clone https://github.com/DevWizardHQ/EchoType.git
cd EchoType
./scripts/build-app.sh
cp -R dist/EchoType.app /Applications/
open /Applications/EchoType.appRequires macOS 14+ and Xcode command line tools.
- Grant Microphone and Accessibility when prompted (Accessibility powers the global hotkey and paste).
- The login window opens → sign in to ChatGPT (Google SSO works). Cookies persist across restarts.
- Hold Right ⌥ and talk. Release to paste.
| Action | Gesture |
|---|---|
| Dictate | Hold hotkey, speak, release |
| Hands-free dictation | Double-tap hotkey, speak, tap once to finish |
| Cancel mid-dictation | Click ✕ on the pill |
| Finish & paste | Release the key (hold mode) or click ✓ |
| History | Menu bar icon → History… |
- Hotkey — any key or modifier, hold-to-talk.
- Keep ChatGPT ready — Always (instant dictation) or Only while in use (unloads after idle to free RAM; first dictation after idle waits a few seconds).
- Launch at login.
- Updates — automatic daily checks, or check manually any time.
- Hotkey does nothing — System Settings → Privacy & Security → Accessibility → enable EchoType, then relaunch.
- "Logged out" errors — menu bar icon → Log in to ChatGPT… and sign in again.
- Dictation stopped working after a ChatGPT redesign — all DOM selectors live in
Sources/EchoType/Selectors.swift; the app logs every button it sees to~/Library/Logs/EchoType.logon a selector miss. PRs welcome. - Anything else — check
~/Library/Logs/EchoType.log, and see CONTRIBUTING.md for the built-in diagnostic mode.
See CONTRIBUTING.md. Bug reports and selector patches are especially welcome — ChatGPT's UI changes from time to time.
MIT © DevWizardHQ