# Vocalinux #### Voice-to-text for Linux, finally done right! [![Status: Beta](https://img.shields.io/badge/Status-Beta-blue)](https://github.com/jatinkrmalik/vocalinux) [![GitHub release](https://img.shields.io/github/v/release/jatinkrmalik/vocalinux?include_prereleases)](https://github.com/jatinkrmalik/vocalinux/releases) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Vocalinux CI](https://github.com/jatinkrmalik/vocalinux/workflows/Vocalinux%20CI/badge.svg)](https://github.com/jatinkrmalik/vocalinux/actions) [![Platform: Linux](https://img.shields.io/badge/platform-Linux-lightgrey)](https://github.com/jatinkrmalik/vocalinux) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![Made with GTK](https://img.shields.io/badge/Made%20with-GTK-green)](https://www.gtk.org/) [![codecov](https://codecov.io/gh/jatinkrmalik/vocalinux/branch/main/graph/badge.svg)](https://codecov.io/gh/jatinkrmalik/vocalinux) [![GitHub stars](https://img.shields.io/github/stars/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/stargazers) [![GitHub forks](https://img.shields.io/github/forks/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/network) [![GitHub watchers](https://img.shields.io/github/watchers/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/watchers) [![Last commit](https://img.shields.io/github/last-commit/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/commits) [![Commit activity](https://img.shields.io/github/commit-activity/m/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/commits) [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](CONTRIBUTING.md) [![GitHub issues](https://img.shields.io/github/issues/jatinkrmalik/vocalinux)](https://github.com/jatinkrmalik/vocalinux/issues) ![Vocalinux Users](https://github.com/user-attachments/assets/e3d8dd16-3d4f-408c-b899-93d85e98b107) **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.6.1-beta This patch release brings significant improvements to the installation experience and GPU support! ### ✨ New Features - **Interactive Backend Selection** - When installing whisper.cpp, choose between GPU (Vulkan/CUDA) or CPU backend - Intelligent hardware detection recommends the best option - Shows helpful tips when GPU libraries are missing - Respects your choice during installation - **Enhanced Welcome Message** - Completely redesigned end-of-installation experience - Shows exactly what was installed (engine, backend, locations) - Clear step-by-step testing instructions - Voice command examples ("period", "comma", "new line", "delete that") - All management commands in one place ### 🔧 Improvements - **Simplified Install Commands** - No more `--tag` parameter needed - Before: `curl .../main/install.sh | bash -s -- --tag=v0.6.1-beta` - After: `curl .../v0.6.1-beta/install.sh | bash` - **Version Consistency** - Install script is now downloaded directly from the release tag - Ensures perfect version matching between script and code - No risk of main branch changes affecting releases - **Better GPU Support** - Fixed Vulkan development library detection - Properly installs `libvulkan-dev`, `glslang-tools`, and other required packages - Falls back gracefully when GPU libraries are missing - Clear error messages with installation instructions ### 🐛 Bug Fixes - **Fixed Bash Compatibility** - Resolved `((var++))` arithmetic issues with `set -e` - **Fixed TTY Detection** - Interactive mode now works correctly with `--interactive` flag - **Auto-install Git** - Installer now automatically installs git if not present - **Fixed GPU Installation** - Properly executes pip commands for GPU backend installation --- ## Previous Release: v0.6.0-beta **Major milestone: whisper.cpp is now the default engine!** - **⚡ 10x faster installation** (~1-2 min vs ~5-10 min) - **🎮 Universal GPU support** - AMD, Intel, NVIDIA via Vulkan - **🤖 whisper.cpp integration** - C++ optimized speech recognition - **📦 Interactive installer** - Choose between 3 engines - **🔧 Hardware auto-detection** - GPU, RAM, Vulkan support detection - **🐛 Critical bug fixes** - Text escaping, audio feedback, punctuation --- > 🎉 **Beta Release with whisper.cpp!** > > We're excited to share Vocalinux Beta with the community! > whisper.cpp brings **10x faster installation** and **universal GPU support**. > See "What's New" above for details. --- ## ✨ Features - 🎤 **Double-tap Ctrl** to start/stop voice dictation - ⚡ **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 - 🔊 **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:
Transcription in Action
Real-time voice-to-text transcription
System Tray
System tray with listening indicator
About View
About view with version info
Log Viewer
Log viewer for debugging
Features Overview
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/v0.6.1-beta/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** (~39MB for whisper.cpp tiny) - **Install in ~1-2 minutes** (vs 5-10 min with old Whisper) > **Note**: Installs v0.6.1-beta. For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases). ### Installation Options **Default (whisper.cpp - recommended):** ```bash curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.6.1-beta/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/v0.6.1-beta/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/v0.6.1-beta/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. ### 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.8 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. **Double-tap Ctrl** to start recording 2. Speak clearly into your microphone 3. **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 ```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 --wayland # Force Wayland mode ``` ## ⚙️ 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 } } ``` You can also configure settings through the graphical Settings dialog (right-click the tray icon). ## 🔧 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 - [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] ~~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](CONTRIBUTING.md). ### 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. ---

Made with ❤️ for the Linux community