YazSes¶
Offline, on-device voice dictation for Linux, macOS & Windows. Hold a key, speak, release — your words are transcribed locally with faster-whisper and typed into any focused app. No cloud. No API key. No subscription. Nothing leaves your machine.
Get started Install from PyPI Star on GitHub
40-second tour: the core loop, the command line, and the system tray. Terminal output is real; the command-line typing is re-enacted for legibility. Watch it with narration and chapters on YouTube
Why YazSes¶
-
Fully offline by default & private
Speech is transcribed on-device with CPU faster-whisper (int8). No GPU, no network, no account. No audio, no text — nothing leaves the machine by default.
-
Types into any app
Hold the hotkey, speak, release — the text lands in whatever window has focus: editor, browser, terminal, chat. Works on X11 and Wayland.
-
Works over SSH and Remote-SSH
Because text is injected at the OS level, not inside an app, it lands in VS Code / Cursor Remote-SSH panes, integrated terminals,
tmuxand container shells — where in-app dictation usually can't reach. -
Voice commands & macros
A regex grammar maps "undo that", "save file", "go to line 42" to real key sequences.
-
Transcribe recordings
yazses transcribe meeting.m4aturns any audio/video file into text — offline, with--diarizespeaker labels and subtitle export. -
Built for accessibility
VAD calibration, mic-level tuning, dysfluency-friendly mode, and an EMG muscle-sensor trigger for fully hands-free use.
-
Self-improving, on your terms
An opt-in, encrypted, on-device learning corpus lets
yazses tunepropose accuracy fixes from your own corrections.
Install¶
The snap on Wayland
The strictly confined snap dictates on X11, and on GNOME/KDE Wayland through the xdg-desktop-portal RemoteDesktop API. It cannot configure or use the host ydotoold service, so the portal is the route it takes; the first dictation asks once for permission and the answer is remembered. The unconfined installs above remain the most-tested Wayland path.
On X11, connect both required interfaces after installing:
sudo snap install yazses
sudo snap connect yazses:audio-record
sudo snap connect yazses:raw-input
yazses doctor
yazses setup is not required for the snap. Confinement prevents it from installing host packages, changing groups, or configuring host services, so it can only print the manual permission checklist; the snap already bundles its X11 dependencies.
Non-Snap Linux installs — provision the system in one command (the install-apt.sh / APT path does it automatically):
yazses setup # installs audio + injection deps, joins the input group, sets up ydotoold
# then log out and back in (the input-group change needs a fresh login)
This installs libportaudio2 (audio), the X11/Wayland injection tools, adds you to the input group, and — on GNOME/KDE Wayland, where wtype is blocked — sets up ydotoold (the only way to inject keystrokes there). Re-run it anytime; it only fixes what's missing.
Then:
yazses doctor # check mic, injection backend, permissions (want [OK] Keyboard capture)
yazses enroll # calibrate your microphone (~30 s)
yazses start # start the dictation daemon
Hold the hotkey (Right Alt on Linux, Right Option on macOS, Right Ctrl on Windows), speak, release — the text appears in the focused app within about a second.
What it does¶
- Offline dictation — type into any focused app with on-device faster-whisper (CPU, int8). No GPU needed.
- Transcribe recordings —
yazses transcribe meeting.m4aturns any audio/video file into text, fully offline. Add--diarizeto tag who said what and--format srtfor subtitles. See the transcription guide. - Voice commands — a regex grammar maps phrases to editor/terminal key sequences: "undo that", "save file", "go to line 42", "run the tests", "rename this to user_id".
- Macros & personal vocabulary — define multi-step commands and teach YazSes your mis-heard words.
- Dysfluency-Friendly Mode — opt-in collapse of stutters/repeats for stuttered or dysarthric speech.
- Self-improving — opt-in, encrypted on-device learning corpus;
yazses tuneproposes accuracy fixes from your own corrections. - Accessibility — VAD calibration, mic-level tuning, and EMG (muscle-sensor) trigger support.
What people use it for¶
- Voice typing on Linux — dictation that works on X11 and Wayland
- Voice dictation on Wayland — GNOME, KDE Plasma, sway and Hyprland, terminals included
- Confidential & offline work — clinical, legal, air-gapped
- Coding by voice — spoken symbols, identifiers, LaTeX, git
- Control by voice — commands, macros, hands-free actions
- Accessibility & RSI — hands-free and dysfluency-friendly
- Transcribe recordings — offline, with speaker labels
- Dictating code — identifiers, jargon and punctuation
- Choosing a model — measured accuracy vs latency
- Platform support — will it run on my OS and CPU
- Capability matrix — which features work where, and why not
- The Settings window — every capability as a checkbox, no config file
- More than one language — non-English and code-switching
When not to use it¶
YazSes is not an LLM agent — it dictates text and runs editor/terminal commands; it does not browse, reason over your files, or hold a conversation. It uses CPU faster-whisper (a cloud service may still win on raw accuracy for a noisy mic), ships English-tuned *.en models by default, and is desktop-only.
How it works¶
Hold hotkey → record audio → VAD gate → faster-whisper (CPU)
→ clean + disfluency filter → command grammar (Tier 1 regex)
→ dictate? type it · command? send keys
Two at-a-glance signals show you what YazSes is doing: a top-bar "Y" tray icon whose colour is a live state indicator (🔵 idle · 🟢 dictating · 🟡 no text target → clipboard · 🟣 command mode · 🔴 problem) and an optional sonar overlay that pulses near your cursor while it's listening. See Tray icon & overlay for what each colour means.
Want the CLI itself, not a description of it? Watch it play right here — a real asciinema recording of -h → about → quickstart → features → status, with selectable, copy-pasteable text. Or in your own terminal: asciinema play docs/demo/yazses-cli.cast.
Documentation¶
- Install on Linux · macOS · Windows
- CLI reference — every command and flag
- Configuration — every
config.tomlsection - Features & v2 preview
- Comparison & alternatives — vs Talon, Dragon, Wispr Flow
- FAQ — common questions answered
- Architecture & diagrams
- Troubleshooting & roadmap
- Research — the cited science behind eye, voice & muscle input
- Student & research projects — thesis-sized problems, open issues
Curious why it works this way?
The research section is a public, fully-cited notebook on post-keyboard input: how accurate webcam eye tracking really is, how offline speech recognition overtook the cloud, and why a $50 muscle sensor beats a $1,000 EEG headset. Every design decision in YazSes traces back to a measurement there — and the open questions are open to anyone.
FAQ¶
Does it work without internet? Yes — transcription runs locally; nothing is sent anywhere by default.
What GPU do I need? None. It runs on CPU; 4 GB RAM minimum, 8 GB comfortable.
Does it work on Wayland? Yes via the APT or pipx install (uses wtype/ydotool). Use one of those, not the snap — strict confinement prevents the Snap from using the host injection service, so it cannot type the result into Wayland applications.
Is it a replacement for Talon? YazSes focuses on offline dictation plus a practical command grammar. Talon has far more advanced scripting. They can coexist.
More answers in the full FAQ, and a side-by-side in Comparison & alternatives.
Apache-2.0 licensed. If YazSes is useful to you, a ⭐ on GitHub helps others find it.
Want to help? See Contributing — several tasks need no code at all, like translating the README, sharing a config you already use, or adding the microphone that worked for you.

