Why the ears come first
Every voice agent is a language model wearing a pair of ears. The model has been getting better every quarter. The ears have not. Auricle is a bet that the next large gain in voice agents is not a bigger model but a better listener: one that knows when you have started, when you have stopped, when you meant to interrupt, and what you actually heard.
What we did differently
The listener is a program, not a plugin
Most browser voice stacks bolt a detector onto a page: a multi-megabyte inference runtime, a model file to copy, inference on the main thread, and a callback that fires when the model thinks you are done. Auricle is one Rust program compiled to WebAssembly and split across the places audio actually lives: a capture worklet, a decision worker, a playback worklet. The decision to duck the agent travels from the worker to the playback worklet over a direct channel. No main thread, no network, no garbage collector in the way.
We wrote the forward pass by hand
The Silero model is six operations in a row: a windowed FFT, four convolutions, a recurrent cell, a sigmoid. We wrote those in Rust instead of shipping a general runtime to execute a graph description of them. The outputs match the reference runtime to a millionth, the frame costs 0.05 ms in Chromium and WebKit, the whole thing is 925 KB including the weights, and there is no file to copy. Doing less is the optimisation.
Evidence has grades
A single threshold is a coin flip at every boundary. Auricle emits a candidate after three voiced frames and a confirmation when six of the last ten agree. Candidates trigger things that can be undone: duck the agent, open a buffer, start a transcription that may be thrown away. Confirmations trigger things that cannot: stop the voice, cancel the request, rewrite history. A candidate that never confirms is a misfire, and the agent gets its voice back. That one distinction is most of what makes an interruption feel natural rather than twitchy.
The agent never hears a word you did not say
Fillers are information for the turn manager ("uh" at the end of a sentence means you are not done) and noise for the model. So there are two transcripts: verbatim for the listener, clean for the agent. The clean one is produced by deletion only, and a verifier checks that it is a subsequence of what you said. If a cleanup stage, including an LLM one, ever invents a word, its output is discarded.
History is what was heard, not what was generated
When you interrupt, the agent's last message is cut to the words that actually left the speaker, measured by the sample counter in the playback worklet, and marked as interrupted. The model's next turn starts from the conversation you experienced, not from a paragraph you never heard.
Every claim ships with the script that proves it
Speed, size, parity, accuracy on human-labelled recordings, a browser matrix, and the experiments that failed: all of it is in bench/, and the benchmarks page only states numbers those scripts produced. Two ideas we expected to win, probability smoothing and a 16 ms hop, lost on the data and were removed. We would rather publish a negative result than a slogan.
Why voice activity detection is the future, not the past
It is tempting to think end-to-end speech models will make the detector obsolete. In practice every deployed voice agent still needs to know, at a granularity of tens of milliseconds and with a cost of nothing, whether a human is speaking. That question gates everything downstream: when to transcribe, when to think, when to stop talking, when to listen harder. The more capable the model behind it, the more expensive each false start and each late stop becomes. The detector is the cheapest component and the one with the highest leverage on how the whole system feels.
The open problems are whose voice counts (foreground detection without enrollment), when a pause is a pause (learned endpointing instead of a fixed timer), and how to overlap thinking with listening without wasting tokens. None of those is a bigger model. All of them are a better listener. That is the work on the roadmap.
Who this is for
People who build agents and want them to be usable by voice without becoming audio engineers. You bring any OpenAI-compatible endpoint. Auricle brings the ears, the manners and the numbers.