Skip to main content

Voxtty

Private, local-first voice dictation for Linux and Windows. Press Alt+D, speak, and your words are typed into whatever app has focus — transcribed entirely on your own machine.

Site: voxtty.com

Features

  • Local transcription — runs faster-whisper on-device; no audio ever leaves your machine
  • Global hotkey (Alt+D) — press to start dictating, press again to stop, from anywhere
  • Types into any focused app — terminal, browser, editor, chat, anything
  • Voice activity detection — knows when you've stopped talking, no fixed timers
  • Offline rule-based cleanup — punctuation/capitalization/spacing fixes, on by default, no network calls
  • Custom word replacements — teach it names, jargon, and spellings (case-insensitive), applied locally
  • System tray icon — runs quietly in the background via a systemd user service, starts on login
  • Optional wake word ("hey Jarvis") — experimental alternative to the hotkey; may false-trigger in some environments, Alt+D is the reliable trigger
  • Optional AI cleanup — opt-in only, sends the transcript text (never audio) to the Claude API to strip fillers and polish punctuation; off by default, requires your own Anthropic API key

Requirements

  • Linux: Ubuntu (Wayland), Python 3.10+, ydotool for typing, portaudio for audio capture
  • Windows: Windows 10/11, Python 3.10+
  • A microphone

Installation (Linux)

git clone https://github.com/PominausGH/voxtty.git
cd voxtty
./setup.sh

setup.sh installs system dependencies (ydotool, portaudio, etc.), adds you to the input group, creates a Python virtual environment, and installs Voxtty as a systemd user service that starts automatically on login.

Log out and back in after setup for the input group change to take effect. Then press Alt+D anywhere to start dictating.

With pipx

setup.sh is the recommended path because it installs the system packages for you. If you would rather manage it yourself, three of Voxtty's dependencies (evdev, PyAudio, webrtcvad) publish no wheels and are compiled at install time, so you need a compiler and the relevant headers first:

# Debian / Ubuntu
sudo apt install gcc python3-dev portaudio19-dev ydotool
# Fedora
sudo dnf install gcc python3-devel portaudio-devel ydotool

pipx install voxtty
voxtty --install-service      # register the systemd user service and start it

Without those system packages pipx install voxtty fails with compiler errors.

Arch Linux

A voxtty-git PKGBUILD lives in packaging/aur/. It is not on the AUR yet — Arch has suspended new AUR account registration while dealing with a wave of malicious package uploads — so build it directly for now:

git clone https://github.com/PominausGH/voxtty.git
cd voxtty/packaging/aur
makepkg -si
systemctl --user enable --now voxtty.service

Installation (Windows)

git clone https://github.com/PominausGH/voxtty.git
cd voxtty
.\setup.bat

setup.bat/setup.ps1 creates a Python virtual environment, installs dependencies, and registers a Task Scheduler task (runs at logon, under your own user, no elevation) that starts Voxtty automatically. Press Alt+D anywhere to start dictating.

A few Windows-specific things worth knowing:

  • Alt+D is also a built-in "focus the address bar" shortcut in most browsers and File Explorer — both will fire together, same as the non-exclusive hook behavior on Linux.
  • A global keyboard hook plus synthetic keystroke injection is a common antivirus/SmartScreen heuristic for keylogger-style tools. Voxtty isn't code-signed yet, so don't be surprised if your AV flags it on first run — it's a false positive from the technique, not the intent.
  • Logs and the AI-cleanup API key file both live under %LOCALAPPDATA%\voxtty (Windows has no XDG-style data/config split).

Usage (Linux)

systemctl --user status voxtty    # check status
systemctl --user restart voxtty   # restart
systemctl --user stop voxtty      # stop
journalctl --user -u voxtty -f    # live logs

Logs are also saved to ~/.local/share/voxtty/voxtty.log.

toggle_voxtty.sh can be bound to a custom keyboard shortcut (e.g. in GNOME Settings) as an alternative to Alt+D. This is Linux-only — Alt+D's global hook works uniformly across Windows desktop sessions, so there's no equivalent need on Windows.

Usage (Windows)

schtasks /Query /TN Voxtty    # check status
schtasks /End /TN Voxtty      # stop
schtasks /Run /TN Voxtty      # start

Logs are saved to %LOCALAPPDATA%\voxtty\voxtty.log.

Configuration

Voxtty writes a config.json in the repo directory on first run (git-ignored — your local settings, not committed). Notable options:

  • whisper_model — Whisper model size (default small.en)
  • microphone_name — substring to match your preferred input device
  • wake_word / wake_word_threshold — experimental voice-triggered start, off the hotkey
  • rule_cleanup_enabled — local, offline punctuation/formatting cleanup (default true)
  • cleanup_enabled — opt-in AI cleanup pass via the Claude API (default false)
  • word_replacements — a {"heard": "typed"} map for custom dictionary entries

To enable AI cleanup, set cleanup_enabled: true in config.json and put your Anthropic API key in the env file created by setup (~/.config/voxtty/env on Linux, %LOCALAPPDATA%\voxtty\env on Windows), then restart.

Pricing

This repo is the free, open-source core — full local dictation, no license gate. See voxtty.com/#pricing for the current Pro roadmap.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voxtty-0.1.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

voxtty-0.1.0-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file voxtty-0.1.0.tar.gz.

File metadata

  • Download URL: voxtty-0.1.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.7

File hashes

Hashes for voxtty-0.1.0.tar.gz
Algorithm Hash digest
SHA256 db1d6c55329a3fb3dd21c3f13febccf4af8db34817b53e439d76b5828e647cdf
MD5 3f64980113bebb65054d3418820d48e8
BLAKE2b-256 1623b939c7264823f84c90f8f07193c99bd36e42edf4afc6624e323f26c07d91

See more details on using hashes here.

File details

Details for the file voxtty-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: voxtty-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.7

File hashes

Hashes for voxtty-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 194e2c0a2040cfc1fe91d41bfd3c570e208dc1d661b4d3abe8e0953aadb35e71
MD5 c630f8f8325aeb41a500da96e17fe6a6
BLAKE2b-256 ff6762ea2a6ac457c4da607af87c7170fe48676c98acf18677b2014e266b9bc4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page