Yap open-source on-device voice dictation for macOS – features, installation, and community feedback
Yap – Open‑source on‑device voice dictation for macOS
Yap provides instant, offline dictation on macOS 26+ by leveraging Apple’s built‑in SpeechAnalyzer and SpeechTranscriber APIs, eliminating the need for external models, API keys, or network traffic.
What Yap Does
Yap lives as a menu‑bar app. Press the global shortcut (default ⌘⇧D) and a small window appears with a live waveform and a live preview of the spoken text. Press the shortcut again and the transcript is pasted into the currently focused text field. All transcripts are saved locally for later retrieval.
The app does not ship any speech model; it streams audio to the OS‑provided on‑device model and receives partial results in real time.
Why Yap Is Different from macOS Built‑in Dictation
| Feature | macOS Built‑in Dictation | Yap |
|---|---|---|
| Activation | System‑wide shortcut, but no visual feedback | Same shortcut plus a live waveform and preview window |
| Model | Uses the same on‑device model but hidden behind a UI that does not expose partial results | Directly accesses SpeechAnalyzer for streaming results |
| Customizability | Fixed shortcut, no history, no re‑binding | Fully rebindable shortcut, optional single‑modifier trigger, transcript history with search |
| Privacy | Audio may be sent to Apple servers if “enhanced dictation” is enabled | No network traffic; all processing stays on the machine |
| Extensibility | Closed source, no way to audit | MIT‑licensed Swift code, ~3 k lines, 4 MB binary |
The key distinction is Yap’s live preview and clipboard‑based insertion that works across any app, plus a transparent open‑source implementation.
Technical Foundations
- Audio Capture –
AVAudioEnginepulls audio from the default microphone. Buffers recorded before the speech stack is ready are cached and flushed once the transcriber attaches, preventing clipped first words. - On‑Device Transcription –
SpeechAnalyzerstreams speech to text with volatile results enabled, providing the live preview.SFSpeechRecognizerserves as a fallback for locales not yet supported by the new API. - Insertion Logic – Yap copies the transcript to the clipboard, synthesizes a
⌘Vkeystroke via System Events, then restores the original clipboard contents. A deliberate delay ensures Chromium‑based apps (e.g., Chrome, Slack) read the pasteboard before it is overwritten. - State Management –
RecordingCoordinatoris a small state machine whose dependencies are protocol‑based, allowing comprehensive unit testing without a microphone.
Installation Options
- Homebrew (recommended):
brew install --cask frigadehq/tap/yap brew upgrade --cask yap # to update later - Direct download: Grab the signed
.dmgfrom the GitHub releases page and drag Yap to Applications.
Permissions Required
| Permission | Reason |
|---|---|
| Microphone | Capture audio |
| Speech Recognition | Access Apple’s on‑device model |
| Accessibility | Identify the focused UI element for pasting |
| Automation | Send the synthetic ⌘V keystroke |
Accessibility must be enabled manually in System Settings; macOS does not allow programmatic granting.
Performance and Accuracy
A benchmark cited by the developers shows Apple’s on‑device model achieving 2.12 % WER on clean audio and 4.56 % WER on noisy audio, outperforming Whisper Small (3.74 % / 7.95 %) while running roughly three times faster on the same dataset.
Community Feedback (Hacker News)
- Installation hiccup – A user reported that the Homebrew tap URL was broken (
Repository not found). The repository now exists atfrigadehq/homebrew-tap; the issue is being tracked on the project’s issue tracker. - Comparison to built‑in dictation – Several commenters asked how Yap differs from macOS’s native dictation. The answer is the live UI, clipboard‑based insertion that works in any app, and the open‑source nature that lets users audit the code.
- Feature requests – Users suggested a language picker (the most likely next addition) and a settings window accessible via
⌘,. The maintainers note that they intentionally keep the feature set minimal but will consider widely‑requested additions. - Bug reports – One user on macOS 27 Beta observed that transcription stopped after speaking despite correct permissions. The issue was filed and the maintainers are investigating compatibility with the beta OS.
- Use cases – Developers are integrating Yap with AI‑assisted workflows (e.g., feeding transcripts to Claude or other LLMs) to enable hands‑free prompting.
- Privacy praise – Commenters highlighted the privacy advantage of never leaving the machine, especially compared to cloud‑based services.
Limitations
- macOS version – Requires macOS 26 (Tahoe) or later because it depends on the new speech APIs. Earlier versions cannot run Yap.
- Unsandboxed – To drive System Events and access the clipboard, Yap runs unsandboxed and is distributed outside the Mac App Store, similar to other dictation utilities.
- No language picker yet – Currently follows the system locale; adding per‑session language selection is on the roadmap.
Getting Started with Development
# Clone and build in one step
git clone https://github.com/FrigadeHQ/yap.git && cd yap && ./install.sh
The script installs XcodeGen if needed, quits any running instance, builds the app, and launches it. For Xcode users:
xcodegen generate # generate Yap.xcodeproj
open Yap.xcodeproj # then ⌘R to run
Run the test suite with:
xcodebuild -project Yap.xcodeproj -scheme Yap -destination 'platform=macOS' test
Note that locally built binaries are signed ad‑hoc, causing macOS to treat each rebuild as a new app and forget granted permissions. The released builds are properly signed to avoid this.
License
Yap is released under the MIT License.
Bottom Line
Yap demonstrates that Apple’s on‑device speech models are now fast and accurate enough to replace heavyweight third‑party solutions. By exposing these models through a tiny, open‑source macOS utility, Yap gives users a privacy‑first, low‑latency dictation experience that works anywhere a keyboard does.
Sources
Related
- Project
- Project
- Project
- Project
- Project