xavierk 97f93e9492
CI / security (pull_request) Successful in 1m11s
CI / lint (pull_request) Successful in 25s
CI / ai-review (pull_request) Successful in 8s
fix(void): report pywhispercpp 1.5.0 and load CPU variants at runtime
python3-pywhispercpp was installed as 0.0.0. setup.py passes no version to
setup() and takes it from setuptools-scm, which the Void build did not
install; the template's PYWHISPERCPP_VERSION export is never read. The app
read 0.0.0 as an old binding and skipped GPU device selection. Install
setuptools-scm, pin the version with SETUPTOOLS_SCM_PRETEND_VERSION, and
make the app treat a 0.0.0 distribution as unknown so the runtime feature
probe decides.

The CPU backend was built with every SIMD option off, so the real-time
factor on an AVX2 host was about 1.7. Build with GGML_BACKEND_DL and
GGML_CPU_ALL_VARIANTS instead: one CPU library per instruction-set level,
with the x86-64 baseline always shipped. The binding loads the variants
from its own directory (patches/), and pre_install places them beside the
extension. The app's library preloader skips those variants: they export
identical symbols, so preloading them RTLD_GLOBAL would let one variant
serve every other. The install smoke asserts that the installed package
reports 1.5.0, that the baseline variant holds no AVX code, that the AVX2
variant does, and that the CPU and Vulkan backends load from the package.

Fixes #43
Fixes #44
2026-11-07 00:03:22 +05:30
2026-10-26 21:40:44 -07:00
2026-11-05 15:04:46 +00:00

Voculinux

Voculinux

Voice dictation for Linux

Void Linux Python 3.11+ License: AGPL-3.0 Privacy: on-device X11 & Wayland Release

Website · Install · Docs · Releases · Issues

Voculinux turns speech into typed text in whatever app has focus. It is a free, AGPL-3.0-licensed desktop app for X11 and Wayland. After you download a model, local engines (whisper.cpp by default, plus OpenAI Whisper, Faster Whisper, VOSK, and Parakeet) run speech-to-text on your machine. An optional remote HTTP API is off unless you configure it.

No account is required. Models download once. After that, speech-to-text stays on your machine.

Current release: v0.18.5. Patch: a stop that races a recording start can no longer leave the mic recording forever, keyboards stay alive through suspend and the GNOME lock screen, Ctrl+mouse-wheel zoom works again, Dictation Pad and Settings stop travelling workspaces together, and paste-injection copies are marked sensitive for clipboard history on wl-clipboard 2.2+. Details: docs/UPDATE.md.

Features

  • On-device after model download: Local engines; speech-to-text stays on your machine
  • X11 and Wayland: Text injection via xdotool, IBus, wtype, ydotool, or clipboard fallback
  • Several engines: whisper.cpp (default), OpenAI Whisper, Faster Whisper, VOSK, Parakeet, plus optional remote HTTP API or local gateway from Settings (not on-device)
  • GPU acceleration: Vulkan for AMD, Intel, and NVIDIA with whisper.cpp
  • Toggle or push-to-talk: New installs default to hold Right Alt; existing configs keep their shortcut
  • System tray + settings: Searchable sidebar, Speech Model simple setup with Advanced as an island, status icons, audio feedback
  • Start on login: XDG autostart (desktop session, not a systemd service)
  • Packaging: signed Void Linux xbps repository (glibc, x86_64). No other channel is published for Voculinux

Screenshots

Voculinux in action. Full gallery on the website screenshots page.

Product

Transcription in Action
Real-time voice-to-text transcription
System Tray
System tray with listening indicator
About View
About & Updates in Settings
Log Viewer
Log viewer for debugging

Settings

Speech Engine settings
Speech Engine
Recognition settings
Recognition
Audio settings
Audio
Performance settings
Performance
General settings
General
Advanced tuning and settings
Advanced
Dictation overlay listening
Floating overlay while listening (green)
Dictation overlay processing
Floating overlay while processing (amber)

Install

Voculinux is published only as a signed Void Linux xbps repository. Other channels (AUR, AppImage, .deb / .rpm, Flatpak, Snap, Nix, PyPI and the upstream install script) are not published for Voculinux.

Void Linux (signed xbps repo)

Void Linux glibc x86_64 only. Each version tag publishes a signed personal xbps repository to the project's rolling latest release: binary packages (*.x86_64.xbps) with their signatures, the signed repository metadata (x86_64-repodata), and the client key (FINGERPRINT plus the fingerprint-named .plist). The registration URL below always serves the newest release.

This is a third-party repository — it is published by this project, not by upstream Void Linux, and its packages are built from the templates in packaging/void/srcpkgs/. Details: packaging/void/README.md.

Repository key, RSA 4096. Pin this fingerprint:

fa:d1:00:32:ce:b1:b9:fd:73:05:05:76:75:54:37:25
# as root on the Void system: trust the key, register the repository, install
curl -fsSL -o '/var/db/xbps/keys/fa:d1:00:32:ce:b1:b9:fd:73:05:05:76:75:54:37:25.plist' \
  https://git.bongbetic.com/xavierk/voculinux/raw/branch/main/packaging/void/repository-key.plist
echo 'repository=https://git.bongbetic.com/xavierk/voculinux/releases/download/latest' > /etc/xbps.d/voculinux.conf
xbps-install -S voculinux

The key file is named by its fingerprint, so xbps finds it on the first sync and asks nothing. If xbps still shows a fingerprint prompt, answer N unless it reads exactly the fingerprint above (it must also match the FINGERPRINT file attached to the release). Do not add -y to the first sync: it would accept an unknown key without asking.

Speech engines

Engine When to use
whisper.cpp (default) Best default; Vulkan GPU on AMD, Intel, and NVIDIA
Whisper (OpenAI) PyTorch path; NVIDIA/CUDA
Faster Whisper CPU-friendly Whisper via CTranslate2 / INT8
VOSK Low RAM / minimal footprint
Parakeet CPU; NVIDIA NeMo ASR via sherpa-onnx; 25 European languages
Remote API Offload to a server you configure

The xbps package does not include the optional engines (Faster Whisper, Whisper, VOSK, Parakeet) or the Silero VAD runtime (onnxruntime). Add them from your own Python environment, as the package's install message describes. Models download on first run.

After installation

voculinux                 # from the xbps package, on your PATH

You can also launch Voculinux from your application menu.

From a source checkout (developers)

git clone https://git.bongbetic.com/xavierk/voculinux.git
cd voculinux
./install.sh --dev

See CONTRIBUTING.md for the two-venv layout and the dev workflow.

Requirements

OS Linux. The published package targets Void Linux (glibc, x86_64)
Python 3.11 or newer
Display X11 or Wayland
Hardware Microphone; GPU optional (Vulkan)

Python 3.11+ is required, with PyGObject from the system (python3-gi or the Void python3-gobject package). Ubuntu 22.04 (Python 3.10) and Debian 11 (3.9) are below that floor. Source-checkout distribution notes: docs/DISTRO_COMPATIBILITY.md.

Usage

Dictation

  1. Push-to-talk (default on new installs): hold Right Alt (Option on Mac-layout keyboards) and speak
  2. Speak into the microphone
  3. Release to stop, or switch to Toggle mode in Settings (double-tap a key to start/stop)

Existing configs keep their saved shortcut.

Voice commands

English phrases always work. With a non-English recognition language, matching punctuation / line-break phrases in that language are also recognized (Italian virgola / punto, French virgule / point, etc.).

Command Action
"new line" Line break
"period" / "full stop" / "dot" .
"comma" ,
"question mark" ?
"exclamation mark" !
"delete that" Delete last sentence
"capitalize" Capitalize next word

CLI

voculinux --help
voculinux --version
voculinux --debug
voculinux --engine whisper_cpp    # default
voculinux --engine whisper
voculinux --engine faster_whisper
voculinux --engine vosk
voculinux --engine parakeet
voculinux --engine remote_api
voculinux --model medium
voculinux --model medium.en-q5_0  # exact whisper.cpp variant
voculinux --model large-v3-turbo
voculinux --wayland
voculinux --start-minimized

Autostart

Start on Login creates an XDG autostart desktop entry (~/.config/autostart/). It does not install a systemd unit. Enable from the first-run dialog, tray menu, or Settings.

Configuration

Stored at ~/.config/voculinux/config.json. Prefer the Settings dialog for day-to-day changes. Settings → Speech Model starts with a simple setup; expand Advanced for engine, size, and specialization. Set post_processing.script_path to an executable to transform each transcription result (stdin → stdout) before it is injected; leave empty to disable.

Neural VAD (Silero) is used when onnxruntime is available. The xbps package does not pull it in; add onnxruntime from your own Python environment.

Documentation

Document Description
Installation Void xbps repository and running
Troubleshooting Common failures
User guide Dictation, engines, models, tips
Update guide Upgrade steps and release notes
Changelog Release history pointers
Support Where to get help
Distribution compatibility Distro matrix and session notes
Remote HTTP API Offload transcription to a server
Contributing Dev setup, style, PR process
Security Supported versions and vulnerability reporting
Docs index Full documentation map

Privacy and security

  • Local engines process audio on-device after you download a model; no Voca account required
  • Optional remote API is off by default and only used when you configure a server
  • Model downloads are checked against pinned checksums

Report vulnerabilities privately per SECURITY.md.

Development

git clone https://git.bongbetic.com/xavierk/voculinux.git
cd voculinux
./install.sh --dev
source venv/bin/activate
pytest
python -m vocalinux.main --debug

See CONTRIBUTING.md for the two-venv layout, just recipes, and PR guidelines.

Roadmap

Shipped: graphical settings, multi-language support, whisper.cpp default, Vulkan GPU, Wayland/IBus, in-app update checker, Parakeet and Faster Whisper engines, Void Linux xbps packaging.

Planned:

  • Application-specific voice commands
  • User-customizable voice command map

Origin

Voculinux is a hard fork of Vocalinux by VocaHQ: https://github.com/VocaHQ/vocalinux

Voculinux is that project's fork for Void Linux. Its source, issues and releases live on the fork's own host.

Contributing

Bug reports, docs, and code are welcome. Start with CONTRIBUTING.md and open issues.

Repository

The source, issues, pull requests, and releases live at https://git.bongbetic.com/xavierk/voculinux. Open issues and pull requests there.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You may use, study, modify, and redistribute the software under AGPL-3.0. If you run a modified version as a network service, AGPL also requires that you make the corresponding source available.

Optional Orukeet model

With the Parakeet engine installed, Settings → Speech Model → Parakeet also offers orukeet-v0.1.0. It uses the existing local sherpa-onnx recognizer for 25 European languages; the recommended Parakeet model and default whisper.cpp engine stay unchanged.

The download comes from a pinned revision of oruk/orukeet on Hugging Face. Voculinux checks every file against its bundled SHA-256 pins and checks the publisher's release manifest against those same pins. The manifest download participates in Hugging Face's normal model-download accounting. Cached recognition works offline and does not send audio or usage events. The model occupies about 641 MiB; its CC BY-SA 4.0 weights license and NVIDIA attribution are included.

Optional Underdog Bark 3.0 models

Settings → Speech Model → Parakeet also offers two builds of Underdog Bark 3.0, an English fine-tune of Parakeet TDT 0.6B v3 (CC BY 4.0): bark-3.0 (int8, 653 MiB) and bark-3.0-int4 (4-bit, 379 MiB, about half the memory, slower). Both come from a pinned revision of velddev/Underdog-Bark-3.0-sherpa-onnx, an unofficial sherpa-onnx conversion not made or endorsed by Conway Research. They run on the existing sherpa-onnx recognizer, every file is checked against its bundled SHA-256 pin, and the downloads include the license and attribution notice. Choose one for English dictation of conversational speech, bark-3.0-int4 when memory is tight; for read or multilingual speech keep v3-european.

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%