
the parts i would rather tell you
earshot 0.1.0 is out. what it does, what it cost to build, and the parts i would rather tell you about than have you find.
earshot is out. it is a voice interface for the agents you already talk to, it runs entirely on your mac, and version 0.1.0 is on the front page now.
i want to use this post to say what it actually does and what it actually cost, rather than the version of that where everything went smoothly.
the thing that started it
every way into a computer has been yours outright. you bought a keyboard once and it worked in a blackout, on a plane, in a basement, and nobody counted the keystrokes. the mouse was the same. so was the trackpad, and the finger on the glass.
then the oldest one of all arrived last, and it arrived metered. speech got good at roughly the moment it became cheap to send audio somewhere else, so that is what got built: the microphone opens, the audio goes to a datacentre, the text comes back, and somewhere a counter goes up.
that bothered me more the longer i used agents, because talking to an agent all day is not like dictating a letter. you say half-formed things out loud. you name the client you are annoyed with and the bug you have not admitted to anybody. typing has always had a useful property here, which is that the draft nobody sees does not exist. voice, as it currently ships, does not have that property.
what it does
hold a key, say something, and it types where you were already typing. no window to switch to and nothing to install per app, because that is all pasting has ever been.
the other half is the part i actually built it for. an agent can call three things: ask you a question out loud and wait for the answer, say a short summary, or put a status in the notch without saying anything. three, and no more than three, because a bigger surface means an agent choosing between eight things it half understands.
the one that matters is the first. an agent hits a fork about a dozen times an hour and most of them do not matter, but a few matter enormously and it has no way of knowing which. the current answer is that it guesses and tells you afterwards. if being asked costs four seconds and no hands, it can afford to ask about the ones it is genuinely unsure of, which is the behaviour you wanted from it anyway.
what it cost
three separate times the app froze completely, in three different features, and it was the same mistake each time: something blocking on the main thread. registering a shortcut inside the shortcut handler. holding the player lock across a wait that only a call to stop could end, where the only caller of stop was the thread already holding the lock. opening a microphone from the hotkey handler, which is fine on a warm machine and forty seconds on a cold one with a permission dialog up.
the one that cost the most sleep was quieter. dictation recognised speech perfectly and typed nothing, anywhere, while system settings showed the accessibility toggle switched on. macos does not grant accessibility to a path, it grants it to a code signature, and our build had none. the toggle was real and it applied to something else. there is no error for this: a refused keystroke is indistinguishable from one that landed in an app that ignored it.
and i read the training licence of every voice we ship, which i recommend to anybody shipping a voice. three came out again. one was trained on a corpus whose terms exclude selling a product built on it, in those words. that is the kind of thing you want to find before somebody pays you, not after.
what is free
one person and one agent, with nothing switched off and no clock running: dictation, all three tools, every voice, the hotkey, the word list, and history. pro starts to matter when there is more than one agent, session or machine in play.
history is free on purpose. losing what you just said is the first thing that happens to everybody, not a premium problem, and charging for the fix made the free version feel broken rather than limited.
what it does not do
it is apple silicon only. both models lean on the neural engine to start answering in under a second and an intel mac cannot do it well enough that i would want you to judge the product by it.
it is english. it downloads about 800 megabytes the first time. and because nothing leaves your machine, there is no fleet getting better from your corrections — when it mishears a colleague’s surname it will mishear it again tomorrow, and the only thing that fixes it is you writing one line in the word list. that is the honest trade, and anyone telling you local inference has no downsides is selling something too.
go on then
it is free to try, there is no account to make, and it takes about a minute plus the models. if it mishears you, tell me what it did.