PushSense exists because of a price tag.
I type a lot, and I talk faster than I type, so dictation should have been an easy win. But when I went shopping for a dictation app, everything decent was a subscription — roughly $10–15 a month, $100 or more a year, forever. Not to buy software. To rent the ability to turn my own voice into text, with my audio making a round trip through someone else's server every time I spoke.
That felt expensive in a way that had nothing to do with my bank account. A subscription means the tool stops working the day I stop paying. The cloud means every half-formed thought I dictate — emails, notes, things I mumble at midnight — lands on infrastructure I don't control, priced as a service precisely because it keeps flowing through that infrastructure.
And I had a nagging suspicion: the actual work being sold to me didn't need a data center anymore.
What the subscription is actually paying for
Speech recognition used to genuinely require the cloud. The models were huge, the compute was specialized, and your phone couldn't do it. That world ended quietly. OpenAI released Whisper with open weights; Georgi Gerganov's whisper.cpp made it run natively on Apple Silicon with Metal; and the M-series chips in every recent Mac ship with a GPU that sits idle most of the day.
So I started researching what local transcription could actually do, using my own machine and my own voice. Three things surprised me:
- The models are small. The one PushSense now recommends is 181 MB — smaller than most Electron apps' node_modules. I later measured it against models nine times its size and it produced character-for-character identical transcripts of my real speech.
- Local is fast. Transcribing 27.7 seconds of speech takes about a second on an M-series GPU. A cloud service can't beat that, because my sentence has to travel to Virginia and back before it becomes text.
- The hard part wasn't the recognition. It was everything around it — which is why the subscriptions exist. More on that below.
The problem nobody's subscription solved anyway
Here's the thing that made the decision for me. I switch between Chinese and English mid-sentence — 「这个 feature 的 latency 有点高」 is a completely normal thing for me to say. Every dictation tool I tried picks one language and mangles the other. I would have paid a subscription for one that didn't. None of them earned it.
Whisper, it turns out, handles code-switching natively. Not perfectly — I've written about where it breaks — but well enough that "hold a key, speak two languages, release" just works. The feature I couldn't buy at any monthly price was sitting in an open-weights model, free.
So I built it
The first version was an Electron app, because that's the fastest way to get something working. It worked — and weighed about 200 MB to do a job whose model was smaller than the app around it. That bothered me enough to rebuild it in native Swift: the result is 5.5 MB installed, a menu-bar app that holds one keyboard shortcut, one microphone, and one Metal-accelerated model.
Hold Right-Option. Speak — in whichever language, or both. Release. The text is typed into whatever field you were already focused on. Nothing is uploaded, because there is nowhere to upload it to.
What "too expensive" really meant
The money was the surface of it. $100 a year is real, and over five years it's $500+ for something a 181 MB file does locally — but the deeper cost of the subscription model is structural:
- Rent never ends. Stop paying and the tool is gone. Software you run locally keeps working on the day the company doesn't.
- Your voice is the product's fuel. A cloud dictation service is architecturally a pipeline of your speech through their servers. The privacy policy is a promise; the architecture is a fact.
- Latency is physics. No amount of subscription revenue makes a round trip to a data center faster than a GPU that's already in your lap.
PushSense is free to download. It costs nothing, monthly or otherwise, because after the research phase it was clear there was nothing left to charge for: the model is open, the compute is yours, and the engineering in between is the part I enjoyed anyway.
I didn't set out to make a statement about local-first software. I set out to avoid a subscription, looked closely at what the subscription was for, and found out most of it was already free.