OpenVoiceType

Open source · macOS 13.3+ on Apple Silicon

Speak anywhere on your Mac. Get clean text.

Press a hotkey and talk. OpenVoiceType transcribes on your Mac with Whisper, cleans up the words with the Claude Code you're already signed in to (or an API you choose, or fully offline), and pastes the result where you were typing.

Early software, not yet notarized by Apple: the first launch needs Open Anyway (how). MIT licensed.

Slack · #launch

You say“Um, so the budget is 15,400, no wait, 16,000 dollars, and we ship on, uh, Thursday.”

It pastesThe budget is $16,000, and we ship on Thursday.

On your MacAudio is transcribed locally and deleted. It never leaves the Mac.
2.7 sfrom stop to pasted text, for 8 s of speech (Claude Haiku, M3 Pro)
8 / 8safety cases: numbers and “not” kept, dictated instructions never obeyed
No API keyWorks with your own Claude Code, within your plan's usage limits

How it feels

Press, speak, and it's there.

  1. ⌃⌥Space

    Press the hotkey

    Or hold it while you talk. The app notes which app and window the text should go to.

  2. Speak naturally

    Say “um”, change your mind, list things. A small overlay shows it's listening.

  3. Clean text, pasted

    Punctuation, numbers, lists and your corrections applied, where you were typing. Your clipboard comes back.

What it does

Built for how people really talk.

Any app

Slack, Mail, VS Code, the terminal, the browser. If you switch away while it works, the text is copied instead, and it's never pasted into a password field.

Keeps your meaning

Filler words and false starts go; “Friday, no wait, Thursday” becomes Thursday. If a cleanup drops a number or a “not”, Whisper's own text is pasted instead.

Command Mode

Select text, press ⌃⌥⇧Space and say “make this shorter”, “bullet points” or “translate to Spanish”. ⌘Z brings the original back.

Knows the app

Casual for chat, paragraphs for email, exact identifiers for code, lists for notes. Add names and terms to the dictionary.

Your choice of engine

Your Claude Code (default), any OpenAI-compatible endpoint (Ollama, LM Studio, OpenAI, Groq), or S1-mini by Superwhisper on your Mac, offline.

Nothing lost

Offline, rate-limited or signed out? S1-mini cleans up instead, and failing that you get Whisper's text. ⌃⌥Z swaps the last paste between the two.

How well it works

Measured, with the method and the caveats.

On 2026-09-25, on an M3 Pro, with evals/run.py: 25 fixed cases. Seventeen check formatting (lists, numbers, corrections, email addresses, code); eight check safety (a number or a “not” must survive, and a dictated instruction must come back as text, not be carried out).

Cleanup engineFormattingSafetyMedian time per cleanup
Claude Haiku (default)17/17 (16/17 in some runs)8/8about 1.2 s pre-started, as in the app; 3.4 s with the CLI's startup
S1-mini, on this Mac8/177/80.7 s
Ollama llama3.2 3B, on this Mac9/173/81.8 s

Speed

  • From stop to text: a median of 2.3 s on short sentences. Real use: 2.7 s for 8 s of speech, 3.5–5.7 s for 17–22 s.
  • A plain claude -p call, as other apps use it: a median of 10.9 s and 22/25. OpenVoiceType's isolated call: 3.7 s and 25/25 one-shot, about 1.2 s when it's pre-started while you speak.
  • Command Mode: 19–20 of its 20 cases on Haiku, about 3–4 s per command.

Caveats

  • The test speech is synthesized with macOS say, not recorded from real voices.
  • 25 cases is a small set, from one maintainer's dictations.
  • The safety rules are a prompt plus a check for dropped numbers and negations: mitigations, not guarantees.
  • Small local models are much weaker; for an API engine, pick a capable model.

Privacy

Your voice stays on your Mac.

Never leaves the Mac

  • Your audio: recorded to a temporary file, transcribed by a local Whisper, then deleted
  • Your dictionary, settings and logs (logs keep timings, not your words)
  • API keys, kept in your Keychain

Sent only to the engine you pick

  • The transcript text, with the app's name, the mode and your dictionary terms
  • Command Mode: the selected text and your instruction, only when you press its key
  • With S1-mini, or cleanup off, none of your words are sent

Never

  • No servers of ours, no telemetry, no analytics
  • Your Claude login is never read or stored; an exported ANTHROPIC_API_KEY is ignored, so nothing quietly bills the API
  • One daily update check asks GitHub for the latest release (it can be turned off)

How it uses Claude Code, and what Anthropic's terms say: Claude Code and Anthropic's terms →

Install

Three steps, no Terminal needed.

  1. Download

    Get OpenVoiceType-<version>.dmg from the latest release, open it, and drag OpenVoiceType to Applications.

  2. Open Anyway, once

    The app isn't notarized by Apple yet. The first time, click Done, then System Settings → Privacy & Security → Open Anyway.

  3. Follow the setup

    Microphone and Accessibility permissions, a speech model (574 MB), and Claude Code or S1-mini for the cleanup. Then dictate into the Try it box.

Requires macOS 13.3 or later on Apple Silicon. Prefer to build it yourself? Build from source →

Try it on your next message.