An always-on mobile wake-word detector ("Hey Siri", "OK Google") never runs full speech recognition continuously — that would drain the battery in minutes. Instead a tiny always-on DSP scores every short audio frame against a stored keyword template using normalized cross-correlation (a matched filter):
score(t) = (x(t) · template) / (‖x(t)‖ · ‖template‖), 0 ≤ score ≤ 1
trigger = score(t) ≥ threshold → wake full ASR / cloud pipeline
Each bar on the ribbon is one analysis frame; its height is the live score. Blue-tinted frames fall inside an actual spoken keyword. A bar turns green when the score legitimately crosses the threshold during the word (true accept) and the device wakes up ASR for a fixed burst; it turns red when noise alone pushes the score over threshold outside any word (false accept — the classic "phantom wake-up"). An amber flash marks a spoken word whose peak score never reached the threshold (false reject — the phone ignored you).
To save even more power, many chips duty-cycle the microphone itself, sampling only a fraction of the time. A word spoken while the detector is asleep (dim gray bars) cannot be caught, which raises the false-reject rate as duty cycle drops.
Average power is a simple two-state energy model — cheap always-on listening most of the time, an expensive burst only when triggered:
P_avg = duty · P_listen + (triggers / T) · E_burst
P_listen ≈ 1.2 mW (on-device keyword DSP)
E_burst ≈ 450 mW for ~1.5 s (full ASR wake + decode)
Threshold trades false accepts against false rejects — lower it and noise starts triggering the pipeline; raise it and real words get missed. Noise raises the babble floor the matched filter sits on. Wake-word rate sets how often the keyword is actually spoken. Duty cycle is the always-on vs. power trade-off at the heart of every "Hey Siri" / "OK Google" chip design.