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

Wails v2

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)

Development