Omarchy bar plugin that reads anything on screen out loud. Clone a voice from an audio file; if you drop about a minute of speech it few-shot fine-tunes GPT-SoVITS when the machine can handle it.
Source lives in this repo (plugin root = manifest.json). On an Omarchy box it is usually cloned or symlinked to ~/.config/omarchy/plugins/joonas.voice-reader.
This is on-demand OCR-to-speech, not an always-on accessibility screen reader.
| Action | Binding |
|---|---|
| Read a screen region | SUPER + SHIFT + PRINT |
| Read clipboard | SUPER + SHIFT + CTRL + PRINT |
| Pause / stop | SUPER + SHIFT + ALT + PRINT |
| Open the panel | Click the speaker on the bar |
In the panel: Open audio file… clones a voice, ✕ deletes one. Pick Auto, Passable (GPT-SoVITS v2), or High quality (v4). Auto uses RAM/disk, not an LLM — more reliable than asking the Omarchy agent.
voice-reader speak "Hello from the cloned voice"
voice-reader voice add ~/memo.wav --name Dad
voice-reader model set auto
voice-reader-capture regionomarchy plugin add https://github.com/joonsp/voice-reader.git --enable
./install.sh # daemon, PATH, systemd user unitOr from a checkout:
git clone https://github.com/joonsp/voice-reader.git ~/projects/voice-reader
~/projects/voice-reader/install.shOn first run the daemon downloads the recommended GPT-SoVITS weights (v4 if you have ≥16 GB RAM, otherwise v2). It reuses ~/projects/voizek/GPT-SoVITS when that tree already exists.
- Audio is converted, sliced, and transcribed with faster-whisper.
- A clean 3–12s clip becomes the GPT-SoVITS reference (zero-shot clone).
- ≥60s of speech starts a background few-shot train when the capability probe says the machine can do it.
GPT-SoVITS itself is MIT; pretrained weights come from lj1995/GPT-SoVITS.