Skip to content

Latest commit

 

History

127 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cadence

Offline speech to text for Linux. Local voice dictation with Whisper — no cloud, no account, no subscription.

Hold Right Ctrl and speak. Your words are typed straight into whatever app you're using — editor, browser, terminal. Everything runs on your own machine, so your voice never leaves your computer.

License: GPL-2.0

Cadence

Tested on a ThinkPad T16 Gen 4 (AMD) with a Radeon graphics chip, on Fedora 44 with KDE. It uses whisper.cpp and the distil-medium.en speech model.

Requirements

  • A Linux desktop with PipeWire audio (most modern ones have it)
  • Rust, git, cmake, and a C++ compiler
  • Vulkan drivers plus glslc — on Fedora: sudo dnf install vulkan-loader-devel glslc gcc-c++
  • ydotool and wl-clipboard (so Cadence can type for you)

Install

git clone https://github.com/oisinmcgrath/cadence.git
cd cadence
./desktop/install.sh

The script builds Cadence, builds whisper.cpp with Vulkan support, downloads the speech model (~795 MB), starts the speech server, adds a menu entry, and sets up the two permissions Cadence needs. It asks for sudo only for those permissions, and it's safe to run again — every step it has already done is skipped.

If you'd rather run the root steps yourself, use ./desktop/install.sh --no-sudo and it will print them instead of running them.

Log out and back in afterwards, then launch Cadence from your application menu. Click into a text box, hold Right Ctrl, speak, then let go.

The two permissions

Cadence needs these, and the installer sets both up:

  • /dev/uinput — so it can type into other apps. Granted with a uaccess udev rule, which hands the device to whoever is logged in at the screen rather than opening it up to everyone.
  • The input group — so it can tell when you're holding Right Ctrl. This one is broader than we'd like: it lets Cadence read all keyboard events. See Privacy and safety.

Group membership doesn't reach programs that are already running, so a terminal left open through the logout still won't see it. Check with id -nG | grep input.

Optional settings

These are environment variables you can set if you need to change defaults:

Setting What it does
CADENCE_STT_URL Which speech server to use (default: local whisper.cpp)
CADENCE_CHUNK_SECS How often text appears while you hold the key (default: 3.5 seconds)
CADENCE_MIC Which microphone to use
CADENCE_BIN Where the Cadence program is

Privacy and safety

Your voice never leaves your computer. The speech server runs locally, Cadence sends nothing online, and there's no tracking of any kind.

Worth knowing: to detect the Right Ctrl hold, Cadence reads from /dev/input, which means it can see every key you press — not just the one it's waiting for. Linux has no way to grant access to a single key. Cadence only ever looks for Right Ctrl and does nothing with the rest, and the code is right here in src/hold_to_talk_over_evdev.rs if you want to check that for yourself.

The typing side is tighter: the ydotoold daemon runs privately, only while Cadence is running, and the kernel kills it the moment Cadence exits.

License

© 2024–2026 Oisin McGrath — free under GPL version 2.
Speech models and whisper.cpp have their own licenses.

Project page · Privacy · Terms

About

Offline speech-to-text dictation for Linux. Local Whisper voice typing — hold a key, speak, and it types at your cursor. No cloud, no account.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages