Real-time voice dictation for your Linux workflow, in any application

Transform your voice into text instantly in any application. Built with Python and Vosk, completely open-source and privacy-respecting — nothing you say ever leaves your machine.

v0.5.4-beta · en / fr / de / es · 100% offline · RTF < 1

vosk-cli-dictation is not a speech recognition engine — it is a command-line dictation layer built on top of Vosk, an open-source offline speech recognition toolkit. Vosk does the listening; this project handles global hotkeys, voice commands, punctuation, per-language typography, and typing the result into whatever application has focus.

Runs on modest hardware

vosk-cli-dictation was measured offline, with no accelerator, on a Raspberry Pi 4, a Raspberry Pi 5, a 2014 AMD A4-6210 laptop and desktop x86 machines. On every one of them transcription keeps pace with speech — the real-time factor stays below 1 even on the slowest, so live dictation never falls behind.

  • Around 300 MB of RAM in use, depending on the language model — roughly 210 MB for Spanish, 335–360 MB for French.
  • Background listening drops to 0 % CPU while asleep: the audio device is released and nothing runs.
  • With the restricted wake-word grammar, background listening on a Raspberry Pi 4 uses a fraction of one CPU core, and the wake word is picked up in well under a second.
MachineRAM while dictatingReal-time factor
Raspberry Pi 4 (8 GB)256 MB0.28
Raspberry Pi 5261 MB0.11
AMD A4-6210 laptop (2014)282 MB0.33
Recent x86 desktop (Ryzen 9 3950X)286 MB0.07

Measured cold, machines at rest, with the English model (vosk-model-small-en-us-0.15) — the model used throughout this page, from the memory figures above to the table. Every language page reports its own model's numbers, so a gap between two languages is a difference between models, not an inconsistency. The real-time factor is processing time divided by audio length: below 1, transcription runs faster than speech. The per-machine, per-language breakdown is in the PDF manuals.

See it in action

The same text dictated into a terminal, KWrite, LibreOffice, then an online translator — the intro is in English, the rest in French.

Key features

Real-time transcription

Your voice becomes text instantly in any active application on your system.

Multi-language support

English, French, German and Spanish, each with its own Vosk model. Voice commands, messages and typography specific to each language.

Total control

Global hotkeys, voice commands, and manual commands for a tailored experience.

Advanced configuration

Customise everything via config.yaml: theme, hotkeys, recognition aliases, and more.

Complete punctuation

Dictate every punctuation mark with natural voice commands, in each language.

100% offline

No data leaves your machine. Built on Vosk, an open-source recognition engine.

Adaptive interface

Same tool, in your language

vosk-cli-dictation --help · EN
------------------------------------------------------------------
  - Say 'start dictation' or press [Alt+H] to start/stop.
  - Say 'stop dictation', press [Alt+S], or run 'vosk-cli-dictation
    --finalize' to stop and copy.
  - Hotkeys reach the focused window and miss native-Wayland windows; use
    --finalize.

  Manual commands:
  - '/cancel', '/delete-word', '/nl'

  Punctuation commands:
  close bracket (])      close parenthesis ())
  close quote (")        colon (:)
  comma (,)              dash (–)
  ellipsis (…)          exclamation mark (!)
  new line (\n)          new paragraph (\n\n)
  open bracket ([)       open parenthesis (()
  open quote (")         period (.)
  question mark (?)      semicolon (;)
------------------------------------------------------------------
Press Ctrl+C to exit the program.
vosk-cli-dictation --help · FR
------------------------------------------------------------------
  - Dites « active dictée » ou appuyez sur [Alt+H] pour démarrer/arrêter.
  - Dites « stop dictée », appuyez sur [Alt+S], ou lancez «
    vosk-cli-dictation --finalize » pour arrêter et copier.
  - Les raccourcis atteignent la fenêtre active et manquent les fenêtres
    Wayland natives ; utilisez --finalize.

  Commandes manuelles :
  - '/cancel', '/delete-word', '/nl'

  Commandes de ponctuation :
  deux points (:)              fermez la parenthèse ())
  fermez le crochet (])        fermez les guillemets (»)
  nouveau paragraphe (\n\n)    nouvelle ligne (\n)
  ouvrez la parenthèse (()     ouvrez le crochet ([)
  ouvrez les guillemets (« )  point (.)
  point d'exclamation (!)      point d'interrogation (?)
  point virgule (;)            point-virgule (;)
  tiret (–)                   trois petits points (…)
  virgule (,)                  à la ligne (\n)
------------------------------------------------------------------
Appuyez sur Ctrl+C pour quitter le programme.
Language selection at startup
Translated help messages and status, via gettext
Native voice commands per language

Everything is configuration

Hotkeys, theme, voice commands, homophone corrections — one readable YAML file

config.yaml
hotkeys:
  toggle_recording:
    pynput_keys: ["alt_l", "h"]
    display_name: "[Alt+H]"
  finalize_session:
    pynput_keys: ["alt_l", "s"]
    display_name: "[Alt+S]"

theme:
  ready_message: "GREEN"
  info: "BLUE"
  warning: "YELLOW"
  error: "RED"

Theme and shortcuts

Set the interface colours and define your own global keyboard shortcuts for every action.

  • Customisable colour per message type
  • Configurable global hotkeys
  • Your own start/stop voice commands, per language
config.yaml
language_settings:
  fr:
    recognition_aliases:
      "de points": "deux points"
      "tirer": "tiret"
      "tirait": "tiret"
    custom_vocabulary:
      "vosk": "Vosk"
      "gemini": "Gemini"
      "ia": "IA"

Advanced settings

Correct a mis-heard word with recognition_aliases, or force the capitalisation of a name Vosk recognised correctly but lower-cased with custom_vocabulary — two separate tables for two different problems.

  • Alias table to fix frequent misrecognitions
  • Per-language voice command customisation
  • Extensible punctuation dictionary

Install it

On Debian, Fedora, openSUSE or Arch Linux, one command and one model. The full guide also covers installing from source, language models and desktop shortcuts.

Full install guide →

1

Install the package

Get your distribution's package from the downloads page, then:

# Debian 12+, Ubuntu 24.04+, Mint 22+...
sudo apt install ./vosk-cli-dictation_0.5.4~beta_all.deb
# Fedora
sudo dnf install ./vosk-cli-dictation-0.5.4~beta-1.fc42.noarch.rpm
# openSUSE Leap
sudo zypper install ./vosk-cli-dictation-0.5.4~beta-1.leap156.noarch.rpm
# Arch Linux
sudo pacman -U ./vosk-cli-dictation-0.5.4_beta-1-any.pkg.tar.zst

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

2

Download a model

Fetch the small model for a language (verified by SHA256):

vosk-cli-dictation --download-model en  # also: fr, de, es

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

3

Dictate

Start a session in the language you want:

vosk-cli-dictation -l en
4

From source (for development)

To work on the code, run it from a git clone:

git clone https://github.com/RonanDavalan/vosk-cli-dictation.git
cd vosk-cli-dictation
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python3 src/main.py -l en