A fast, private, open-source voice-dictation app for macOS. Hold a key, talk — in English, 中文, Español, 日本語, or 30+ other languages — and your words land as clean, punctuated text in whatever app you're using. Your audio never leaves your Mac — everything runs on-device.
English · 简体中文 · Deutsch · Español · Français · Italiano · 日本語 · 한국어 · Nederlands · Polski · Português · Русский · Svenska · Türkçe · Українська · Tiếng Việt
North star: Speak anywhere, get clean text instantly, with your audio never leaving your Mac.
- 🔒 Private by design. Audio and transcripts stay on your Mac. No account, no telemetry, no cloud — there's nothing to opt out of.
- ⚡ Latency is the feature. Native Swift with Apple's on-device speech model — time-to-text is what we optimize.
- 🌍 Speaks your language. Dictate in 30+ languages — not just English. Cleanup understands each language's conventions (full-width 中文 punctuation, spoken 句号, language-aware fillers), the app picks an engine that actually supports your language, and the UI itself ships in 16 languages.
- 🎙️ Press-to-talk anywhere. A global hotkey works in any app; the cleaned text is inserted right where your cursor is.
- ✨ Smart cleanup. Punctuation, capitalization, and filler removal — without ever changing your words.
- 📊 Your voice, visualized. A calm Home dashboard tracks your words, pace, and day streaks, with a full activity heatmap and a friendly, on-device usage summary — all computed on your Mac.
- 🧩 Pluggable engines. Apple's built-in model by default, with an optional on-device upgrade — NVIDIA Parakeet — you can download and switch to, one at a time.
- ⬇ Download VoiceType.dmg from the latest release.
- Open the DMG and drag VoiceType into your Applications folder. The app is signed and notarized by Apple, so it launches with a normal double-click — no Gatekeeper workaround needed.
- Grant the three permissions VoiceType asks for — Microphone, Speech Recognition, and Accessibility — and you're set.
Requires macOS 26 or later (Apple Silicon).
Updates are automatic. VoiceType checks for new versions in the background (and on demand via Check for Updates…) and installs them in place with Sparkle — every update is cryptographically signed and verified. No need to re-download. (Auto-update works from v0.1.1 onward; the very first build, v0.1.0, has to be replaced once by hand.)
Hold Right Option (⌥) anywhere and start talking. A frosted pill appears showing a live waveform while it listens; release the key and your cleaned-up text is inserted into the focused app. Open the window any time to see your Home dashboard — your pace, totals, activity heatmap, and where you dictate. Change the key, language, engines, and cleanup in Settings.
Everything runs on-device. Apple's model is built into macOS and selected by default; you can download other local engines from the Models page in the sidebar and switch between them (one is active at a time).
| Stage | Default (built-in) | Optional alternatives (on-device) |
|---|---|---|
| Transcription | Apple SpeechTranscriber |
Parakeet TDT 0.6B V3 (NVIDIA, via FluidAudio) · Whisper Base (OpenAI, via WhisperKit) — downloaded on demand |
| Cleanup | Built-in rules (instant, deterministic) | Apple Intelligence (FoundationModels) — built into macOS, no download |
Downloadable models are fetched once on demand (no cloud at inference time — your audio still never leaves the Mac) and run as CoreML on the Apple Neural Engine. VoiceType automatically falls back to an available engine if your choice can't run, and always degrades to plain text rather than failing.
The Parakeet speech model is © NVIDIA, licensed under CC-BY-4.0. FluidAudio is Apache-2.0. Whisper is OpenAI (MIT); WhisperKit is MIT.
VoiceType is multilingual end-to-end, not English-with-subtitles:
- Dictate in 30+ languages — English, 中文, Español, Français, Deutsch, 日本語, 한국어, Português, Русский, Tiếng Việt, and more. You pick the language; VoiceType never guesses.
- Engines are matched to your language. Each speech model declares what it supports (Parakeet is European-only; Nemotron covers 40 locales including Chinese; Whisper is broadly multilingual; Apple's list comes from macOS). Models that can't handle your language gray out, and VoiceType switches to one that can.
- Cleanup knows the language. Each language ships a small, reviewable "language pack": its filler words (嗯/呃, ähm, euh — never words that carry meaning), its punctuation conventions (full-width 。,? for Chinese and Japanese, spoken 句号/読点 rendered as marks), and its question heuristics.
- The app itself is localized into 16 languages, following your macOS system language (per-app override in System Settings works too).
Your language missing, or a translation off? Adding a language is deliberately small — a UI translation needs no Swift at all — see docs/LOCALIZATION.md.
Audio and transcripts stay on your Mac, full stop — there is no cloud path. Nothing is logged off-device, and audio is never written to disk. Even the friendly usage summary is built from aggregate counts only — never your transcript text. This is a constitutional invariant of the project, not a setting we might change later.
swift test # run the VoiceTypeKit unit tests
./Scripts/build-app.sh # build VoiceType.app (ad-hoc signed)
./Scripts/make-dmg.sh # package a drag-to-install VoiceType.dmg
open VoiceType.appContributions are welcome. Please read the contribution guide for development requirements, privacy expectations, and pull-request guidance. Want VoiceType in your language? docs/LOCALIZATION.md has the checklist — a UI translation needs no Swift at all, and dictation quality for a new language is one well-documented file. All participants are expected to follow the Code of Conduct. For vulnerabilities, follow the private reporting process in our Security Policy.
Native Swift 6 / SwiftUI Dock app (macOS 26) with a Home dashboard. Global
push-to-talk hotkey · AVAudioEngine mic capture · pluggable on-device
transcription · pluggable cleanup · paste/Accessibility text injection · a
floating recording HUD. The core (VoiceTypeKit) is pure and unit-tested; the app
target holds the system engines and UI. Details live in CLAUDE.md
and evolve via specs/.
MIT © 2026 Michael Li.
Third-party components and on-device models bundled with the app retain their own
licenses — see THIRD_PARTY_LICENSES.md (also shipped
inside the app bundle).
VoiceType is a standalone product repo run day-to-day by an agent (the outer
loop: triage → review → merge/escalate), with a human supplying taste by
editing specs/. It links the @aros/* framework during
local dev. See CLAUDE.md for the operating rules.
VoiceType/
├── CLAUDE.md # operating rules for the agent
├── Package.swift # SwiftPM: VoiceTypeKit (core) + VoiceType (app)
├── Sources/
│ ├── VoiceTypeKit/ # pure, tested core: protocols, pipeline, cleanup, resolver
│ └── VoiceType/ # app: hotkey, audio, engines, injection, dashboard UI
├── Tests/ # VoiceTypeKit unit tests
├── Scripts/ # build-app.sh · make-dmg.sh · make-icon.swift · release.sh
├── Resources/ # Info.plist · entitlements · AppIcon
├── specs/ # the human's surface — product direction (agent doesn't edit)
└── README.md