Private intended-text dictation for Wayland.
Press once, speak naturally, press again.
Whispers is one local dictation pipeline, not a collection of modes. It records from PipeWire, shows a low-latency Nemotron preview, then transcribes the full recording with multilingual Parakeet TDT v3 before applying your vocabulary, spoken symbols, and a conservative local Qwen cleanup. The result is typed into the window where dictation began.
A compact bottom-center OSD shows whether Whispers is listening, transcribing, enhancing, or delivering. It runs out of process through Quickshell, keeping GUI toolkits out of the Rust build.
Saying “this slash that” produces this/that. Saying “the word slash” keeps the
word. literal slash is the explicit escape hatch.
Clear spoken number lists use digits. Saying “one, two, three, put a hyphen
between those” produces 1-2-3; comma, slash, and space work as explicit
separators too.
The Rust application is a control plane with seven direct dependencies. It does
not compile or vendor whisper.cpp, llama.cpp, CUDA, an async runtime, an audio
stack, or a GUI toolkit. whispers setup downloads checksum-pinned sherpa-onnx,
Nemotron, Parakeet, llama.cpp, and Qwen artifacts. Inference runtimes can
therefore be
upgraded independently without turning every application build into an ML
toolchain build.
There is one binary and one interaction:
whispers setup
whispers # start listening
whispers # finish, infer intended text, and deliverNo audio or transcript is retained. Setup is the only operation that needs the network; dictation and enhancement run locally.
Linux x86_64, Wayland, PipeWire, wtype, wl-copy, curl, tar, bzip2, and
sha256sum are required. On Arch Linux:
paru -S whispers-git
whispers setupOr build from source:
cargo install --path . --locked
whispers setupSetup downloads roughly 4 GB and preserves any version 1 configuration as a timestamped backup before importing useful settings and vocabulary.
Bind whispers to one compositor shortcut. For Hyprland:
bind = SUPER ALT, D, exec, whispersFor Niri:
Mod+Alt+D { spawn "whispers"; }whispers Toggle dictation
whispers cancel Cancel recording or finalization
whispers status Print the service state
whispers setup Install runtimes and migrate configuration
whispers doctor Diagnose the local runtime
whispers vocabulary list
whispers vocabulary add TERM --alias SPOKEN
whispers vocabulary remove TERM
See installation, the CLI guide, and
architecture, plus
troubleshooting, for details. The generated
configuration lives at ~/.config/whispers/config.toml; the canonical shape is
in config.example.toml.
Whispers is licensed under the MIT License. Downloaded inference runtimes and models retain their respective upstream licenses and are not redistributed in this repository.