100 KB wake-word: what breaks when you shrink that far
One question kept coming back in our engineering standups: getting a wake-word model to ~100 KB is technically possible, but which trade-offs are you willing to accept?
Wake-word models normally sit at 500 KB to 5 MB. Getting to ~100 KB required accepting three specific trade-offs that we underestimated going in.
Vocabulary is tight. A 100 KB model can hold one wake-phrase well. It cannot generalize to arbitrary phrases the way a bigger model can. If you want the phrase to change per user, or if you want it to work in multiple languages, 100 KB starts to hurt.
There is a floor on overlapping-speech handling. We can filter typical background noise (TV, kitchen, traffic) but heavy overlapping close-talker speech is a harder problem at this size. Bigger models absorb that better.
Custom-phrase training gets harder as size drops. Adapting a small model to a brand-new phrase requires more careful data than adapting a larger one. A 500 KB custom model is easier to work with than a 100 KB one.
The reason we accepted these trade-offs: shipping on browser WASM and on cheap edge hardware was the goal. Anything larger than 100 KB makes browser possible but painful.
Curious for others who have shipped small ML models on edge: what constraints did you accept that you did not see coming?

Replies