Local dictation mode — free, private alternative to OpenAI Realtime voice
Feature request: Add a local, offline dictation mode as an alternative to the built-in Voice Mode (which requires OpenAI Realtime + API key).
Why: Voice Mode is hardcoded to OpenAI Realtime — it needs an API key, costs per minute, and sends audio to OpenAI. Many users (especially outside the US, or with privacy concerns) want speech-to-text that runs 100% locally, works with any model, and costs nothing.
What I built as a proof of concept: A small script that does exactly this on Linux:
- Mic capture via PortAudio (16 kHz)
- Silero VAD (neural voice-activity detection, ~1ms/block CPU) — robust in noisy rooms, unlike energy-based VAD
- faster-whisper (CTranslate2) transcription, fully local, cached models
- Pushes text into the OpenWork composer via the local bridge (
composer.set_text)
It works today: talk → pause → text appears in the composer. No API key, no cloud, ~1GB RAM, runs on CPU.
Suggested implementation: a "Local dictation" option in Voice Mode settings that swaps the OpenAI Realtime backend for a local whisper pipeline (or exposes a pluggable STT backend). Happy to share the full script and the gotchas I hit (Silero chunk size 512@16kHz, PortAudio buffer reuse, ctranslate2/OpenMPI segfault workaround) with whoever picks this up.
Benefits: free, private, offline, works with any model/provider, no per-minute cost.
Source: different-ai/openwork