v0.12.0-beta
Vocalinux v0.12.0-beta: Remote API Recognition, Silero VAD, and Reliability Hardening
New remote transcription backend, neural voice activity detection, and thread safety improvements across the board.
If you are new here, Vocalinux is a free, open-source (GPL-3.0) voice dictation system for Linux. It runs 100% offline, works on both X11 and Wayland, and lets you control your computer and dictate text using just your voice. Under the hood, it uses whisper.cpp (the default engine), OpenAI Whisper, VOSK, or now a Remote API for speech recognition.
Today we are shipping v0.12.0-beta, a release that expands where your dictation can run and improves the core recognition pipeline. Here is what changed.
What's New
Remote API Engine: Dictate to Your Own Server
The headline feature in this release is the new Remote API speech recognition engine. If you have a self-hosted whisper.cpp server, an OpenAI-compatible API endpoint, or any compatible remote transcription service, you can now point Vocalinux at it.
The Remote API engine supports two formats:
- whisper.cpp server: the
/inferenceendpoint format - OpenAI-compatible: the
/v1/audio/transcriptionsendpoint format
Configuration lives in the Speech Engine tab alongside your existing local engines. Switch between local and remote with a single dropdown. The engine includes HTTP connection pooling, suspend/resume support, and comprehensive documentation.
This feature came from community requests for cloud-based dictation while keeping Vocalinux's privacy-first philosophy. You control where your audio goes.
Silero VAD: Smarter Speech Detection
We replaced the simple amplitude-threshold voice activity detection with Silero VAD, a neural network model specifically trained for speech detection.
The bundled Silero VAD v5 model (via ONNX Runtime) provides:
- More accurate speech/non-speech classification: no more false triggers from keyboard clicks or background noise
- Silence buffer dropping: recordings that contain only silence are now discarded entirely
- Existing sensitivity control: the familiar
vad_sensitivity(1-5) slider maps to Silero thresholds internally
Silero VAD activates automatically when onnxruntime is available. Without it, Vocalinux falls back to the amplitude-based VAD. Enable it with:
pip install "vocalinux[vad]"Thread Safety: Fewer Crashes Under Load
The recognition pipeline got a serious threading pass:
- Remote API HTTP sessions: lock-guarded session switching prevents use-after-close races during reconfiguration
- IBus engine:
_state_lockprotection eliminates TOCTOU races in the socket handler - Text injection: concurrent reconfigure/reinitialize/resume cycles no longer crash
These fixes resolve crashes reported during rapid engine switching and system suspend/resume scenarios.
IBus: Dead Keys Work Again
IBus integration got two critical fixes for international keyboard layouts:
- Dead key composition preserved: Vocalinux now temporarily activates its engine only while injecting text, preserving your previous engine for dead-key composition. This fixes
^+e→êon French AZERTY and similar layouts - Scoped engine capture: the engine is now captured correctly during
prepare_engine, fixing a regression where IBus injection silently fell back toydotoolon Wayland
Settings Dialog Polish
The settings UI received two quality-of-life improvements:
- Remote Server section: now properly gated behind the Advanced toggle instead of appearing for all users
- Dialog height reduced: from 50% to 40% of viewport height, preventing overflow on sub-1080p screens
Installer: CUDA Diagnostics with Auto-Remediation
The installer's CUDA diagnostics now:
- Auto-remediate missing
patchelf: installs it automatically when needed - Support ARM64 CUDA toolkit paths: works on ARM-based systems
- Include behavioral tests: validates the diagnostics actually work
Model Metadata Corrections
Download sizes for whisper.cpp and VOSK models were corrected across the UI:
- tiny: 39 MB → 74 MB
- large: 1.5 GB → 3.0 GB
- Other models updated to match actual download sizes
Bug Fixes by Category
Speech Recognition
- Add Silero VAD with silence-only buffer dropping (#447)
- Correct whisper.cpp and VOSK model download size metadata (#453)
Remote API
- Add Remote API speech recognition engine with installation and configuration support (#335)
- Harden thread safety for Remote API HTTP session switching (#452)
IBus
- Preserve user engine for dead keys during scoped activation (#457)
- Capture current engine during
prepare_enginefor scoped activation (#458) - Harden thread safety for IBus engine state protection (#452)
Text Injection
- Harden thread safety for text injector concurrent operations (#452)
UI/Settings
- Respect Advanced toggle for Remote Server section (#454)
- Reduce settings dialog height to prevent overflow on lower-resolution screens (#456)
Installer
- Harden CUDA diagnostics with auto-remediation and behavioral tests (#451)
Startup
- Allow launch without pynput backend (#448)
Website
- Clarify speech demo browser support (#449)
Under the Hood
- Developer tooling: Remote API test server script (
scripts/test_remote_server.py) for testing both API formats without a real server, documented inCONTRIBUTING.md - Website typecheck fix: added local
react-syntax-highlighterdeclarations so the lazy-loaded syntax highlighter passes TypeScript checks - Community: GitHub Sponsors funding configuration added for those who want to support the project
- Behavioral test coverage: CUDA diagnostics and release-facing reliability fixes include targeted tests
Contributors
This release represents 13 commits from our community. Thank you to everyone who contributed code, reported bugs, and suggested improvements.
Code Contributors
- @jatinkrmalik (Jatin K Malik): Remote API thread safety, Silero VAD integration, IBus dead-key fixes, UI polish, installer hardening, model metadata corrections
- @sevenjay: Remote API speech recognition engine (#335)
- @Sbenazar: Original Silero VAD implementation (#351, carried forward in #447)
- @juanfradb: Play stop sound immediately on release (#426)
- @peplocanto (Pep Locanto): openSUSE Tumbleweed dependency fixes (#420)
Issue Reporters
Features and fixes in this release were inspired by reports from:
- @hsalberti: Silence hallucination with loopback devices (#444)
- @antonsoroko: pynput startup dependency error (#435)
- @navid-zamani: Firefox Web Speech API support clarification (#430)
- @dmacd: Installer silent CPU fallback on CUDA build failure (#450)
- @Hooplahaha: Dead keys broken with IBus injection (#442)
What is Vocalinux?
Vocalinux is a free, open-source voice dictation system for Linux. It lets you:
- Dictate text into any application using your voice
- Issue voice commands for common actions (copy, paste, select, delete, and more)
- Run 100% offline: no cloud services, no data leaving your machine (unless you choose Remote API)
- Choose your engine: whisper.cpp (fast, local, default), OpenAI Whisper, VOSK, or Remote API
- Work on any display server: full support for both X11 and Wayland
The project is licensed under GPL-3.0 and welcomes contributions from the community.
Installation
The fastest way to install Vocalinux:
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.shFor detailed installation instructions, including distro-specific notes, see the README.
Try It Out
- Download: v0.12.0-beta Release
- See the full diff: v0.11.0-beta → v0.12.0-beta
If you run into issues, file a bug on GitHub. If you want to contribute, pull requests are always welcome.
Star the repo if you find it useful. It helps more people discover the project.
Thanks for being part of the Vocalinux community. Happy dictating.