VoiceBox
Voice-to-text tool that captures speech, transcribes it via Whisper, and formats the output with an LLM. Press a hotkey, speak, release — formatted text lands in your clipboard and is auto-pasted into whatever you were typing in.
How It Works
Hold Ctrl+Cmd — focus context is captured, recording starts, overlay appears at top-center
Speak into your microphone (voice level meter shows input)
Release Ctrl+Cmd — audio streams to the cloud
Whisper transcribes, LLM formats, result is copied to clipboard and auto-pasted into the originating app
Project Structure
Setup
Prerequisites
Go 1.24+
Node.js + pnpm
Wails v2 CLI
A Cloudflare account with Workers AI access
macOS (accessibility permission required for auto-paste)
Deploy the Worker
Configure the Desktop Client
On first launch, VoiceBox opens a settings window. You can also create the config manually at ~/.config/voicebox/voicebox.toml:
Config is loaded from (in order): ~/.config/voicebox/voicebox.toml, next to the binary, then ./voicebox.toml.
macOS Accessibility Permission
Auto-paste requires macOS Accessibility access. On first use, macOS will prompt for permission, or you can grant it manually in System Settings → Privacy & Security → Accessibility.
Build and Run
Window Modes
Settings (700×450, centered): Opens on launch, dock click, or via the Recording menu. Edit config here.
Overlay (160×48, top-center, floating): Appears during recording. Shows recording indicator with voice level meter, spinner while processing, checkmark on success.
WebSocket Protocol
Client connects to GET /ws?token=<auth-token>.
After receiving {"type":"ready"}, the client sends a configure message with audio and focus context, then streams binary PCM chunks:
The configure message carries audio params and focused element context (app name, bundle ID, element role, title, placeholder, current value) used by the LLM formatter to tailor output.
Cloud Backend
STT: @cf/openai/whisper-large-v3-turbo
Formatter: @cf/qwen/qwen3-30b-a3b-fp8
Local Backend (Phase 2)
STT: faster-whisper
Formatter: Ollama
Provider interfaces exist at internal/stt/ and internal/formatter/
Audio Specs
16kHz sample rate, mono, PCM signed 16-bit LE
~4096 byte chunks (~128ms each)
Max recording: ~25 MiB (~13 minutes)