Super STT Gets Better Typing, Real Notifications, Auto-Updates, and Your Own OpenAI-Protocol Servers
Since my last post, v0.2.1, v0.2.2, and v0.2.3 have shipped, and of everything that shipped, four things are the ones I'm most excited to write about.
Better Typing Without Extra Dependencies
The biggest unresolved item left over from the last post was this:
- Create a native, safe, non-intrusive way to input into text fields across all desktop environments and applications.
The input side is actually stable now. Two things were going on. The first: the typing backend was simply failing to type into certain apps, and that needed its own fix.
The second, I had a report from @haydonryan, where running Super STT on Wayland would work for a while and then just stop typing, and restarting the service didn't fix it.
@haydonryan figured out the issue and pushed the fix.
If Super STT has felt a little unstable when typing on your Wayland session, update it, it will probably be much better now.
Failures You Can Actually See
Until now, when recording failed, Super STT did something that was not very helpful: it typed the error message into your text field.
Now, when recording fails, Super STT sends a desktop notification that says why it failed. Hopefully, you won't experience any errors, but if you do, now you at least will know what went wrong in a better way.
It Updates Itself Now
Every previous version of Super STT had the same distribution story: you install it, and then it is whatever version you installed until you remember it exists, go read the releases page, and re-run the install script.
The daemon now checks for a newer release when it starts and sends a desktop notification if it finds one. The app gained an Updates page, with information about the current release, available releases, and you can also opt into beta releases right from there as well. Best of all, you can press the "Update" button and it will download the new binaries and update everything in place.
One Manual Update
A daemon can't tell you about an update if it doesn't know to look. So update Super STT manually one last time.
bashcurl -sSL https://raw.githubusercontent.com/jorge-menjivar/super-stt/main/install.sh | bash
Use Any Server That Speaks the OpenAI STT Protocol
Thanks to @haydonryan again for suggesting and implementing part of this feature, you can now point Super STT at your own speech-to-text server, as long as it speaks the OpenAI transcriptions API.
The OpenAI backend (a 206KB WASM binary, as a reminder) gained two options:
-
API base URL: point the backend at any server instead of
api.openai.com. The host you name is automatically authorized for egress, and only that exact host and port get into the sandbox. -
Custom model name: pick the "other" model in the OpenAI backend and set the name of the model you want to use in the OpenAI backend settings.
So if you're running Whisper on another computer, or vLLM serving anything else that exposes an OpenAI-compatible /v1/audio/transcriptions, Super STT can just use it. It doesn't matter if the model is running locally or on the cloud. You can join the discussion about this topic here.
A feature of this is that the backends sandbox grants a custom host exactly the access you ask it for. If your server sits on the LAN and you want Super STT to reach it, the base URL has to name it. This means security continues to be exercised while allowing you to connect to custom servers.
What It Looks Like in Practice
- Install the OpenAI backend from the Super STT app.
- Set the model to "other" in the UI and load it.
- Set the API base URL to
http://your-server:8000/v1and drop your model name in the custom model field. - No API key needed if your server doesn't want one.
- Start transcribing into whatever your cursor is in.
Where That Leaves the Checklist
From the last post, the items that matter now:
- Create a native, safe, non-intrusive way to input into text fields across all desktop environments and applications.
Progress. Input is stable on X11 and Wayland as far as my testing and reports show, and failures are now reported to you, not to your sentence. A proper abstraction that apps can opt into instead of simulated typing is still the endgame.