Voice input reimagined — speak in any language, type in any language.
A macOS menu-bar voice input app built with Makepad and Rust.
Press Option, speak, release — your words appear wherever the cursor is.
Platform: macOS (Apple Silicon) only. See Roadmap for cross-platform plans.
┌─────────────────────────────────────┐
│ Vox (Makepad 2.0) │
│ │
│ Menu Bar ←→ Capsule ←→ Settings │
│ ↕ ↕ ↕ │
│ CGEvent Audio I/O Config │
│ Tap (16kHz) (~/.config) │
└──────┬────────────┬─────────────────┘
│ │
▼ ▼
macos-sys ominix-api
(ObjC FFI) (HTTP :18080)
│
┌─────┴─────┐
│ Qwen3-ASR │ ← local MLX inference
│ LLM (opt) │ ← local or cloud API
└───────────┘
| Crate | Purpose |
|---|---|
macos-sys |
macOS FFI — CGEvent tap, NSStatusBar, clipboard, input source, key simulation |
app (vox) |
Makepad 2.0 UI — capsule window, settings, audio capture, HTTP client |
cd /path/to/OminiX-API
PORT=18080 ASR_MODEL_DIR=~/.OminiX/models/qwen3-asr-0.6b cargo run --release
cd /path/to/vox
cargo run -p vox
MOONSHOT_API_KEY=sk-your-key cargo run -p vox
Or configure any OpenAI-compatible API in Settings (MIC → LLM Refinement → Settings).
| Menu Selection | ASR Language | LLM Action | Example |
|---|---|---|---|
| 简体中文 | Chinese | Correct typos | 配森 → Python |
| English | Chinese/English | Translate to English | 你好 → Hello |
| 繁體中文 | Chinese | Convert to Traditional | 语音输入 → 語音輸入 |
| 日本語 | Japanese | Preserve Japanese | そのまま出力 |
| 한국어 | Korean | Preserve Korean | 그대로 출력 |
| 文言文 | Chinese | Convert to Classical | 今天天气好 → 今日天朗气清 |
Translation and style conversion require LLM Refinement enabled (needs API key).
Config file: ~/.config/vox/config.json
| Variable | Description |
|---|---|
MOONSHOT_API_KEY |
Kimi API key (auto-configures URL and model) |
VOICE_INPUT_LLM_API_KEY |
Any OpenAI-compatible API key |
VOICE_INPUT_LLM_API_URL |
LLM API base URL |
VOICE_INPUT_LLM_MODEL |
LLM model name |
VOICE_INPUT_API_URL |
OminiX-API base URL (default: http://localhost:18080) |
# Development
cargo run -p vox
# Release
cargo build --release -p vox
# macOS .app bundle (with LSUIElement — no Dock icon)
make bundle
# Output: target/Vox.app
makepad_objc_sys — CGEvent tap, NSStatusBar, NSPasteboard, TIS input sources| Platform | Status | Notes |
|---|---|---|
| macOS (Apple Silicon) | Supported | Full functionality |
| macOS (Intel) | Untested | Makepad supports it, but OminiX-MLX requires Apple Silicon |
| Windows | Planned | Requires platform-sys crate for hotkey/tray/clipboard |
| Linux | Planned | Requires platform-sys crate + alternative ASR backend |
| Web/WASM | Not planned | Global hotkey and clipboard injection not possible |
.app bundle with code signingmacos-sys into platform-sys trait abstractiontrait HotkeyMonitor — global hotkey detectiontrait SystemTray — tray icon and menutrait Clipboard — read/write clipboardtrait KeyInjector — simulate keystrokestrait InputSourceManager — detect/switch input methodswindows-sys) — RegisterHotKey, Shell_NotifyIcon, SendInputlinux-sys) — XGrabKey, libappindicator, xdotool/wtypeAGPL-3.0 — See LICENSE for details.