voiceio
Voice dictation for Linux that learns you. Local, private, open source, and it fine-tunes itself on your own voice.
Try it in your browser at voiceio.dev: no install, the model runs in the tab.
- Types anywhere. Press your hotkey, speak, and the words stream into the focused app with a live underlined preview (IBus), on Wayland and X11: GNOME, KDE, Hyprland, sway, i3.
- Runs on your machine. Whisper decodes your speech locally. No account, no server, no telemetry; logs never contain your words.
- Learns your words. Keep your recordings (opt-in, on your disk) and voiceio fine-tunes its model on them while the machine is idle. It switches only when the new model wins on clips it never trained on. On the author's voice: 12.1% → 4.9% word errors after one night on a laptop CPU.
Install
With a coding agent. Paste this into Claude Code, Codex or any agent with a shell:
Install voiceio on this machine following https://voiceio.dev/llms.txt. Ask me which hotkey I want and whether to keep my recordings on this computer so voiceio can learn my voice. Finish with voiceio doctor and fix whatever it reports.
By hand:
sudo apt install pipx build-essential python3-dev portaudio19-dev ibus gir1.2-ibus-1.0 python3-gi # Debian/Ubuntu
sudo dnf install pipx gcc gcc-c++ make python3-devel portaudio-devel ibus ibus-libs python3-gobject # Fedora
sudo pacman -S python-pipx base-devel portaudio ibus python-gobject # Arch
pipx install 'python-voiceio[desktop]'
voiceio setup # model, hotkey, autostart
Then press your hotkey, speak, and press it again (or hold it while you speak). voiceio doctor shows what works and voiceio doctor --fix repairs what it can. NixOS, other extras and installing from source: docs/linux.md. Agent runbook: INSTALL.md.
Make it yours
voiceio vocab add Kalshi # a name, recognized from the next dictation
voiceio corrections add kalchi Kalshi # fix whatever still comes out wrong
voiceio learn schedule on # learn from your recordings while the machine is idle
voiceio learn status # what it learned and how each model scores
Scheduled learning runs daily or weekly at a time you pick, only on an idle machine on mains power, with a notification you can stop. It never switches models unless the new one wins, and voiceio learn rollback undoes a switch. Details: docs/learning.md.
Configure
Everything lives in ~/.config/voiceio/config.toml; config.example.toml documents every option. voiceio config set section.key value edits it in place.
Docs
| Learning your voice | Vocabulary, corrections, labeling, fine-tuning, evaluation, schedule |
| Choosing a model | Whisper sizes, Parakeet, whisper.cpp servers, licenses |
| Commands | Every voiceio command |
| Your data | What is stored where, and what is off by default |
| Phone dictation | Run voiceio headless on a home server |
| Linux support and troubleshooting | Desktops, backends, NixOS, fixes |
| Comparisons | voiceio vs Voxtype, Wispr Flow, Superwhisper, Dragon and others |
Roadmap
- Unbounded vocabulary: a decoder whose biasing has no token cap (see model choice).
- GPU on AMD and Intel: let setup run a Vulkan whisper.cpp server for you.
- Typing without IBus on GNOME and KDE: a libei backend.
- Distro packages: AUR, .deb and .rpm.
- One model everywhere: sync your fine-tune across your machines.
Contributing
Open an issue before a large PR. CONTRIBUTING.md covers the architecture, conventions and the reasoning behind the model choice. Install reports and ideas are welcome on the feedback board.
Credits
- Speech recognition: faster-whisper and CTranslate2, with OpenAI's Whisper models. The in-browser demo runs Moonshine through transformers.js.
- Ideas borrowed with thanks: modifier release, paste keys and media pausing from Voxtype; the landing page's look from Romario Kavin's KOLlateral.
License
MIT. Model weights are not part of voiceio and carry their own licenses (see docs/models.md).
Metadata
Release files for python-voiceio 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_voiceio-1.7.1.tar.gz | 2.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_voiceio-1.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.6 MB
Release files / python_voiceio-1.7.1.tar.gz
| Download URL | python_voiceio-1.7.1.tar.gz |
|---|---|
| Size | 2.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e76cd39994999bc99c64d4340d36bafeef2bf7df1965dcd388fe7dcfb5ea3aa
|
|
BLAKE2b-256 checksum How to use checksums |
faadbd393f86b4f2d50a2b1d0ec63391eece24e12b6f4c2ab68d70bbdeb7b570
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / python_voiceio-1.7.1-py3-none-any.whl
| Download URL | python_voiceio-1.7.1-py3-none-any.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
752d672a5207bb02b5a2eb124af48f147635a746ae81f27f2cfe6c9344739c60
|
|
BLAKE2b-256 checksum How to use checksums |
59cb5d38e6483d0348d93274afb942dae9198f05e701540fa2f1dc77f371ad19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log