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.

  1. 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
  2. 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.

  3. 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.

  4. 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
  5. 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
  6. 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.

  1. 01ScriptText, Markdown or PDF, cleaned and split into sentences
  2. 02PlanStyle, speakers, pauses, sound and music cues
  3. 03VoicesFour on-device engines in a worker isolate
  4. 04MixOriginal music ducked under speech, 48 kHz
  5. 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.

  1. 01Glasses micLC3 audio over Bluetooth, decoded in native code
  2. 02SpeechAndroid’s recognizer, with a “Claude” wake word and “send”
  3. 03BridgeAgent Hub in Termux passes it to Claude Code
  4. 04ReplyMeasured to fit five lines a page
  5. 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.

Clients
Web appBrowser
Flutter appPhone
Gateway
NGINXTLS
API gatewaySign-in, routing
Services
TranscriptionSpeech to text
AssistantGemma LLM
MemorySearch, RAG
EmotionTone
Infra
GPU queueTakes turns
RedisLocks, cache
PostgreSQLStorage
Requests come in through NGINX and the gateway. The transcription and assistant services ask the GPU queue for a turn before they run, so they never load the GPU at the same time.

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.