Skip to content

Commit 90de600

Browse files
committed
docs: comprehensive README and architecture cleanup for v0.1.0
README: - Fix truncated badge line - Consistent platform naming (VocaLinux/VocaMac/VocaWin) with platform icons - Fix cross-platform table consistency and links - Remove broken PRD.md link - Add SoundManager, scripts/, web/ to project structure - Add Sound Effects to Configuration section - Add build/install/uninstall script docs - Add Known Limitations section - Remove Roadmap (tracked via GitHub Issues now) - Replace Author section with community footer - Remove all em-dashes ARCHITECTURE.md: - Fix duplicate SettingsView in UI layer diagram - Fix bundle.sh -> build.sh reference - Fix incorrect cross-platform claims (WhisperKit/CoreML are Apple-only) - Add SoundManager to module dependency graph - Remove all em-dashes
1 parent fdc70b2 commit 90de600

2 files changed

Lines changed: 84 additions & 92 deletions

File tree

README.md

Lines changed: 50 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@
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-blue.svg)](https://vocamac.com)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

1212
VocaMac 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.
6464
git clone https://github.com/jatinkrmalik/vocamac.git
6565
cd vocamac
6666

67-
# Build (first build downloads WhisperKit dependency - ~1 min)
67+
# Build (first build downloads WhisperKit dependency - ~1 min)
6868
swift build -c release
6969

7070
# Run VocaMac
@@ -75,9 +75,9 @@ swift run -c release VocaMac
7575

7676
1. **VocaMac appears in your menu bar** (microphone icon, no Dock icon)
7777
2. **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
124124
Open 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,20 +148,21 @@ VocaMac is built with a clean, modular architecture using native Swift and Swift
147148

148149
```
149150
VocaMacApp (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

161163
For detailed documentation, see:
162-
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) - Technical Architecture
163-
- [`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
164166

165167
---
166168

@@ -205,7 +207,7 @@ VocaMac/
205207
├── web/ # Marketing website (vocamac.com)
206208
├── docs/
207209
│ ├── ARCHITECTURE.md # Technical Architecture
208-
│ └── DATA_MODEL.md # Data Model & ERD
210+
│ └── DATA_MODEL.md # Data Model & Entity Relationships
209211
├── LICENSE # AGPL-3.0 License
210212
└── .gitignore
211213
```
@@ -216,7 +218,7 @@ VocaMac/
216218
# Debug build
217219
swift build
218220

219-
# Release build (optimized - recommended for actual use)
221+
# Release build (optimized)
220222
swift build -c release
221223

222224
# Run
@@ -228,7 +230,7 @@ swift test
228230
# Build .app bundle
229231
./scripts/build.sh
230232

231-
# Install launcher scripts
233+
# Install launcher scripts to ~/.local/bin
232234
./scripts/install.sh
233235
```
234236

@@ -248,52 +250,41 @@ Use `--keep-build` to preserve build artifacts:
248250

249251
---
250252

251-
## 🗺️ Roadmap
252-
253-
- [x] **v0.1.0** - MVP: Menu bar app, push-to-talk, double-tap toggle, WhisperKit integration, text injection, settings
254-
- [ ] **v0.2.0** - Onboarding flow, transcription history, ~~audio feedback sounds~~
255-
- [ ] **v0.3.0** - Custom prompts, real-time streaming transcription, word-level timestamps
256-
- [ ] **v0.4.0** - Auto-updates via Sparkle, code signing, DMG distribution
257-
- [ ] **v1.0.0** - Homebrew Cask, polished UI, performance tuning
258-
259-
---
260253

261254
## 🌐 Cross-Platform
262255

263256
VocaMac is the macOS member of the Voca family:
264257

265258
| Platform | Project | Status |
266259
|----------|---------|--------|
267-
| 🐧 Linux | [VocaLinux](https://github.com/jatinkrmalik/vocalinux) | ✅ Available |
268-
| 🍎 macOS | **VocaMac** (this project) | 🚧 MVP |
269-
| 🪟 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 |
270263

271264
Each platform uses native technologies for the best possible integration, while sharing the same UX patterns and Whisper model family.
272265

273266
---
274267

275268
## 🤝 Related Projects
276269

277-
- [WhisperKit](https://github.com/argmaxinc/WhisperKit) - Swift native on-device speech recognition
278-
- [VocaLinux](https://github.com/jatinkrmalik/vocalinux) - Voice-to-text for Linux
279-
- [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
280273

281274
---
282275

283276
## ⚠️ Known Limitations
284277

285-
- **Ad-hoc code signing** - VocaMac uses ad-hoc signing for development builds. Accessibility and Input Monitoring permissions in System Settings → Privacy & Security will reset on every rebuild. You'll need to re-grant them after each build.
286-
- **First launch requires internet** - WhisperKit downloads the speech recognition model on first run. All subsequent launches work fully offline.
287-
- **macOS only** - VocaMac requires macOS 13 (Ventura) or later.
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.
288281

289282
---
290283

291284
## 📄 License
292285

293-
AGPL-3.0 License - see [LICENSE](LICENSE) for details.
286+
AGPL-3.0 License - see [LICENSE](LICENSE) for details.
294287

295288
---
296289

297-
## 👨‍💻 Author
298-
299-
**Jatin Kumar Malik** · [GitHub](https://github.com/jatinkrmalik) · [𝕏](https://x.com/intent/user?screen_name=jatinkrmalik) · [vocamac.com](https://vocamac.com)
290+
Made with ❤️ for the macOS community!

0 commit comments

Comments
 (0)