How it’s built
Under the hood.
How speech, voice and language models fit on a phone, and how each app is tested.
Product tour · 0:48
See them run.
Real screens from each app’s test builds.
Product tour of Vox Amelior, Narrator Studio and Even Suite, 48 seconds, no audio. A transcript is available below the video.
On a phone, the tour opens full screen. Turn your phone sideways.
Read the transcript
0:05 Vox Amelior. Writes down what’s said nearby, learns who is speaking after you name a voice once, and finds what was said by meaning. It runs on the phone.
0:20 Narrator Studio. Any text becomes a podcast with natural on-device voices and chapters. Each build’s sample episode is checked with Whisper.
0:32 Even Suite. Say “Claude” and talk; the answer appears on Even Realities G1 glasses.
01 · Vox Amelior
One phone. One work queue.
Everything heavy runs in one background service with a single work queue, so speech recognition and the language model never compete for the phone’s memory.
-
01
Capture
An always-on service holds the microphone. A speech detector keeps only voice, with adjustable mic boost, sensitivity and sentence pause, and a live level meter.
- Silero VAD
-
02
Queue on disk
Speech is written to a queue on disk before anything else happens, so it survives the service restarting. A chunk that fails is retried once, then set aside instead of lost.
-
03
One job at a time
A single scheduler decides what runs: a question someone is waiting for, then transcription, then background reviews one small step at a time.
-
04
Transcribe and attribute
Each sentence is written down with punctuation, split by speaker, matched to a voiceprint and tagged with its tone of voice.
- Parakeet TDT 0.6B
- Sortformer
- TitaNet
- SenseVoice
-
05
Store and index
Lines land in SQLite with full-text search, grouped into days and conversations. EmbeddingGemma adds compact vectors for search by meaning.
- SQLite FTS5
- EmbeddingGemma
-
06
Answer and act
Gemma 4 reads the lines that search picks for a question and can use tools: search conversations, read a week’s timeline, save notes, set reminders or run automations.
- Gemma 4 · LiteRT-LM
Measured, not guessed
“Test this phone” fills Gemma’s context from 2,048 up to 32,768 tokens and checks it can still repeat a code word. Prompts and review steps are sized from that result.
Search tuned on real scores
Related lines scored 0.44 to 0.62 and unrelated ones up to 0.43, so a fixed cut-off couldn’t separate them. Search keeps lines close to the best match instead.
Tested like a product
400+ automated tests, plus a CI emulator tour that installs the release build, plays synthetic voices into it and drives every screen with the real models.
02 · Narrator Studio
From script to episode.
Text goes through a plan, a cast of voices and a mixer, then plays live or exports as a chaptered M4A. The voices run in a separate worker so the app stays responsive.
- 01ScriptText, Markdown or PDF, cleaned and split into sentences
- 02PlanStyle, speakers, pauses, sound and music cues
- 03VoicesFour on-device engines in a worker isolate
- 04MixOriginal music ducked under speech, 48 kHz
- 05Play or exportRead-along player, M4A with chapters
A model ported by hand
VibeVoice had no phone runtime, so CI converts it to ONNX and I rewrote its inference loop and tokenizer in Dart. The port was checked against the Python reference before it shipped.
Quality checked on every build
CI renders a sample episode with the real voices and Whisper transcribes it: 2.6% word error rate. A separate voice lab scores clarity, and the device CI benchmarks speed.
Ears over metrics
Automatic quality scores ranked some robotic voices highest. After listening tests I put the characters back on the more natural voices and kept the others as an option.
03 · Even Suite
Voice in, answer in view.
The glasses have a microphone, a small green display and a Bluetooth link. The phone does the listening, talks to Claude Code running in Termux, and pages the reply back to the glasses.
- 01Glasses micLC3 audio over Bluetooth, decoded in native code
- 02SpeechAndroid’s recognizer, with a “Claude” wake word and “send”
- 03BridgeAgent Hub in Termux passes it to Claude Code
- 04ReplyMeasured to fit five lines a page
- 05DisplayText sent to both arms of the glasses
Tested without the glasses
87 automated tests run against simulated glasses and a live test bridge, and CI renders every screen at normal and large text before building the release.
Nothing extra installed
Built only on the maker’s open-source demo app: speech, settings and networking come from Android and Dart, with no extra SDKs or API keys.
04 · Earlier work
Vox Server, the prototype.
Before the phone app, I built a self-hosted, multi-user version: FastAPI services behind a gateway, run with Docker. It’s where the queue idea started, as a Redis lock that lets speech and the language model take turns on one GPU. Hover a node to trace its connections.
05 · Read the code
Click a topic. Read the source.
Each topic opens the files that implement it, with an excerpt and a link to the exact file on GitHub.
Vox Amelior Android
Vox Server Prototype
See it running
Engineering is nice. Watch it work.
The product tour shows all three apps with real screens from the builds.