Jatin K MalikandGitHub 2becfb5a98 fix(install): fix model download and VOSK-only option in interactive mode (#132)
* fix(install): fix model download and VOSK-only option in interactive mode

- Add missing option 3 handling in interactive prompt to create VOSK
  config when user selects VOSK-only mode (mirrors --no-whisper flag)
- Set WITH_WHISPER and WHISPER_CPU flags correctly for options 1 and 2
- Fix Whisper model download logic to check actual installation status
  using venv python instead of relying on unreliable flag combinations
- Always download Whisper tiny model when Whisper is installed since
  it's the default engine in config_manager.py
- Add informative messages about model download status

Fixes issues where:
1. Selecting option 2 or 3 didn't properly configure the system
2. Whisper tiny model wasn't downloaded even when Whisper was selected
3. App defaulted to Whisper engine but model wasn't available

* fix(install): use explicit venv python path and simplify condition

- Use $VENV_DIR/bin/python instead of bare 'python' in run_tests() and
  verify_installation() for consistency and reliability
- Simplify Whisper install condition since WITH_WHISPER is already set
  by auto-detection in non-interactive mode (lines 412-424)
- Update comments to better explain the logic flow

* style(install): restore ASCII art logo and improve formatting

- Restore beautiful VOCALINUX ASCII art banner in interactive installer
- Restore ASCII art banner in installation complete message
- Use Unicode box-drawing characters (━) for section separators
- Use bullet points (•) instead of dashes for lists
- Add colored terminal output for commands
- Add star emoji for GitHub link

* style(install): show ASCII art banner in all installation modes

The ASCII art logo is now displayed at the start of installation
regardless of mode (interactive, curl|bash, or with flags).

* fix(install): remove duplicate ASCII art in interactive mode

The ASCII art banner is now shown once at script start for all modes.
Remove the duplicate from run_interactive_install() to avoid showing
it twice when running with -i/--interactive flag.

* docs(install): rename options to 'Full install' and 'Minimal install'

Clarify that VOSK is always installed as a fallback engine:
- 'Full install' = Whisper + VOSK (recommended, highest accuracy)
- 'Minimal install' = VOSK only (lightweight, ~40MB)

Updates both the -i interactive installer and the fallback prompt.
Also improves the installation summary display.

* fix(install): update desktop database so app appears in menu immediately

Previously only the icon cache was updated after installation, but not
the desktop database. This caused the app to not appear in application
menus until the user logged out and back in (or manually ran
update-desktop-database).

Now the installer runs update-desktop-database after installing the
.desktop file, so Vocalinux appears in the app launcher immediately.
2026-02-05 13:45:26 -08:00
2025-12-28 21:43:57 -08:00
2025-05-25 23:20:08 -05:00
2026-01-20 00:00:28 -08:00

Vocalinux

Voice-to-text for Linux, finally done right!

Status: Alpha GitHub release License: GPL v3

Vocalinux CI Platform: Linux Python 3.8+ Made with GTK codecov

GitHub stars GitHub forks GitHub watchers Last commit Commit activity Contributions welcome GitHub issues

Vocalinux Users

A seamless free open-source private voice dictation system for Linux, comparable to the built-in solutions on macOS and Windows.

🎉 Alpha Release!

We're excited to share Vocalinux with the community. Try it out and let us know what you think!


✨ 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
  • 🔊 Audio feedback for recording status
  • ⚙️ Graphical settings dialog for easy configuration

🚀 Quick Install

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.4.1-alpha --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.4.1-alpha

Note

: Installs v0.4.1-alpha. 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 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):

curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash -s -- --tag=v0.4.1-alpha --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.4.1-alpha --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!

Uninstall

# If installed via curl:
curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/uninstall.sh | bash

# If installed from source:
./uninstall.sh

📋 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

  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

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
├── resources/               # Icons and sounds
├── docs/                    # Documentation
└── web/                     # Website source

📖 Documentation

🗺️ 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.

⭐ 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

S
Description
Free, offline voice dictation for Void Linux and niri. Vulkan GPU acceleration, signed xbps repository.
Readme AGPL-3.0
35 MiB
v0.19.1
Latest
2026-11-06 21:18:19 +00:00
Languages
Python 84.5%
TypeScript 8.6%
Shell 5.6%
CSS 0.6%
Just 0.2%
Other 0.4%