Add testing infrastructure and documentation improvements. **Task 12: Add pkg-config to Core Dependencies** - Added pkg-config check at the start of install_system_dependencies() - Added pkg-config to all distribution package lists - Provides distro-specific install instructions if pkg-config is missing - Critical for library detection (GI_TYPELIB_PATH, PortAudio, etc.) **Task 13: Update README with Distro Info** - Updated Requirements section with tested distributions - Added link to DISTRO_COMPATIBILITY.md - Listed officially supported distros: Ubuntu 22.04+, Debian 11+, Fedora 39+, Arch, openSUSE - Mentioned experimental support for Gentoo, Alpine, Void, Solus **Task 14: Create Test Matrix for CI** - New workflow: .github/workflows/distro-test-matrix.yml - Tests on multiple container images: Ubuntu 22.04, 24.04, Debian 12, Fedora 39 - Runs dependency checker on each distro - Tests Python imports and bash syntax validation - Uses continue-on-error for experimental distro support **Task 15: Integration Testing Checklist** - New file: tests/distro-testing-checklist.md - Comprehensive checklist for testing on new distributions - Covers: Pre-install, Installation, Post-install, Functionality, Performance, Cleanup - Includes quick reference commands - Desktop environment and application-specific testing sections - Template for submitting test results Part of cross-distribution compatibility improvements (Phase 4 of 5). Related to #157
368 lines
14 KiB
Markdown
368 lines
14 KiB
Markdown
# <img src="https://github.com/user-attachments/assets/56dabe5c-5c65-44d5-a36a-429c9fea0719" width="30" height="30"> Vocalinux
|
|
|
|
#### Voice-to-text for Linux, finally done right!
|
|
|
|
<!-- Project Status -->
|
|
[](https://github.com/jatinkrmalik/vocalinux)
|
|
[](https://github.com/jatinkrmalik/vocalinux/releases)
|
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
|
|
|
|
<!-- Build & Quality -->
|
|
[](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)
|
|
|
|
<!-- Tech & Community -->
|
|
[](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)
|
|
|
|

|
|
|
|
**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
|
|
|
|
## 📸 Screenshots
|
|
|
|
Here are some screenshots showcasing Vocalinux in action:
|
|
|
|
<table>
|
|
<tr>
|
|
<td align="center">
|
|
<img src="resources/screenshots/00-transcription.png" alt="Transcription in Action" width="350"><br>
|
|
<em>Real-time voice-to-text transcription</em>
|
|
</td>
|
|
<td align="center">
|
|
<img src="resources/screenshots/02-system-tray.png" alt="System Tray" width="350"><br>
|
|
<em>System tray with listening indicator</em>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">
|
|
<img src="resources/screenshots/05-about-view.png" alt="About View" width="350"><br>
|
|
<em>About view with version info</em>
|
|
</td>
|
|
<td align="center">
|
|
<img src="resources/screenshots/03-log-viewer.png" alt="Log Viewer" width="350"><br>
|
|
<em>Log viewer for debugging</em>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" align="center">
|
|
<img src="resources/screenshots/04-features-overview.png" alt="Features Overview" width="500"><br>
|
|
<em>Overview of key features and configuration options with annotations</em>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
## 🚀 Quick Install
|
|
|
|
### Interactive Install (Recommended for New Users)
|
|
|
|
Let the installer guide you through the setup with smart hardware detection:
|
|
|
|
```bash
|
|
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --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)
|
|
|
|
```bash
|
|
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --tag=v0.5.0-beta
|
|
```
|
|
|
|
> **Note**: Installs v0.5.0-beta. For the most recent version, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/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 `vosk` Python package from PyPI
|
|
- **Whisper**: installs the `openai-whisper` package from PyPI, which also pulls in PyTorch (the ML framework Whisper requires)
|
|
- 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):**
|
|
```bash
|
|
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --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:**
|
|
```bash
|
|
curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --tag=v0.5.0-beta --no-whisper
|
|
```
|
|
This skips Whisper installation entirely and configures VOSK as the default engine.
|
|
|
|
### 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!
|
|
|
|
## 📚 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**: 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 # 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`:
|
|
|
|
```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
|
|
|
|
```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
|
|
│ ├── 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](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)~~ ✅
|
|
- [ ] 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.
|
|
|
|
---
|
|
|
|
<p align="center">
|
|
Made with ❤️ for the Linux community
|
|
</p>
|