A seamless voice dictation system for Linux
Project description
Vocalinux
Voice-to-text for Linux, finally done right!
A seamless free open-source private voice dictation system for Linux, comparable to built-in solutions on macOS and Windows.
๐ What's New in v0.5.0-beta
We're excited to announce our first Beta release! Vocalinux has evolved significantly since the last alpha, with numerous bug fixes and feature improvements.
๐ Critical Bug Fixes
- Fixed text escaping issues (apostrophes and quotes no longer have backslash escapes)
- Fixed stop sound being transcribed as "thank you"
- Fixed missing spaces after punctuation when transcribing again
โจ Key New Features
- Customizable keyboard shortcuts - Configure your own activation shortcuts via GUI
- Modern GNOME HIG settings dialog - Complete UI overhaul following GNOME design guidelines
- Pleasant audio feedback - Gliding tones replace harsh beeps
- Interactive installer with GPU detection - Smart hardware auto-detection
- Better Wayland support - Native keyboard shortcuts without XWayland
๐ง Quality Improvements
- 80%+ test coverage - Comprehensive test suite across all modules
- Microphone reconnection - Automatic recovery when microphone disconnects
- Audio buffer management - Prevents memory issues during long recordings
๐ Beta Release!
We're excited to share Vocalinux Beta with the community! See "What's New" above for details on this release.
โจ Features
- ๐ค Double-tap Ctrl to start/stop voice dictation
- โก Real-time transcription with minimal latency
- ๐ Universal compatibility across all Linux applications
- ๐ Offline operation for privacy and reliability (with VOSK)
- ๐ค Optional Whisper AI support for enhanced accuracy
- ๐จ System tray integration with visual status indicators
- ๐ Pleasant audio feedback - smooth gliding tones, headphone-friendly
- โ๏ธ Graphical settings dialog for easy configuration
๐ Quick Install
Interactive Install (Recommended for New Users)
Let the installer guide you through the setup with smart hardware detection:
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --interactive
The interactive installer will:
- Auto-detect your hardware (GPU, RAM)
- Recommend the best configuration for your system
- Guide you through each step with clear explanations
- Show you how to launch and use Vocalinux after installation
One-liner Installation (Quick Install)
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta
Note: Installs v0.5.0-beta. For the most recent version, check GitHub Releases.
GPU Detection: The installer now automatically detects NVIDIA GPUs and uses CPU-only PyTorch when no GPU is present, saving you ~2GB of download!
This will:
- Clone the repository to
~/.local/share/vocalinux-install - Install all system dependencies
- Set up a virtual environment in
~/.local/share/vocalinux/venv - Install both VOSK and Whisper AI speech engines:
- VOSK: installs the
voskPython package from PyPI - Whisper: installs the
openai-whisperpackage from PyPI, which also pulls in PyTorch (the ML framework Whisper requires)
- VOSK: installs the
- Create a symlink at
~/.local/bin/vocalinux - Download the default Whisper tiny speech model (~75MB)
โฑ๏ธ Note: Installation takes ~5-10 minutes due to Whisper AI dependencies (PyTorch with CUDA support, ~2.3GB).
Whisper with CPU-only PyTorch (no NVIDIA GPU needed):
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --whisper-cpu
This installs Whisper with CPU-only PyTorch (~200MB instead of ~2.3GB). Works great for systems without NVIDIA GPU.
For low-RAM systems (8GB or less) - VOSK only:
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.5.0-beta --no-whisper
This skips Whisper installation entirely and configures VOSK as the default engine.
Alternative: Install from Source
# 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.
After Installation
# 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!
๐ What's New in v0.5.0-beta
We're excited to announce our first Beta release! Vocalinux has evolved significantly since the last alpha, with numerous bug fixes and feature improvements.
๐ Critical Bug Fixes
- Fixed text escaping issues (apostrophes and quotes no longer have backslash escapes)
- Fixed stop sound being transcribed as "thank you"
- Fixed missing spaces after punctuation when transcribing again
โจ Key New Features
- Customizable keyboard shortcuts - Configure your own activation shortcuts via GUI
- Modern GNOME HIG settings dialog - Complete UI overhaul following GNOME design guidelines
- Pleasant audio feedback - Gliding tones replace harsh beeps
- Interactive installer with GPU detection - Smart hardware auto-detection
- Better Wayland support - Native keyboard shortcuts without XWayland
๐ง Quality Improvements
- 80%+ test coverage - Comprehensive test suite across all modules
- Microphone reconnection - Automatic recovery when microphone disconnects
- Audio buffer management - Prevents memory issues during long recordings
For a complete list of changes, see the release notes.
๐ Requirements
- OS: Ubuntu 22.04+ (other Linux distros may work)
- Python: 3.8 or newer
- Display: X11 or Wayland
- Hardware: Microphone for voice input
๐๏ธ Usage
Voice Dictation
- Double-tap Ctrl to start recording
- Speak clearly into your microphone
- Double-tap Ctrl again (or pause speaking) 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
vocalinux --help # Show all options
vocalinux --debug # Enable debug logging
vocalinux --engine whisper # Use Whisper AI engine
vocalinux --model medium # Use medium-sized model
vocalinux --wayland # Force Wayland mode
โ๏ธ Configuration
Configuration is stored in ~/.config/vocalinux/config.json:
{
"speech_recognition": {
"engine": "vosk",
"model_size": "small",
"vad_sensitivity": 3,
"silence_timeout": 2.0
}
}
You can also configure settings through the graphical Settings dialog (right-click the tray icon).
๐ง Development Setup
# 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
โ โโโ text_injection/ # Text injection (X11/Wayland)
โ โโโ ui/ # GTK UI components
โ โโโ utils/ # Utility functions
โโโ tests/ # Test suite
โโโ scripts/ # Development utilities
โ โโโ generate_sounds.py # Sound generation script
โโโ resources/ # Icons and sounds
โโโ docs/ # Documentation
โโโ web/ # Website source
๐ Documentation
- Installation Guide - Detailed installation instructions
- Update Guide - How to update Vocalinux
- User Guide - Complete user documentation
- Contributing - 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:
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
-
Custom icon designโ -
Graphical settings dialogโ -
Whisper AI supportโ -
Multi-language support (FR, DE, RU)โ - In-app update mechanism
- Application-specific commands
- Debian/Ubuntu package (.deb)
- Improved Wayland support
- Voice command customization
๐ค Contributing
We welcome contributions! Whether it's bug reports, feature requests, or code contributions, please check out our Contributing Guide.
Quick Links
- ๐ Report a Bug
- ๐ก Request a Feature
- ๐ฌ 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 file for details.
Made with โค๏ธ for the Linux community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vocalinux-0.5.0b0.tar.gz.
File metadata
- Download URL: vocalinux-0.5.0b0.tar.gz
- Upload date:
- Size: 387.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd9b57aa520b01feb1398d1fbacdebe9ff0ff391227cfc86ddf52e9f8686516e
|
|
| MD5 |
c55294ceaec049323daaa0d7034c1c67
|
|
| BLAKE2b-256 |
119f36d18d8d1e5b516507cc5ca24737e11930b18fc92012e11720bd4e9c251a
|
File details
Details for the file vocalinux-0.5.0b0-py3-none-any.whl.
File metadata
- Download URL: vocalinux-0.5.0b0-py3-none-any.whl
- Upload date:
- Size: 463.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63cfbdad696643eba1b77ae5126a2afac7de0f2162efb2a0234dc6dda6c2e6f5
|
|
| MD5 |
7699599929c27314d0110874968cef78
|
|
| BLAKE2b-256 |
9c19efe7e4cf934188fd89fb8443ee03b6391e610a337326e6eae7e4deee4149
|