Skip to content

Latest commit

 

History

282 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

voice

Wayland-native voice typing for Linux. Hold a key, speak, release — your words appear in whatever window you are working in.

Transcribes locally on your NVIDIA GPU with faster-whisper, or through any OpenAI-compatible speech-to-text API. Swedish and English out of the box, switchable with a shortcut.

Dictation works today — speak, and your words are typed. In daily use on KDE Plasma and GNOME. Reading text aloud, and tidying up what you dictate, are planned.

No graphics card needed. The GPU only makes transcription faster — on a plain CPU it still runs about 3× faster than you speak. Why


Install

Arch / CachyOS — one command, nothing to build

Releases are GPG-signed, so pacman verifies what it downloads. Import the signing key once:

curl -sL https://raw.githubusercontent.com/vampyren/voice/main/packaging/voice-signing-key.asc -o /tmp/voice-key.asc
sudo pacman-key --add /tmp/voice-key.asc
sudo pacman-key --lsign-key F2F5DB243D66BBB9

Then install, now and for every future release:

sudo pacman -U https://github.com/vampyren/voice/releases/download/v0.2.5/voice-0.2.5-1-x86_64.pkg.tar.zst
voice doctor

That is the whole install — the app, its locked dependencies, the desktop entry, the autostart entry and the udev rule. Remove it with pacman -R voice.

This is the CPU build, which is all most people need: the GPU only makes transcription faster, and on a plain CPU it still runs about 3× faster than you speak. The measurements →

Want CUDA, or want to build it yourself?

git clone https://github.com/vampyren/voice ~/Apps/voice
cd ~/Apps/voice/packaging
makepkg -si                  # adds ~3 GB of CUDA runtime; VOICE_GPU=0 leaves it out
voice doctor

Any distro — from the checkout

git clone https://github.com/vampyren/voice ~/Apps/voice && cd ~/Apps/voice
./install.sh
voice doctor

Keeps the code in your checkout so edits are live on the next daemon start. Needs uv, PipeWire, wl-clipboard, GTK 4 and PyGObject.

📖 Full requirements, options and uninstall →

What it puts on your system

Where What
/usr/lib/voice/ the app and its Python dependencies — nearly all of the 346 MB
/usr/bin/voice · /usr/bin/voice-overlay the command, and the recording pill's helper
/usr/lib/udev/rules.d/70-voice-input.rules one line — see below
/usr/share/applications/…voice.desktop the entry in your app launcher
/etc/xdg/autostart/…voice.desktop starts the daemon when you log in (Exec=voice daemon)
/usr/share/doc/voice/ this page and everything under docs/

The udev rule, in full — it is one line:

SUBSYSTEM=="input", KERNEL=="event*", TAG+="uaccess"

It tags keyboard event devices with uaccess, which tells systemd-logind to grant the user currently logged in at the screen read access to them. That is the whole reason it exists: voice can see your push-to-talk key without running as root.

It does not make anything world-readable, does not add you to a group, and does not need a re-login. A remote or SSH session gets nothing from it. On desktops where voice uses the portal shortcut backend instead — GNOME always does — the rule is not even used.

In your home, created as you use it, never by the installer:

~/.config/voice/ (settings) · ~/.local/state/voice/ (history) · ~/.cache/huggingface/ (the speech models — about 3 GB per language, each fetched the first time you dictate in it)

pacman -R voice removes everything in the table. Your home files stay — those are yours to delete.


Set up your desktop

Two steps, once.

1. Assign the shortcut. The desktop owns it, not config.toml:

Where
GNOME Settings → Keyboard → Keyboard Shortcuts → voice
KDE Plasma Settings window → Change… next to dictate

2. On KDE — nothing to do. voice asks KWin directly which window has the keyboard, so it sends Ctrl+Shift+V to terminals and Ctrl+V everywhere else, by itself. No extra package. How that works

On GNOME there is no equivalent — GNOME will not tell any app which window has focus — so there voice keeps your words on the clipboard and the pill says Copied.

📖 Desktop differences explained →


Use it

Hold the key, speak, release. The text is pasted where your cursor is.

A small pill shows a live waveform while you talk, then a checkmark when the text lands.

Command Does
voice Start the daemon, or open settings if it is running
voice status State, backend, language, shortcuts
voice recall Re-insert the last dictation
voice retry Re-transcribe the last recording
voice cancel Discard the current recording
voice language sv Switch language (next cycles)
voice doctor Check this machine for everything voice needs

📖 Full usage, the pill, languages, every command →


Configure it

Settings live in ~/.config/voice/config.toml, and the settings window edits the same file. Most people never need to touch it.

[hotkeys]
dictate_mode = "hold"        # or "toggle"

[stt]
active = "local"             # local, openai, groq, openrouter, ...

[general]
language = "en"
languages = ["en", "sv"]     # the cycle for the language shortcut

📖 Every setting, with defaults →


Something wrong?

Run voice doctor first — it checks the whole machine and tells you what to fix.

📖 Troubleshooting →


Documentation

Page What's in it
Install Requirements, both install routes, uninstall
Desktop setup GNOME vs KDE: shortcuts, window detection, the pill
Usage First run, the pill, languages, the full CLI
Configuration Every setting and default
Troubleshooting voice doctor, and the common problems
Roadmap What is planned
macOS port assessment What a Mac build would take, measured
Packaging How the Arch package is built

Built on

faster-whisper · PipeWire · PySide6 · GTK 4 · xdg-desktop-portal

License

To be decided by the owner. No LICENSE file yet — treat this as all-rights-reserved until one is added.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages