Drop 008 waits for the full reply, then speaks it. This one splits the reply into sentences as they're generated and speaks the first one immediately — the rest keeps streaming while it talks. Same on-device brain, same $0 per query — just smarter about when to open its mouth. Run both lanes below and watch the gap.
CHECKING ENGINE…on-device · $0/query
Ask the front desk · —
Naive — wait, then speak
— ms to first sound
Generates the full reply, then calls speak() once.
Streamed — speak as it thinks
— ms to first sound
Speaks each sentence the moment it completes.
Honest label: both lanes use the same on-device engine and the same generated words — this measures a real, live timing difference in when speech starts, not a fake speedup. On a Prompt-API-capable Chrome the reply is genuinely streamed token-by-token; elsewhere both lanes replay a timed sample script so the comparison stays honest.
The first half-second is the one that matters.
Nobody notices the last 400ms of a voice reply. Everybody notices the first one — it's the difference between "this thing gets me" and "is it broken?" Streaming the speech is a free win sitting in code most voice demos never bother to write.