Continuous voice dictation using Silero VAD + Whisper + ydotool.
- Press
Super+D→ Start continuous listening - Speak your text
- Pause ~1.8 seconds → Automatic transcription
- Text appears at cursor position
- Keep speaking (repeats automatically)
- Say "enter" at end of a sentence → sends Enter key
- Press
Super+D→ Stop
sudo dnf install alsa-utils ydotool libnotifyUser must be in the input group for ydotool:
sudo usermod -aG input $USER
# Log out and back incd ~/Projects/Personal/dictation
uv syncThis creates a .venv/ with all dependencies. After a Python version upgrade (e.g. Fedora upgrade), rebuild with:
bin/rebuild-venv.shThe scripts live in bin/ and are symlinked to ~/.local/bin/:
ln -sf ~/Projects/Personal/dictation/bin/dictation-continuous ~/.local/bin/dictation-continuous
ln -sf ~/Projects/Personal/dictation/bin/dictation-toggle ~/.local/bin/dictation-toggleSet up via GNOME Settings → Keyboard → Custom Shortcuts:
- Name: Toggle Dictation
- Command:
~/.local/bin/dictation-toggle nl - Shortcut: Super+D
Edit bin/dictation-continuous to adjust:
| Parameter | Default | Description |
|---|---|---|
SILENCE_THRESHOLD |
1.8 | Seconds of silence before processing |
VAD_THRESHOLD |
0.45 | VAD sensitivity 0–1 (higher = less sensitive) |
MIN_SPEECH_DURATION |
0.5 | Minimum speech duration in seconds |
Logs are written to /tmp/dictation-debug.log:
tail -f /tmp/dictation-debug.log- PipeWire/PulseAudio piping doesn't work — uses arecord (direct ALSA) instead
- wtype doesn't work on GNOME Wayland — uses ydotool instead
- First start is slow — VAD and Whisper models need to load