Push-to-talk voice dictation for Linux, in any application
Hold a key, speak, release: the transcribed text is inserted into the focused window. Powered by Whisper through faster-whisper, completely open-source and privacy-respecting — nothing you say ever leaves your machine.
v1.0.1 · en / fr / de / es · 100% offline · push-to-talk
WhispSkrid is not a speech recognition engine — it is a command-line dictation layer built on top of Whisper, served by faster-whisper (CTranslate2). Whisper does the transcription; this project handles the push-to-talk key, audio capture while the key is held, the control socket that wires up desktop shortcuts, and inserting the result into whatever application has focus.
Light, persistent
The Whisper model is loaded once into a persistent process, then transcription
happens on key release. The base model in int8 weighs
about 145 MB on disk and peaks around 0.5–0.6 GB of RAM on CPU
(about 0.3 GB of VRAM on GPU); from tiny to
large-v3 the range spans roughly 75 MB to 3 GB on disk. No
automatic segmentation of speech: whatever is recorded between press and
release goes out in a single pass.
- Push-to-talk is strict: capture lasts exactly as long as the key is held, with no timer and no silence cutoff.
- The only automatic safeguard is a high, configurable maximum capture duration, against a stuck key.
- Once the model is present locally, no network connection is needed.
Real per-machine readings were taken during validation across five machines and are not published here — the orders of magnitude above are the reference.
Key features
Strict push-to-talk
Recording lasts exactly as long as you hold the key. No automatic cutoff, no timer, no end-of-sentence detection.
Four languages
English, French, German and Spanish. -l fr forces the language passed to Whisper; with no argument, Whisper detects it.
Two trigger paths
A local key listener with native hold semantics, or sub-commands bound to your desktop's global shortcuts — the path that works everywhere under Wayland.
One configuration file
Model, push-to-talk key, audio device, clipboard, theme: all in config.yaml, overridden key by key from your home directory.
Whisper punctuates itself
Punctuation and capitals come from the model. Post-processing is limited to trimming whitespace and forcing a leading capital.
100% offline
The model is loaded from a local directory. No data leaves your machine.
Everything is configuration
Push-to-talk key, model, audio device, clipboard — one readable YAML file
hotkeys:
# Local pynput listener (best-effort; under Wayland,
# XWayland windows only).
pynput_enabled: true
# Hold = capture; release = transcription.
push_to_talk: ["shift_r"]
theme:
ready_message: "GREEN"
info: "RESET"
warning: "YELLOW"
error: "RED"
Key and theme
The push-to-talk key is overridable, and the local listener is switched off with a boolean when you prefer to drive from desktop shortcuts. Terminal output colours are set per message type.
- Configurable push-to-talk key; right Shift by default
- Local listener on or off
- Customisable colour per message type
backend:
name: "faster-whisper"
beam_size: 5
models:
default: "base" # tiny | base | small | medium | large-v3
dir: "" # empty => standard locations
device: "auto" # cpu | cuda | auto
compute_type: "auto" # int8 | float16 | auto
capture:
max_seconds: 300
Engine and models
The default model can be changed at any time, by short name or absolute path, with no recompilation. device and compute_type stay on auto: int8 on CPU, float16 on CUDA.
- Model chosen through
config.yamlor--model - Managed model directory; the Hugging Face cache is only a fallback
- Capture-duration safeguard against a stuck key
Install it
On Debian or Ubuntu, one command and one model; Fedora, openSUSE and Arch Linux have their own packages. The full guide also covers installing from source, choosing a model and desktop shortcuts.
Install the package
Get the .deb from the downloads page, then:
sudo apt install ./whispskrid_1.0.1_all.debOn first configure, the package builds a private virtual environment and installs faster-whisper into it (network access needed at that point).
Download a model
Fetch a Whisper model and check that it loads:
whispskrid --download-model base # also: tiny, small, medium, large-v3With no model present, the tool offers the download on first run.
Dictate
Start a session in the language you want, then hold the push-to-talk key:
whispskrid -l enFrom source (for development)
To work on the code, run it from a git clone:
git clone https://github.com/RonanDavalan/whispskrid.git
cd whispskrid
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/whispskrid -l en