44
55<h1 align =" center " >VocaMac</h1 >
66
7- [ ![ Build & Test] ( https://github.com/jatinkrmalik/vocamac/actions/workflows/ci.yml/badge.svg )] ( https://github.com/jatinkrmalik/vocamac/actions/workflows/ci.yml ) [ ![ License: AGPL-3.0] ( https://img.shields.io/badge/License-AGPL--3.0-blue.svg )] ( https://www.gnu.org/licenses/agpl-3.0 ) [ ![ Platform: macOS] ( https://img.shields.io/badge/Platform-macOS%2013%2B-lightgrey.svg )] ( https://github.com/jatinkrmalik/vocamac ) [ ![ Swift 5.9+] ( https://img.shields.io/badge/Swift-5.9%2B-orange.svg )] ( https://swift.org ) [ ![ Website ] ( https://img.shields.io/badge/Web-vocamac.com-007AFF.svg )] ( https://vocamac.com ) [ ![ GitHub stars ] ( https://img.shields.io/github/stars/jatinkrmalik/vocamac?style=social )] ( https://github.com/jatinkrmalik/vocamac/stargazers )
7+ [ ![ Build & Test] ( https://github.com/jatinkrmalik/vocamac/actions/workflows/ci.yml/badge.svg )] ( https://github.com/jatinkrmalik/vocamac/actions/workflows/ci.yml ) [ ![ License: AGPL-3.0] ( https://img.shields.io/badge/License-AGPL--3.0-blue.svg )] ( https://www.gnu.org/licenses/agpl-3.0 ) [ ![ Platform: macOS] ( https://img.shields.io/badge/Platform-macOS%2013%2B-lightgrey.svg )] ( https://github.com/jatinkrmalik/vocamac ) [ ![ Swift 5.9+] ( https://img.shields.io/badge/Swift-5.9%2B-orange.svg )] ( https://swift.org )
88
99
10- ** Local voice-to-text for macOS — powered by [ WhisperKit] ( https://github.com/argmaxinc/WhisperKit ) **
10+ ** Local voice-to-text for macOS - powered by [ WhisperKit] ( https://github.com/argmaxinc/WhisperKit ) **
1111
1212VocaMac is a native macOS menu bar application that transcribes your voice to text locally on your machine. No cloud, no subscriptions, no data leaves your device. Just hold a hotkey, speak, and your words appear wherever your cursor is.
1313
14- 🌐 [ vocamac.com ] ( https://vocamac.com ) · 🐧 [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) · 🪟 VocaWin * (coming soon)*
14+ [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) · ** VocaMac ** · 🪟 VocaWin * (coming soon)* · 🌐 [ vocamac.com ] ( https://vocamac.com )
1515
1616---
1717
1818## ✨ Features
1919
20- - ** 🔒 100% Local** — All audio processing happens on your machine. No internet required (except for one-time model downloads).
21- - ** ⌨️ System-Wide Text Injection** — Transcribed text is typed wherever your cursor is: browsers, Slack, VS Code, spreadsheets, terminals — everywhere.
22- - ** 🎯 Push-to-Talk** — Hold a hotkey (default: Right Option) to record. Release to transcribe.
23- - ** 👆 Double-Tap Toggle** — Double-tap the hotkey to start/stop recording.
24- - ** 🧠 Smart Model Selection** — Auto-detects your hardware (Apple Silicon/Intel, RAM) and recommends the best whisper model via WhisperKit.
25- - ** ⚡ Native Apple Acceleration** — CoreML + Metal + Neural Engine acceleration on Apple Silicon. No manual setup.
26- - ** 📊 Visual Feedback** — Menu bar icon changes color during recording and processing. Audio level indicator shows input.
27- - ** ⚙️ Configurable** — Choose hotkeys, models, languages, silence detection thresholds, and more.
20+ - ** 🔒 100% Local** - All audio processing happens on your machine. No internet required (except for one-time model downloads).
21+ - ** ⌨️ System-Wide Text Injection** - Transcribed text is typed wherever your cursor is: browsers, Slack, VS Code, spreadsheets, terminals - everywhere.
22+ - ** 🎯 Push-to-Talk** - Hold a hotkey (default: Right Option) to record. Release to transcribe.
23+ - ** 👆 Double-Tap Toggle** - Double-tap the hotkey to start/stop recording.
24+ - ** 🧠 Smart Model Selection** - Auto-detects your hardware (Apple Silicon/Intel, RAM) and recommends the best whisper model via WhisperKit.
25+ - ** ⚡ Native Apple Acceleration** - CoreML + Metal + Neural Engine acceleration on Apple Silicon. No manual setup.
26+ - ** 📊 Visual Feedback** - Menu bar icon changes color during recording and processing. Audio level indicator shows input.
27+ - ** ⚙️ Configurable** - Choose hotkeys, models, languages, silence detection thresholds, and more.
2828
2929---
3030
@@ -50,8 +50,8 @@ Same accuracy, dramatically better Apple platform integration.
5050
5151- ** macOS 13 (Ventura)** or later
5252- ** Xcode 15+** or Swift 5.9+ (for building)
53- - ** Microphone permission** — For audio capture
54- - ** Accessibility permission** — For global hotkeys and text injection
53+ - ** Microphone permission** - For audio capture
54+ - ** Accessibility permission** - For global hotkeys and text injection
5555
5656---
5757
@@ -64,7 +64,7 @@ Same accuracy, dramatically better Apple platform integration.
6464git clone https://github.com/jatinkrmalik/vocamac.git
6565cd vocamac
6666
67- # Build (first build downloads WhisperKit dependency — ~1 min)
67+ # Build (first build downloads WhisperKit dependency - ~1 min)
6868swift build -c release
6969
7070# Run VocaMac
@@ -75,9 +75,9 @@ swift run -c release VocaMac
7575
76761 . ** VocaMac appears in your menu bar** (microphone icon, no Dock icon)
77772 . ** Grant Microphone permission** when prompted
78- 3 . ** Grant Accessibility permission** — VocaMac will guide you to System Settings → Privacy & Security → Accessibility
79- 4 . ** First model download** — WhisperKit automatically downloads the recommended model for your device (~ 40-500MB depending on hardware)
80- 5 . ** Start dictating** — Hold the ** Right Option** key, speak, and release. Your words appear at the cursor!
78+ 3 . ** Grant Accessibility permission** - VocaMac will guide you to System Settings → Privacy & Security → Accessibility
79+ 4 . ** First model download** - WhisperKit automatically downloads the recommended model for your device (~ 40-500MB depending on hardware)
80+ 5 . ** Start dictating** - Hold the ** Right Option** key, speak, and release. Your words appear at the cursor!
8181
8282---
8383
@@ -124,15 +124,16 @@ Models are downloaded automatically from [HuggingFace](https://huggingface.co/ar
124124Open Settings from the menu bar popover or with ** ⌘,**
125125
126126### General
127- - ** Activation mode** — Push-to-Talk or Double-Tap Toggle
128- - ** Hotkey** — Choose from Right Option, Right Command, Fn, function keys, etc.
129- - ** Language** — Auto-detect or specify (English, Spanish, French, German, Chinese, Japanese, and more)
127+ - ** Activation mode** - Push-to-Talk or Double-Tap Toggle
128+ - ** Hotkey** - Choose from Right Option, Right Command, Fn, function keys, etc.
129+ - ** Language** - Auto-detect or specify (English, Spanish, French, German, Chinese, Japanese, and more)
130130- ** Launch at login**
131131
132132### Audio
133- - ** Max recording duration** — 30s, 60s, 120s, or 300s
134- - ** Silence detection** — Auto-stop recording after configurable silence
135- - ** Input device** — Select which microphone to use
133+ - ** Max recording duration** - 30s, 60s, 120s, or 300s
134+ - ** Silence detection** - Auto-stop recording after configurable silence
135+ - ** Sound effects** - Toggle audio feedback for recording start/stop
136+ - ** Input device** - Select which microphone to use
136137
137138### Models
138139- View system info and WhisperKit's hardware recommendation
@@ -147,21 +148,21 @@ VocaMac is built with a clean, modular architecture using native Swift and Swift
147148
148149```
149150VocaMacApp (SwiftUI MenuBarExtra)
150- ├── AppState — Central observable state
151- ├── HotKeyManager — CGEventTap global hotkey listener
152- ├── AudioEngine — AVAudioEngine mic capture (16kHz, mono, Float32)
153- ├── WhisperService — WhisperKit async transcription wrapper
154- │ └── ModelManager — Model download, storage, device recommendations
155- │ └── SystemInfo — Hardware detection & model recommendation
156- ├── TextInjector — Clipboard + Cmd+V text injection
157- ├── MenuBarView — Status popover UI
158- └── SettingsView — Configuration tabs (General, Models, Audio, About)
151+ ├── AppState - Central observable state
152+ ├── HotKeyManager - CGEventTap global hotkey listener
153+ ├── AudioEngine - AVAudioEngine mic capture (16kHz, mono, Float32)
154+ ├── WhisperService - WhisperKit async transcription wrapper
155+ │ └── ModelManager - Model download, storage, device recommendations
156+ │ └── SystemInfo - Hardware detection & model recommendation
157+ ├── SoundManager - Audio feedback (start/stop recording cues)
158+ ├── TextInjector - Clipboard + Cmd+V text injection
159+ ├── MenuBarView - Status popover UI
160+ └── SettingsView - Configuration tabs (General, Models, Audio, About)
159161```
160162
161163For detailed documentation, see:
162- - [ ` docs/PRD.md ` ] ( docs/PRD.md ) — Product Requirements Document
163- - [ ` docs/ARCHITECTURE.md ` ] ( docs/ARCHITECTURE.md ) — Technical Architecture
164- - [ ` docs/DATA_MODEL.md ` ] ( docs/DATA_MODEL.md ) — Data Model & Entity Relationships
164+ - [ ` docs/ARCHITECTURE.md ` ] ( docs/ARCHITECTURE.md ) - Technical Architecture
165+ - [ ` docs/DATA_MODEL.md ` ] ( docs/DATA_MODEL.md ) - Data Model & Entity Relationships
165166
166167---
167168
@@ -189,6 +190,7 @@ VocaMac/
189190│ │ ├── HotKeyManager.swift # CGEventTap global hotkeys
190191│ │ ├── WhisperService.swift# WhisperKit transcription wrapper
191192│ │ ├── ModelManager.swift # Model download & management
193+ │ │ ├── SoundManager.swift # Audio feedback for recording
192194│ │ ├── TextInjector.swift # Clipboard-based text injection
193195│ │ └── SystemInfo.swift # Hardware detection
194196│ ├── Models/
@@ -198,10 +200,14 @@ VocaMac/
198200│ └── Resources/
199201├── Tests/
200202│ └── VocaMacTests/
203+ ├── scripts/
204+ │ ├── build.sh # Build .app bundle
205+ │ ├── install.sh # Install to ~/.local/bin
206+ │ └── uninstall.sh # Full uninstall & cleanup
207+ ├── web/ # Marketing website (vocamac.com)
201208├── docs/
202- │ ├── PRD.md # Product Requirements Document
203209│ ├── ARCHITECTURE.md # Technical Architecture
204- │ └── DATA_MODEL.md # Data Model & ERD
210+ │ └── DATA_MODEL.md # Data Model & Entity Relationships
205211├── LICENSE # AGPL-3.0 License
206212└── .gitignore
207213```
@@ -212,56 +218,73 @@ VocaMac/
212218# Debug build
213219swift build
214220
215- # Release build (optimized — recommended for actual use )
221+ # Release build (optimized)
216222swift build -c release
217223
218224# Run
219225swift run VocaMac
220226
221227# Run tests (requires Xcode)
222228swift test
229+
230+ # Build .app bundle
231+ ./scripts/build.sh
232+
233+ # Install launcher scripts to ~/.local/bin
234+ ./scripts/install.sh
223235```
224236
225- ---
237+ ### Uninstall
238+
239+ To completely remove VocaMac and all its data (downloaded models, preferences, caches):
226240
227- ## 🗺️ Roadmap
241+ ``` bash
242+ ./scripts/uninstall.sh
243+ ```
228244
229- - [x] ** v0.1.0 ** — MVP: Menu bar app, push-to-talk, double-tap toggle, WhisperKit integration, text injection, settings
230- - [ ] ** v0.2.0 ** — Onboarding flow, transcription history, audio feedback sounds
231- - [ ] ** v0.3.0 ** — Custom prompts, real-time streaming transcription, word-level timestamps
232- - [ ] ** v0.4.0 ** — Auto-updates via Sparkle, code signing, DMG distribution
233- - [ ] ** v1.0.0 ** — Homebrew Cask, polished UI, performance tuning
245+ Use ` --keep-build ` to preserve build artifacts:
246+
247+ ``` bash
248+ ./scripts/uninstall.sh --keep-build
249+ ```
234250
235251---
236252
253+
237254## 🌐 Cross-Platform
238255
239256VocaMac is the macOS member of the Voca family:
240257
241258| Platform | Project | Status |
242259| ----------| ---------| --------|
243- | 🐧 Linux | [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) | ✅ Available |
244- | 🍎 macOS | ** VocaMac** (this project ) | 🚧 MVP |
245- | 🪟 Windows | VocaWin ( [ vocawin.com ] ( https://vocawin.com ) ) | 📋 Planned |
260+ | Linux | [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) | ✅ Available |
261+ | macOS | [ VocaMac] ( https://github.com/jatinkrmalik/vocamac ) | 🚧 Alpha |
262+ | 🪟 Windows | [ VocaWin ] ( https://vocawin.com ) | 📋 Planned |
246263
247264Each platform uses native technologies for the best possible integration, while sharing the same UX patterns and Whisper model family.
248265
249266---
250267
251268## 🤝 Related Projects
252269
253- - [ WhisperKit] ( https://github.com/argmaxinc/WhisperKit ) — Swift native on-device speech recognition
254- - [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) — Voice-to-text for Linux
255- - [ OpenAI Whisper] ( https://github.com/openai/whisper ) — Original Whisper model
270+ - [ WhisperKit] ( https://github.com/argmaxinc/WhisperKit ) - Swift native on-device speech recognition
271+ - [ VocaLinux] ( https://github.com/jatinkrmalik/vocalinux ) - Voice-to-text for Linux
272+ - [ OpenAI Whisper] ( https://github.com/openai/whisper ) - Original Whisper model
256273
257274---
258275
259- ## 📄 License
276+ ## ⚠️ Known Limitations
260277
261- AGPL-3.0 License — see [ LICENSE] ( LICENSE ) for details.
278+ - ** Ad-hoc code signing** - Accessibility and Input Monitoring permissions reset on every rebuild. Re-grant them after each build.
279+ - ** First launch requires internet** - WhisperKit downloads the speech recognition model on first run. All subsequent launches work fully offline.
280+ - ** macOS only** - Requires macOS 13 (Ventura) or later.
262281
263282---
264283
265- ## 👨💻 Author
284+ ## 📄 License
285+
286+ AGPL-3.0 License - see [ LICENSE] ( LICENSE ) for details.
287+
288+ ---
266289
267- ** Jatin Kumar Malik ** · [ GitHub ] ( https://github.com/jatinkrmalik ) · [ vocamac.com ] ( https://vocamac.com )
290+ Made with ❤️ for the macOS community!
0 commit comments