Hysen Labs
Open-source project
jorge-menjivar/super-stt avatar
jorge-menjivar

super-stt

Super STT let's you speak, and your words are typed straight into whatever app is focused

73 stars4 forksRustGPL-3.0
DEEP OPEN-SOURCE ANALYSIS

Super STT dictates speech into any Linux app

Super STT is a Rust daemon that transcribes microphone audio and types the text into the focused Linux application through a model agnostic engine.

How dictation works on Linux

Super STT lets a Linux user speak into any application and have the words appear as typed text. The README describes the experience as binding one shortcut, speaking, and watching the transcription land in whatever window is focused, whether that is an editor, a browser, a chat client, or a terminal. There is no copy and paste step and no manual fiddling with the result. The convention is to bind Super plus Space, and on the COSMIC desktop the installer sets that binding for the user.

Under the hood the tool is two parts. The first is a model agnostic engine: a background daemon installs speech models from a library of backends, loads one, and keeps it warm for instant transcription. The user picks the model that fits the hardware and can swap it at any time. The second part is an open protocol. The daemon speaks a documented HTTP protocol over a local socket, so any app in any language can request transcriptions, stream live audio visualizations, or drive recording, with per app consent. Super STT's own desktop app, command line tool, and COSMIC applet are presented as the first clients of that protocol rather than special cases. The README stresses that the protocol is the part meant to outlast any single interface.

Models and backends

Models come from a library of backends that the user installs on demand. Inside the app, the Library then Browse view installs a backend and adds it to the model selector. Some backends run locally so the audio never leaves the machine, while others are online providers reached with the user's own API key, which is stored in the system keyring such as GNOME Keyring or KWallet.

The README recommends several local models. Voxtral in mini or small sizes offers high accuracy but needs an NVIDIA GPU with CUDA. Qwen3-ASR in 0.6b or 1.7b sizes is fast and multilingual and runs on CPU or an NVIDIA GPU. Whisper from tiny to large is described as versatile and battle tested, with tiny and base being good CPU defaults. For online use the catalog lists Mistral with voxtral-mini-latest and a realtime Voxtral model, OpenAI with gpt-4o-transcribe, gpt-4o-mini-transcribe, and whisper-1, and Deepgram with nova-3. GPU acceleration is a property of the model rather than a separate build of the app: install a GPU capable backend and the daemon downloads the build matched to the NVIDIA GPU automatically. The catalog is published live at jorge-menjivar.github.io/super-stt/index.json, and anyone can publish a new model to it.

The open protocol and developer access

Super STT is built to be extended. The README points developers to three paths. Building a client means using the documented HTTP protocol to pull transcriptions, event streams, or recording control into an app written in any language. The protocol docs live under docs/protocol. Adding a model means packaging a speech model as a backend the daemon can install and run, then publishing it to the catalog through docs/protocol and registry/README.md. Contributing covers building from source, the workspace layout, and the pull request workflow in CONTRIBUTING.md.

The architecture and the security model are described as living in the docs directory. The protocol's use of per app consent is called out as a design choice, so an app that asks for transcriptions must be granted permission rather than receiving audio by default. This is what lets the daemon sit between the microphone and many clients without every client hearing everything. The README does not enumerate the full message set in the main page, instead sending readers to the protocol folder for the exact calls. That split keeps the front page focused on users while the developer material stays in its own place, and it signals that the protocol, not the bundled apps, is the long term surface other projects are expected to build against.

Installation and troubleshooting

Installation offers two routes. The quick path runs a curl piped to bash that detects the system and downloads pre built binaries. Appending -s plus the --beta flag fetches the latest beta. The build from source path clones the repository and runs just install, which needs the prerequisites listed in CONTRIBUTING.md. Either way the result is the daemon, the stt command line tool, a consent helper, the desktop app, and on COSMIC a panel applet, all wired up as a systemctl --user service. The install is system wide and asks for sudo, while the daemon runs unprivileged in the user session.

Using it is one command: stt record --write records, transcribes, and types the result after silence or a second trigger. Recording has two tunables. Stop mode chooses whether a session ends on silence, on a second press, or both, and write method chooses how text is injected, trying the XDG Desktop Portal, then ydotool, then direct Wayland input. The troubleshooting section covers common issues: a missing stt on PATH after install, a daemon that will not start and should be checked with journalctl, low accuracy from wrong mic volume, and apps where typing fails and ydotool is the fix. Each of those steps maps to a concrete command, so most failures can be resolved without reading the source.

Editorial conclusion

The tool is written in Rust and the source is hosted at github.com/jorge-menjivar/super-stt.

DEEP OPEN-SOURCE ANALYSIS

Official sources

Community notes

Community notes