Manage the voice keyboard push-to-talk dictation tool. Use this skill when: start voice keyboard, stop voice keyboard, install voice keyboard, voice dictation, push-to-talk, voice typing
Manage the voice keyboard — a self-contained push-to-talk dictation tool using faster-whisper for local speech-to-text. Hold AltGr to record, release to transcribe and type.
All source code lives inside this skill directory — no external repo needed.
dictate.py and pyproject.toml live)/tmp/voice-keyboard.log~/.config/voice-keyboard/config.ini{SKILL_DIR}/scripts/voice-keyboard.shvoice-keyboard/
├── SKILL.md # This file
├── config.example.ini # Example config (copied to ~/.config on install)
└── scripts/
├── voice-keyboard.sh # Helper script (install/start/stop/status/restart/logs)
├── dictate.py # Main Python application
├── pyproject.toml # Python project + dependencies
└── uv.lock # Locked dependency versions
Use {SKILL_DIR}/scripts/voice-keyboard.sh for all operations.
Always check status first before starting or stopping.
Execute steps based on what the user wants:
{SKILL_DIR}/scripts/voice-keyboard.sh status
STATUS: running (PID: ...) → voice keyboard is activeSTATUS: stopped → voice keyboard is not runningRun when the user wants to install or first-time setup:
{SKILL_DIR}/scripts/voice-keyboard.sh install
This will:
uv sync inside {SKILL_DIR} to create .venv and install faster-whisper + evdevconfig.example.ini → ~/.config/voice-keyboard/config.ini (if not already present)input groupIf user is NOT in input group, inform them:
sudo usermod -aG input $USER
# Then log out and back in
{SKILL_DIR}/scripts/voice-keyboard.sh start
.venv must exist)dictate.py in background via nohup uv run python dictate.py{SKILL_DIR}/scripts/voice-keyboard.sh stop
Use after config changes:
{SKILL_DIR}/scripts/voice-keyboard.sh restart
{SKILL_DIR}/scripts/voice-keyboard.sh logs
Or follow live:
tail -f /tmp/voice-keyboard.log
Config file: ~/.config/voice-keyboard/config.ini
[whisper]
model = tiny.en # tiny.en, base.en, small.en, medium.en, large-v3
device = cuda # cpu or cuda
compute_type = float16
[hotkey]
key = alt_gr # hold this key to record
[behavior]
auto_type = true
notifications = true
grab_keyboard = false
After editing, restart:
{SKILL_DIR}/scripts/voice-keyboard.sh restart
IF: User says "start voice keyboard" or "enable dictation"
THEN: Check status → if stopped, run start
IF: User says "stop voice keyboard" or "disable dictation"
THEN: Check status → if running, run stop
IF: User says "install voice keyboard" or first-time setup
THEN: Run install, report results and any warnings about input group
IF: User says "restart voice keyboard" or "reload config"
THEN: Run restart
IF: User says "voice keyboard logs" or "why isn't it working"
THEN: Run logs, report output