Skip to main content

voiceio

CI PyPI Python License: MIT

Voice dictation for Linux that learns you. Local, private, open source, and it fine-tunes itself on your own voice.

voiceio: dictation that learns you

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

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.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-voiceio 1.8.1
File Size Uploaded
python_voiceio-1.8.1.tar.gz 2.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-voiceio 1.8.1
File Interpreter ABI Platform
python_voiceio-1.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 4.7 MB

Release files / python_voiceio-1.8.1.tar.gz

Download URL python_voiceio-1.8.1.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
eaaa132f4b7fe2de4efbd9da688a058f09db46968e182358a08f1b8bd4d40c0a
BLAKE2b-256 checksum
How to use checksums
94571a58a88e5dc13fe0e4afc36ab9ace82adf89b001ac6d88b7537bde6b7217
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

Release files / python_voiceio-1.8.1-py3-none-any.whl

Download URL python_voiceio-1.8.1-py3-none-any.whl
Size 2.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
3c8577bddaeeba9ac9a8de7209d7ab19a504f9c2e3eea5c153c415d3ed2b676f
BLAKE2b-256 checksum
How to use checksums
4ca862967f295b0e1b8a4d2d07b85702f171bdf3e020c9f0ad5a548fa08ec7df
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

Release history Release notifications | RSS feed

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.3

2 release files

1.8.2

2 release files

This release

1.8.1 This release

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.11

2 release files

0.9.10

2 release files

0.9.9

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.1

2 release files

0.2.0

2 release 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