How zerobearing2/omatalk works
Omatalk is a local text-to-speech service: the user or hotkey requests speech, the daemon captures selected text or clipboard content when needed, synthesizes sentence-first chunks, and streams audio to PipeWire. The CLI also exposes configuration, status, stop, and voice-list operations; the separately maintained bar plugin follows daemon state over a socket. The README documents installation and lifecycle capabilities, but their implementation is not mapped here. Source excerpts are limited, so uncertain internal wiring is omitted.
Main entry points: omatalkd.py Daemon service · cli.py CLI commands · engine.py Kokoro engine · player.py Audio player
Components 17
User entry points
- CLI commands
daemon/cli.py - Config commands
daemon/cli.py
Speech daemon
- Daemon service
daemon/omatalkd.py - Unix socket
daemon/omatalkd.py - Text capture
daemon/omatalkd.py
Speech runtime
- Sentence chunker
daemon/chunker.py - Kokoro engine
daemon/engine.py - Audio player
daemon/player.py
Configuration and state
- Effective config
daemon/config.py - Model and voices
daemon/config.py
Other components
- User
- Hyprland hotkey
- Bar plugin
- Kokoro ONNX
- PipeWire
- wl-paste
- Desktop notifications
Connections 20
- User → CLI commands: runs commands
- Hyprland hotkey → CLI commands: runs speak
- CLI commands → Unix socket: sends commands
- Unix socket → Daemon service: dispatches
- Daemon service → Text capture: captures text
- Text capture → wl-paste: runs capture
- Daemon service → Sentence chunker: splits text
- Daemon service → Kokoro engine: synthesizes chunks
- Kokoro engine → Kokoro ONNX: calls synthesis
- Kokoro engine → Model and voices: loads models
- Daemon service → Audio player: streams samples
- Audio player → PipeWire: plays PCM
- Daemon service → Effective config: loads settings
- CLI commands → Config commands: handles config
- Config commands → Effective config: reads and writes
- Config commands → Model and voices: lists voices
- Daemon service → Unix socket: serves state
- Bar plugin → Unix socket: follows state
- Daemon service → Desktop notifications: reports errors
- CLI commands → Desktop notifications: reports daemon down