A fully local dictation app for macOS and iOS. Hold a key or trigger a shortcut, speak, release — accurate text appears instantly. Fully private, no cloud dependency.
- Multi-Platform — Native apps for macOS (Menu Bar) and iOS (Universal App).
- System-wide push-to-talk — Works in any text field on macOS.
- Siri Shortcuts & Action Button — Trigger iOS dictation from anywhere, even when locked.
- On-device ASR — Whisper large-v3-turbo via WhisperKit on macOS; Parakeet TDT v3 via FluidAudio on iOS — both run on the Apple Neural Engine.
- AI cleanup mode — Grammar, punctuation, word-order, and filler-word correction via Qwen3.5-4B (llama.cpp), on both macOS and iOS. Optional and opt-in — triggered by its own shortcut, with a deterministic fidelity guard that blocks the model from rewriting what you actually dictated.
- Spoken punctuation — Say "comma", "new line", etc. and it's inserted deterministically before cleanup.
- Auto language detection — German and English, no manual switching.
- Live transcript panel (macOS) — while you hold the dictation key, a small panel near your text cursor shows the words as you speak; the pasted text still comes from the full final decode. Turn it off in Settings → General.
- Media auto-pause (macOS) — playing media (Music, Spotify, browser video) is paused, or muted when it can't be paused, while you dictate, and resumes on release.
- Local History & Search — Browse and search your past transcriptions with FTS5.
- Custom Dictionary — Define your own replacements for technical terms or names; import/export as CSV/JSON and add bundled starter packs.
- macOS 26+ (Tahoe)
- Apple Silicon Mac (Intel Macs launch the universal binary, but transcription without the Neural Engine is too slow to recommend)
- ~1 GB disk for the ASR model, plus ~2.7 GB for the optional AI-cleanup model (downloaded only if you enable AI cleanup)
- iOS 17+
- iPhone 15 or later (for Action Button optimization), or any modern iPhone/iPad. AI cleanup requires a device with ≥5 GB RAM.
- ~1.2 GB disk for the ASR model (Parakeet TDT v3), plus ~2.7 GB for the optional AI-cleanup model.
- Download
Dicticus.dmgfrom Releases - Open the DMG and drag Dicticus to Applications
- Launch Dicticus — it's Developer ID signed and notarized, so it opens normally (no Gatekeeper override needed).
- Grant Microphone and Accessibility permissions when prompted.
- Build from source using Xcode 26.
- Grant Microphone permission during onboarding.
- Download the ASR model (one-time setup).
- Follow the in-app guides to setup the Start Dictation Siri Shortcut.
Prefer the script: ./scripts/uninstall.sh quits Dicticus, removes the app bundle, preference files, and the LaunchAtLogin entry, then prompts before deleting the ~3 GB model cache.
To uninstall by hand, remove these four locations:
/Applications/Dicticus.app~/Library/Preferences/com.dicticus.*.plist~/Library/Application Support/Dicticus/(contains the Qwen3.5 AI-cleanup model, the WhisperKit ASR cache, andhistory.sqlite)~/Library/LaunchAgents/com.dicticus.app.plist(LaunchAtLogin entry; only present if you enabled "Start at login")
TCC permission entries: macOS does not let any app clean its own Privacy & Security entries. After uninstalling, open System Settings > Privacy & Security and remove Dicticus from Microphone, Accessibility, and Input Monitoring before reinstalling — otherwise stale TCC entries from previous bundle copies can block hotkeys.
The app icon is generated from a single source: assets/icon-master.png (1024×1024 PNG, committed to the repo).
To change the icon:
- Replace
assets/icon-master.pngwith a new 1024×1024 PNG. - Run
./scripts/generate-icons.shto fan the master out to:- all ten macOS appiconset PNGs (16/32/128/256/512 × 1x and 2x)
- the single iOS
AppIcon.png(iOS 18 unified icon model)
- Commit the regenerated PNGs along with your master change — generated outputs are tracked in git so PR reviewers can spot unintended icon changes visually.
- Clean-build (
scripts/build-dmg.shorxcodebuild -scheme Dicticus -configuration Release clean build) before verifying in Finder; LaunchServices caches stale icons aggressively. If the new icon does not appear after a clean build, runkillall Dock Finderandsudo mdutil -E /to nuke icon caches.
- macOS: Hold a hotkey, speak, release. Two configurable hotkeys — plain dictation (default ⌃⇧S) and AI cleanup (default ⌃⇧D).
- iOS: Trigger the Start Dictation shortcut via voice, Action Button, or Back Tap.
- Dictionary: Manage replacements in Settings to improve accuracy for specific terms.
- History: Use the History tab on iOS or the Menu Bar on macOS to find past transcriptions.
All processing happens on-device. No audio or text is ever sent to any server. The app makes zero network calls during operation (model downloads happen once on first launch).
| Component | Technology |
|---|---|
| App shell | Swift 6 + SwiftUI, MenuBarExtra (macOS) |
| ASR | macOS: WhisperKit + Whisper large-v3-turbo · iOS: FluidAudio + Parakeet TDT v3 (both CoreML, Apple Neural Engine) |
| LLM | llama.cpp + Qwen3.5-4B Instruct Q4_K_M (Metal) — macOS + iOS |
| Database | GRDB + SQLite (FTS5) |
| Live Activity | ActivityKit (iOS) |
| Text injection | NSPasteboard (macOS) + UIPasteboard (iOS) |
# Prerequisites: Xcode 26+, xcodegen
brew install xcodegen
# macOS
cd macOS
xcodegen generate
xcodebuild -scheme Dicticus -configuration Release build
# iOS
cd iOS
xcodegen generate
# Open Dicticus.xcodeproj in Xcode 26 and Run on Device/SimulatorPrivate project. All rights reserved.
