A dictation app for macOS. Hold a shortcut, talk, let go, and the text is typed wherever your cursor is, in any app.
- Speech recognition runs on your Mac (Parakeet v3). Your audio never leaves it.
- Cleanup with Claude Haiku removes filler words and fixes punctuation. You use your own Anthropic API key, and it costs less than 1 cent per 1,000 words dictated.
- Or completely free and local: choose Local only and a small model on your Mac does the cleanup. Nothing leaves your Mac, but it's noticeably worse than Haiku.
- Hold to talk, or hands-free mode. Esc cancels.
- A small pill under the menu bar that moves with your voice.
- Cleanup levels Off, Light and Medium; styles Formal, Casual, lowercase and Excited.
- Reads the window you're dictating into, so names on screen are spelled right (optional).
- Dictionary for names and jargon, plus fixes like "clawed → Claude". Fix a word after it's pasted and Diction learns it.
- Swaps: say a short phrase, get a longer text typed, like your address or a link.
- Searchable history of everything you've dictated.
- Formats for the app you're dictating into: paragraphs in email, no final period in chat, exact file names, paths and commands in terminals and coding agents.
- Meeting notes: records your mic and the call, labels "Me" and "Others", and transcribes on your Mac. Offers to start when a call app or a browser meeting starts using the microphone, and stops by itself when the call ends. Each meeting is one Markdown file with a short summary, listed in an INDEX.md that an AI agent can search.
- Pauses music and video while you dictate.
- Languages: English, German, Spanish, French, Italian, or automatic.
You need macOS 14 or later and Xcode 16 or later.
- Clone the repo and open
Diction.xcodeproj. - Pick your signing team: select the Diction target, then Signing & Capabilities, then your team.
Or copy
Config/LocalSigning.xcconfig.exampletoConfig/LocalSigning.xcconfigand setDEVELOPMENT_TEAMthere. - Press ⌘R. Xcode fetches the Swift packages on the first build.
On first launch Diction asks how to clean up your dictations (Claude Haiku or Local only) and for three permissions (Microphone, Accessibility, Input Monitoring). It downloads the speech model and a small cleanup model (about 0.5 GB). After that it works offline.
- Hold to talk: Right ⌘ + Right ⌥. Release to paste.
- Hands-free: Right ⌘ + Right ⌥ + Space. Press again, or click the pill, to finish.
- Both shortcuts can be changed in Settings (⌘, in the Diction window).
To use Claude Haiku, paste your Anthropic API key during setup or in Settings. Get one at platform.claude.com. The key stays in your Mac's Keychain. Anthropic gets the transcript, the name of the app you're dictating into and its window title (in a browser, that's the tab title), so the cleanup can format the text for that app. In terminals and coding apps it also gets your Mac user name and home folder, so spoken paths come out right. The text read from your window is sent only if that option is on. Switch between Claude Haiku and Local only any time in Settings → Cleanup.
Haiku follows built-in cleanup rules. To tune them to how you talk, put your own instructions in ~/Library/Application Support/Diction/haiku_prompt.txt; Diction uses that file instead whenever it exists.
Diction started as a fork of Ghost Pepper by Matt Hartman. See THIRD_PARTY_NOTICES.md.
MIT, see LICENSE.