#
Vocalinux
#### Voice-to-text for Linux, finally done right!
[](https://github.com/jatinkrmalik/vocalinux)
[](https://github.com/jatinkrmalik/vocalinux/releases)
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://github.com/jatinkrmalik/vocalinux/actions)
[](https://github.com/jatinkrmalik/vocalinux)
[](https://www.python.org/downloads/)
[](https://www.gtk.org/)
[](https://codecov.io/gh/jatinkrmalik/vocalinux)
[](https://github.com/jatinkrmalik/vocalinux/stargazers)
[](https://github.com/jatinkrmalik/vocalinux/network)
[](https://github.com/jatinkrmalik/vocalinux/watchers)
[](https://github.com/jatinkrmalik/vocalinux/commits)
[](https://github.com/jatinkrmalik/vocalinux/commits)
[](CONTRIBUTING.md)
[](https://github.com/jatinkrmalik/vocalinux/issues)

Linux has always punched above its weight, except when it comes to voice typing. Vocalinux fixes that.
It's a free, GPLv3-licensed desktop app that lets you dictate text into *any* application, on X11 or Wayland, using fully offline speech recognition. Pick from three engines (whisper.cpp, OpenAI Whisper, or VOSK), get automatic GPU acceleration via Vulkan, and control it all with customizable keyboard shortcuts: toggle or push-to-talk.
No internet required. No data leaves your machine. Just speak and type.
## ๐ What's New in v0.12.0-beta
> ๐ **Release: Remote API recognition, Silero VAD, and reliability hardening across threading, IBus, settings, installer, and model metadata.**
### ๐ Highlights
| Feature | Description |
|---------|-------------|
| **๐ Remote API Engine** | New speech recognition backend for self-hosted or compatible remote transcription services |
| **๐๏ธ Silero VAD** | Neural voice activity detection drops silence-only buffers for cleaner, faster dictation |
| **๐งต Thread Safety** | Hardened Remote API, IBus, and text injection threading behavior |
| **๐ IBus Reliability** | Preserves user engines for dead keys and captures scoped engines during activation |
| **โ๏ธ Settings Polish** | Remote Server section now respects the Advanced toggle and the dialog fits lower-resolution screens |
| **๐ฆ Installer & Models** | CUDA diagnostics include auto-remediation and model download sizes are corrected |
### โจ New Features
- **Remote API speech recognition engine** โ Configure Vocalinux to use compatible remote transcription services while keeping existing local engines available (#335)
- **Silero VAD** โ Neural voice activity detection filters silence-only buffers for cleaner recognition when ONNX Runtime support is installed (#447)
### ๐ Bug Fixes
- **Threading**: Harden Remote API, IBus, and text injection thread safety (#452)
- **IBus**: Preserve user engines for dead keys and capture the current engine during scoped activation (#457, #458)
- **UI**: Keep the Remote Server section behind the Advanced toggle and reduce settings dialog height for lower-resolution screens (#454, #456)
- **Installer**: Harden CUDA diagnostics with auto-remediation and behavioral tests (#451)
- **Models**: Correct whisper.cpp and VOSK download size metadata (#453)
- **Startup**: Allow launch without the pynput backend (#448)
- **Website**: Clarify speech demo browser support (#449)
### ๐ง Improvements
- **Developer docs** โ Remote API test server instructions for easier backend testing (#455)
- **Community** โ GitHub Sponsors funding configuration added
- **Behavioral coverage** โ CUDA diagnostics and release-facing reliability fixes include targeted tests
---
## โจ Features
- ๐ค **Toggle or Push-to-Talk** activation modes
- โก **Real-time transcription** with minimal latency
- ๐ **Universal compatibility** across all Linux applications
- ๐ **100% Offline operation** for privacy and reliability
- ๐ค **whisper.cpp by default** - High-performance C++ speech recognition
- ๐ฎ **Universal GPU support** - Vulkan acceleration for AMD, Intel, and NVIDIA
- ๐จ **System tray integration** with visual status indicators
- ๐ **Start on login support** via XDG autostart (desktop-session startup)
- ๐ **Pleasant audio feedback** - smooth gliding tones, headphone-friendly
- โ๏ธ **Graphical settings** dialog for easy configuration
- ๐ฆ **3 engine choices** - whisper.cpp (default), OpenAI Whisper, or VOSK
## ๐ธ Screenshots
Here are some screenshots showcasing Vocalinux in action:

Real-time voice-to-text transcription
|

System tray with listening indicator
|

About view with version info
|

Log viewer for debugging
|

Overview of key features and configuration options with annotations
|
## ๐ Quick Install
### Interactive Install (Recommended)
Our new interactive installer guides you through setup with intelligent hardware detection:
```bash
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
```
**Choose your engine:**
1. **whisper.cpp** โญ (Recommended) - Fast, works with any GPU via Vulkan
2. **Whisper** (OpenAI) - PyTorch-based, NVIDIA GPU only
3. **VOSK** - Lightweight, works on older systems
The installer will:
- **Auto-detect your hardware** (GPU, RAM, Vulkan support)
- **Recommend the best engine** for your system
- **Download the appropriate model** (~74MB for the default whisper.cpp tiny model)
- **Install neural VAD support** when ONNX Runtime is available
- **Install in ~1-2 minutes** (vs 5-10 min with old Whisper)
> **Note**: Always installs the latest release. For a specific version, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases).
### Installation Options
**Default (whisper.cpp - recommended):**
```bash
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
```
Fastest installation (~1-2 min), universal GPU support via Vulkan.
**Whisper (OpenAI) - if you prefer PyTorch:**
```bash
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=whisper
```
NVIDIA GPU only (~5-10 min, downloads PyTorch + CUDA).
**VOSK only - for low-RAM systems:**
```bash
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=vosk
```
Lightweight option (~40MB), works on systems with 4GB RAM.
### Alternative: Install from Source
```bash
# Clone the repository
git clone https://github.com/jatinkrmalik/vocalinux.git
cd vocalinux
# Run the installer (will prompt for Whisper)
./install.sh
# Or with Whisper support
./install.sh --with-whisper
```
The installer handles everything: system dependencies, Python environment, speech models, and desktop integration.
### ๐ Nightly Releases (Bleeding Edge)
For developers and early adopters who want to test the latest features, check out our [GitHub Releases page](https://github.com/jatinkrmalik/vocalinux/releases) which includes both beta and nightly builds.
> **โ ๏ธ Warning**: Nightly releases contain the absolute latest code and may be unstable. For production use, we recommend using the latest beta release.
Nightly builds are automatically generated from the `main` branch every day. They include all merged changes but haven't undergone the same testing as beta releases.
**Release Channels:**
- **Beta** (Recommended) - Tested pre-releases with known features
- **Nightly** - Untested bleeding edge with latest commits
### After Installation
```bash
# If ~/.local/bin is in your PATH (recommended):
vocalinux
# Or activate the virtual environment first:
source ~/.local/bin/activate-vocalinux.sh
vocalinux
# Or run directly:
~/.local/share/vocalinux/venv/bin/vocalinux
```
Or launch it from your application menu!
## ๐ Requirements
- **OS**: Linux (tested on Ubuntu 22.04+, Debian 11+, Fedora 39+, Arch Linux, openSUSE Tumbleweed)
- **Python**: 3.9 or newer
- **Display**: X11 or Wayland
- **Hardware**: Microphone for voice input
**Note:** See [Distribution Compatibility](docs/DISTRO_COMPATIBILITY.md) for distribution-specific information and experimental support for Gentoo, Alpine, Void, Solus, and more.
## ๐๏ธ Usage
### Voice Dictation
1. **Toggle mode**: Double-tap the shortcut key (default Ctrl) to start recording
2. Speak clearly into your microphone
3. **Toggle mode**: Double-tap again (or pause speaking) to stop, or **Push-to-Talk mode**: release the key to stop
### Voice Commands
| Command | Action |
|---------|--------|
| "new line" | Inserts a line break |
| "period" / "full stop" | Types a period (.) |
| "comma" | Types a comma (,) |
| "question mark" | Types a question mark (?) |
| "exclamation mark" | Types an exclamation mark (!) |
| "delete that" | Deletes the last sentence |
| "capitalize" | Capitalizes the next word |
### Command Line Options
```bash
vocalinux --help # Show all options
vocalinux --debug # Enable debug logging
vocalinux --engine whisper_cpp # Use whisper.cpp engine (default)
vocalinux --engine whisper # Use OpenAI Whisper engine
vocalinux --engine vosk # Use VOSK engine
vocalinux --model medium # Use medium-sized model
vocalinux --model medium.en-q5_0 # Use exact whisper.cpp model variant
vocalinux --model large-v3-turbo # Use large-v3 Turbo with whisper.cpp
vocalinux --wayland # Force Wayland mode
vocalinux --start-minimized # Start without first-run modal prompts
```
### Autostart on Login
Vocalinux uses the Linux desktop standard for autostart:
- **Mechanism**: XDG autostart desktop entry (`vocalinux.desktop`)
- **Path**: `$XDG_CONFIG_HOME/autostart/` or `~/.config/autostart/` (fallback)
- **Launch mode**: Starts as a regular **user desktop app** in your graphical session
- **Not used**: No `systemd` unit/service is created by Vocalinux for autostart
How to enable/disable:
- First-run welcome dialog
- Tray menu: **Start on Login**
- Settings dialog: **Start on Login**
Compatibility notes:
- Works on mainstream desktop environments (GNOME, KDE, Xfce, Cinnamon, MATE, LXQt)
- On minimal/custom window-manager sessions, an autostart handler may be required
(for example DE-specific startup hooks or tools like `dex`)
## โ๏ธ Configuration
Configuration is stored in `~/.config/vocalinux/config.json`:
```json
{
"speech_recognition": {
"engine": "whisper_cpp",
"model_size": "tiny",
"vad_sensitivity": 3,
"silence_timeout": 2.0
}
}
```
For whisper.cpp, `model_size` may be a size such as `tiny` or an exact ggml model ID
such as `medium.en-q5_0` or `large-v3-turbo`. You can also configure this through
the graphical Settings dialog, where whisper.cpp models are split into **Model Size**
and **Specialization** controls.
### Neural Voice Activity Detection
Vocalinux ships with a Silero VAD model and uses it automatically when `onnxruntime` is available. The official installer attempts to install this support automatically. Without it, recording falls back to the simpler amplitude-threshold VAD.
For manual or PyPI installs, enable neural VAD with:
```bash
pip install "vocalinux[vad]"
```
Restart Vocalinux after install. The Recognition tab in Settings shows which backend is active. The same `vad_sensitivity` (1-5) works for both -- it's mapped to a Silero probability threshold internally (1 = 0.8, 5 = 0.3).
## ๐ง Development Setup
```bash
# Clone and install in dev mode
git clone https://github.com/jatinkrmalik/vocalinux.git
cd vocalinux
./install.sh --dev
# Activate environment
source venv/bin/activate
# Run tests
pytest
# Run from source with debug
python -m vocalinux.main --debug
```
## ๐ Project Structure
```
vocalinux/
โโโ src/vocalinux/ # Main application code
โ โโโ speech_recognition/ # Speech recognition engines (VOSK, Whisper, whisper.cpp)
โ โ โโโ recognition_manager.py # Unified engine interface
โ โโโ text_injection/ # Text injection (X11/Wayland)
โ โโโ ui/ # GTK UI components
โ โโโ utils/ # Utility functions
โ โโโ whispercpp_model_info.py # whisper.cpp model metadata & hardware detection
โ โโโ vosk_model_info.py # VOSK model metadata
โโโ tests/ # Test suite
โโโ scripts/ # Development utilities
โ โโโ generate_sounds.py # Sound generation script
โโโ resources/ # Icons and sounds
โโโ docs/ # Documentation
โโโ web/ # Website source
```
## ๐ Documentation
- [Installation Guide](docs/INSTALL.md) - Detailed installation instructions
- [Update Guide](docs/UPDATE.md) - How to update Vocalinux
- [User Guide](docs/USER_GUIDE.md) - Complete user documentation
- [Distribution Compatibility](docs/DISTRO_COMPATIBILITY.md) - Distro/session behavior and caveats
- [Contributing](CONTRIBUTING.md) - Development setup and contribution guidelines
## ๐ Sound Customization
Vocalinux uses smooth, pleasant gliding tones for audio feedback:
- **Start**: Ascending F4โA4 (0.6s) - positive, uplifting
- **Stop**: Descending A4โF4 (0.6s) - resolves completion
- **Error**: Lower descending E4โC4 (0.7s) - gentle but noticeable
All sounds use pure sine waves with smoothstep interpolation for buttery smooth pitch transitions - perfect for headphone use!
### Regenerate Sounds
To modify or regenerate the notification sounds:
```bash
python scripts/generate_sounds.py
```
This script generates all three sounds using the same smooth glide algorithm. You can edit the frequencies, durations, and amplitudes in the script to customize the sounds to your preference.
## ๐บ๏ธ Roadmap
- [x] ~~Custom icon design~~ โ
- [x] ~~Graphical settings dialog~~ โ
- [x] ~~Whisper AI support~~ โ
- [x] ~~Multi-language support (FR, DE, RU)~~ โ
- [x] ~~whisper.cpp integration (default engine)~~ โ
- [x] ~~Vulkan GPU support~~ โ
- [ ] In-app update mechanism
- [ ] Application-specific commands
- [ ] Debian/Ubuntu package (.deb)
- [x] ~~Wayland support via IBus~~ โ
- [ ] Voice command customization
## ๐ The Voca Ecosystem
Vocalinux is part of a family of privacy-first, offline voice dictation tools. Same mission, every operating system.
| Platform | Project | Website | GitHub | Status |
|----------|---------|---------|--------|--------|
| ๐ง Linux | **VocaLinux** | [vocalinux.com](https://vocalinux.com) | [jatinkrmalik/vocalinux](https://github.com/jatinkrmalik/vocalinux) | โ
Beta v0.12.0 |
| ๐ macOS | **VocaMac** | [vocamac.com](https://vocamac.com) | [jatinkrmalik/vocamac](https://github.com/jatinkrmalik/vocamac) | ๐ Beta |
| ๐ช Windows | **VocaWin** | [vocawin.com](https://vocawin.com) | [jatinkrmalik/vocawin](https://github.com/jatinkrmalik/vocawin) | ๐ Planned |
> Each platform uses native technologies for the best possible integration, while sharing the same privacy-first philosophy and offline-only architecture.
## ๐ค Contributing
We welcome contributions! Whether it's bug reports, feature requests, or code contributions, please check out our [Contributing Guide](CONTRIBUTING.md).
### Contributors
Thanks to everyone who has contributed to Vocalinux! ๐
### Quick Links
- ๐ [Report a Bug](https://github.com/jatinkrmalik/vocalinux/issues/new?template=bug_report.md)
- ๐ก [Request a Feature](https://github.com/jatinkrmalik/vocalinux/issues/new?template=feature_request.md)
- ๐ฌ [Discussions](https://github.com/jatinkrmalik/vocalinux/discussions)
## โญ Support
If you find Vocalinux useful, please consider:
- โญ Starring this repository
- ๐ Reporting bugs you encounter
- ๐ Improving documentation
- ๐ Contributing code
## ๐ License
This project is licensed under the **GNU General Public License v3.0** - see the [LICENSE](LICENSE) file for details.
## Star Chart
[](https://star-history.com/#jatinkrmalik/vocalinux&Date)
---
Made with โค๏ธ for the Linux community