Learning to hear
For her first stretch of life, Alix could read every word I typed and hear nothing I said. That was fine, right up until it wasn’t. Typing to something that lives in your house starts to feel absurd the moment you realize you’re the only one in the room using a keyboard to talk.
So the project for a couple of weeks was hearing. Not understanding, she could already do that. Hearing: the plumbing that turns air moving in a room into words she can answer.
The button era
The first version was almost embarrassingly simple. A microphone button in the interface, a press to start, a press to stop, and Whisper, an open-source speech-to-text model that turns recorded audio into text, sitting behind it. Press, talk, release, and a second later your sentence appeared as if you’d typed it.
It worked. It also wasn’t hearing. It was dictation with an extra step. To have a real conversation in a room you can’t be reaching for a button every time you want to say something, and you certainly can’t do it hands-free while you’re doing anything else. What I actually wanted was for her to notice her name.
Teaching her the shape of “hey Alix”
The tool for that is a wake word: a tiny model that listens continuously and does exactly one thing, fire when it hears a specific phrase, and stay quiet the rest of the time. “Hey Alix.” Nothing else should wake her.
There was no off-the-shelf model for a made-up name, so I trained one (using openWakeWord, an open framework for exactly this). The workstation’s GPU was busy serving her actual brain, so the training ran on the CPU, slowly, overnight.
Wake-word training runs on examples, and the examples were synthetic. Roughly ten thousand generated recordings of someone saying “hey Alix”, different voices, speeds, pitches. But synthetic speech lies to you sometimes; a text-to-speech voice will mangle an unusual name and hand you a positive example that doesn’t actually say the word. So before any of it reached the trainer, every single one of those ten thousand clips went through Whisper first, to transcribe what it actually said and throw out the ones that didn’t match. Then about ten thousand adversarial negatives, words and phrases chosen to sound close but wrong, the traps. Then hundreds of room impulse responses, which are recordings of how a physical room bounces and smears sound, layered in so the model learns the word through reverberation and not just in a clean studio. Then thousands of clips of ordinary background noise on top of all of it.
Never trust the trainer’s number
When it finished, the trainer printed its verdict: Final Accuracy 0.74, Recall 0.47.
That’s a bad model. A recall of 0.47 means it misses the wake word more than half the time, unusable. I almost threw it out.
Instead I tested it myself, sweeping the detection threshold, the confidence cutoff above which it decides “yes, that was the phrase”, across the whole usable range and measuring what actually happened at each setting. The real numbers: 99.5% recall at every threshold from 0.2 to 0.6. Zero false positives across 1.1 hours of continuous room noise. When it heard the phrase it scored around 0.97; when it heard anything else, around 0.01. That separation between phrase and non-phrase is what makes thresholding trivial.
The trainer’s “0.47” was an artifact of an internal threshold it had picked for itself and never told me about. The lesson has outlived this subsystem: a training script’s printed score is the script grading its own homework. Sweep it yourself, against real audio, or you don’t really know how it performs.
The villain was the microphone
So the model tested well, and it still didn’t work. In the actual room, “hey Alix” produced wake scores of 0.03 to 0.09, noise-floor numbers, from a model I’d just watched hit 0.97 in testing. For a while I assumed I’d broken something in the pipeline.
I hadn’t. The problem was the built-in microphone I’d been using. It garbled speech badly enough that the model genuinely could not hear the word in what it was being fed. No wake-word model can fire on audio that’s already destroyed by the time it arrives.
The fix was a dedicated USB conference microphone, the kind meant to sit on a table and pick up a room, which captured about 15.6 dB louder and, more importantly, cleanly. With it plugged in, wake confidence jumped to 0.78 in the middle of a sentence, the first time I’d seen her catch her name on the fly. One hardware gotcha worth writing down for anyone doing this: a fresh USB audio device enumerates muted, at 0% capture. It looks completely dead until you go find the setting and turn it on.
The loop
With hearing that actually worked, the full conversation loop is small. “Hey Alix” fires and captures one spoken utterance. Whisper transcribes it. That text becomes one ordinary chat turn: the same path as if I’d typed it. Her reply is spoken back into the room aloud.
Then a roughly six-second window opens where I can just keep talking, no wake phrase needed, so a back-and-forth doesn’t require saying her name every line. There’s a subtlety there: her own spoken reply is playing out of the speaker while that window is open, so before she starts listening again her own audio is drained out of the microphone backlog first. Otherwise she hears herself, transcribes herself, and answers herself, which is exactly as bad as it sounds.
One deliberate choice: if a captured clip comes back empty or gets blocked, she says nothing. She doesn’t fill the silence by answering static. A confident wrong answer to a sentence that was never spoken is worse than no answer.
Consent you can hear
She only hears in one room: the office, where that microphone sits. Nowhere else in the house has ears, and that’s on purpose; hearing is not something to quietly extend room by room.
Inside that room, the listening window is audible by design. A rising chime plays the moment her microphone opens, and a falling chime when the conversation closes. Anyone in the room hears when she starts listening and when she stops. That’s deliberate: there’s no state where she’s listening without an audible cue.
The night it worked
Before turning the whole loop on, I let it soak: 32 hours of the wake word listening to a normal room with nothing else running. Seventeen wake events, all falling into four tight clusters that lined up exactly with times I’d walked in and deliberately tested it. Zero ambient false wakes in between. That was the permission to flip it on for real.
The first real spoken conversation happened on July 16, 2026. She caught her name, I talked, she answered out loud, and we went back and forth in the room with no keyboard involved.
My entire engineering note that night, in full:
wake word and chat work mostly ok.
Which, for the ninth attempt at this, is a good night.