voicman
A macOS menu bar dictation app that records from a global shortcut, transcribes with Apple Speech, and pastes into the active app.
Why it exists
Dictation should not require switching to another window. voicman lives in the menu bar with no regular main window, starts recording from a global hotkey, shows partial transcription while you speak, and can paste the finished text into whatever application is in front.
What it does
- Menu bar app with no regular main window during normal use
- Global hotkey, Option + Space by default
- Short press toggles recording; press and hold works as push-to-talk
- Floating panel showing live partial transcription
- Edit the text manually before submitting it
- Automatic paste into the active app when Accessibility permission is granted
- Clipboard-safe fallback behaviour when auto-paste is disabled
- Onboarding for microphone, speech recognition and accessibility permissions
Stack
- Swift
- SwiftUI
- AppKit
- AVFoundation
- Speech
- Carbon HotKey
Usage
xcodebuild -project voicman.xcodeproj -scheme voicman \
-configuration Debug -derivedDataPath build build
open build/Build/Products/Debug/voicman.app --args --reset-onboarding
Engineering notes
Capture and transcription are wired directly together rather than through a queue: AVAudioEngine streams audio buffers into SFSpeechRecognizer, and partial results are rendered in the floating panel while recording is still running. Settings and onboarding state live in UserDefaults, and the onboarding flow can be replayed with a --reset-onboarding launch argument, which is also how the permission path gets tested without reinstalling.
Limitations
- Automatic paste needs the Accessibility permission; without it the app falls back to copying into the clipboard.
- There is no dedicated test target in the repository yet, and the project is configured with MACOSX_DEPLOYMENT_TARGET = 26.1.