AI Voice Keyboard for macOS — Speak naturally, get polished text inserted at your cursor.
Vowrite is a lightweight macOS menu bar app that turns your voice into clean, polished text — inserted right where your cursor is. Powered by OpenAI Whisper for transcription and GPT for text polishing.
No more typing. Just speak.
- 🎤 Voice-to-Text — Press a hotkey, speak, get text
- ✨ AI Polish — Automatically removes filler words, fixes grammar, adds punctuation
- 🌍 Multilingual — Chinese, English, and mixed-language support
- 📋 Smart Injection — Text appears directly at your cursor position
- 🎯 Works Everywhere — Tested in native apps, browsers, Discord, VS Code, and more
- 🎨 Floating Overlay — Compact recording bar with smooth waveform animation
- ⌨️ Customizable Hotkey — Default:
⌥ Space(Option + Space) - ⎋ ESC to Cancel — Press Escape to instantly cancel recording
- 📊 History — Browse and search past dictations
- 🔌 Multi-Provider — OpenAI, OpenRouter, Groq, Together AI, DeepSeek, or bring your own
Download the latest release from GitHub Releases.
cd VowriteApp
./build.shOr manually:
cd VowriteApp
swift build -c release
cp .build/arm64-apple-macosx/release/Vowrite Vowrite.app/Contents/MacOS/Vowrite
codesign -fs - --deep --entitlements Resources/Vowrite.entitlements Vowrite.app
open Vowrite.app- Launch Vowrite — it appears in the menu bar as a 🎤 icon
- Open Settings → enter your API key (Get one from OpenAI)
- Grant Microphone and Accessibility permissions when prompted
- Press
⌥ Spaceto start recording, press again to stop - Text is automatically inserted at your cursor ✨
🎤 Record → 📝 Transcribe → ✨ Polish → 📋 Insert
- Record — Audio captured as AAC via AVAudioEngine
- Transcribe — Sent to Whisper API for speech-to-text
- Polish — GPT cleans up filler words, grammar, and punctuation
- Insert — Text injected at your cursor via clipboard paste or Unicode typing
| Method | Speed | Requires |
|---|---|---|
| Clipboard Paste (default) | ⚡ Instant | Accessibility permission |
| Unicode Typing (fallback) | Fast | Nothing — works everywhere |
Vowrite automatically detects permissions and picks the best method.
| Provider | STT Model | Polish Model |
|---|---|---|
| OpenAI | whisper-1 | gpt-4o-mini |
| OpenRouter | whisper-large-v3 | gpt-4o-mini |
| Groq | whisper-large-v3-turbo | llama-3.1-8b-instant |
| Together AI | whisper-large-v3 | Llama-3.1-8B-Instruct-Turbo |
| DeepSeek | whisper-1 | deepseek-chat |
| Custom | configurable | configurable |
VowriteApp/
├── App/ # App lifecycle & state
├── Core/
│ ├── Audio/ # Microphone recording
│ ├── STT/ # Speech-to-text (Whisper)
│ ├── AI/ # Text polishing (GPT)
│ ├── TextInjection/ # Cursor text injection
│ ├── Hotkey/ # Global hotkey management
│ └── Keychain/ # Secure API key storage
├── Views/ # SwiftUI views
├── Models/ # SwiftData models
├── Resources/ # Info.plist, entitlements
└── build.sh # Build script
- macOS 14.0 (Sonoma) or later
- API key from a supported provider (OpenAI recommended)
- Microphone permission
- Accessibility permission (recommended, not required)
- v0.1 — Core voice dictation
- v0.2 — Release packaging & error handling
- v0.3 — App icon & branding
- v0.4 — Custom prompts, multiple output modes
- v0.4 — Real-time streaming, local Whisper
- v1.0 — Code signing, notarization, auto-update
See full roadmap for details.
MIT License — see LICENSE for details.
Contributions welcome! Please open an issue first to discuss what you'd like to change.
- Official app icon (waveform ring + text cursor design)
- Icon generation automation script
- Build pipeline integration
- Release build optimization (debug logs disabled in production)
- User-friendly error messages
- Automated DMG packaging
- Voice dictation with Whisper STT + GPT polish
- Menu bar app with floating recording overlay
- Customizable hotkey (default ⌥Space)
- Multi-provider support
- Dual text injection (clipboard paste + Unicode typing fallback)
- Dictation history with SwiftData
- Microphone selection & launch at login