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

config.yaml
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
config.yaml
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.yaml or --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.

Full install guide →

1

Install the package

Get the .deb from the downloads page, then:

sudo apt install ./whispskrid_1.0.1_all.deb

On first configure, the package builds a private virtual environment and installs faster-whisper into it (network access needed at that point).

2

Download a model

Fetch a Whisper model and check that it loads:

whispskrid --download-model base  # also: tiny, small, medium, large-v3

With no model present, the tool offers the download on first run.

3

Dictate

Start a session in the language you want, then hold the push-to-talk key:

whispskrid -l en
4

From 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