A small model trained for one job: a wake word
For my own voice assistant I needed a wake word that runs locally, all day, on a phone. Not a job for a large model: a small model trained on recordings of that one phrase, evaluated against the mistakes that matter.
On deviceno audio leaves the phone
Small modeltrained for one phrase
Evaluation setdecides every retrain
The situation
An assistant that listens for its name has to run always on, offline, cheap, and must not wake up at the wrong word. Sending audio to a cloud model all day is neither private nor affordable.
The approach
- Recordings of the wake phrase and of everything it must ignore, in different voices, rooms and noise.
- A small model trained for that one job, exported for the phone.
- An evaluation set with the two mistakes that matter: missing the word, and waking on the wrong one. Every retrain is measured against it before it ships.
- Android integration in Kotlin, the heavy work handed to a larger model only after the wake word.
The result
- Always-on listening on the device, with no audio leaving it.
- Model choice by job: small and local for listening, large and hosted for understanding.
- A pattern that applies to any narrow, high-volume task: classification, routing, extraction.
Technology
Python, PyTorch, Kotlin, Android, Claude for the understanding step.
More case studies: Phalcon to Laravel, module by module · An API that AI assistants can use: Laravel, Android and an MCP server · A one-person company run by agents ·