Ears
ears is the fleet's production-grade speech-recognition daemon for Linux. Integrates with whisper.cpp (or any OpenAI-compatible ASR server) and the desktop workflow.
Stack: Rust. Private repo.
Features
- Interactive TUI — real-time status, VAD mode, live transcription, config.
- Push-to-talk — bind
ears toggleto a keyboard shortcut. - VAD mode — Voice Activity Detection for hands-free continuous transcription (
ears vad). - Streaming — LocalAgreement policy for stable text.
- Text filters — optional lowercase / punctuation removal.
- Language detection — from keyboard layout (Hyprland + GNOME).
- Smart text input —
wtypeon Hyprland / Wayland, clipboard paste viaydotoolelsewhere. - PipeWire native audio; audio feedback (embedded beeps, override support).
- State management — file-based locking with crash recovery.
- Post-transcribe hooks — run custom scripts after each transcription.
Server URL rule
ears appends /v1/audio/transcriptions for you. Set server to the host base without a trailing /v1. Groq is https://api.groq.com/openai, not .../openai/v1. A trailing /v1 doubles to /v1/v1/... and 404s; ears test warns about this.
Security
api_key is stored in plaintext — ears writes config files with 0600. EARS_* environment overrides only apply to interactive runs; a keybind-launched ears toggle inherits the graphical session env, not your shell, so push-to-talk keys must live in the actual config.
Sources
See also
- trost — sibling voice project (VibeVoice TTS API).
- discord-bot — consumes ASR in a live voice pipeline.