Where it started
A voice toy needs to manage network dependence and call costs while giving a clear response when services are unavailable.
My contribution
I explored a local-first A/B framework connecting matching, real recorded answers, server-side admission and budget reservation, and rotating local fallbacks.
Choosing a route includes knowing when to pause it.
Three engineering decisions
Make the local path useful first
Match known questions and read real prerecorded audio, with no network or paid model calls by default.
Keep cloud admission explicit
Check local messages and admission conditions before simulated cloud answers. Simulation is not presented as a complete cloud experience.
Read verification in chronological order
Keep v0.1 and v0.2 states separate; later ES8311/PCM playback work does not establish that every feature existed earlier.
What came out of it
- The historical framework includes local matching, recorded answers, a simulated cloud branch and local fallback.
- A later version added dedicated-board ES8311/PCM audio adaptation; microphone recognition was not connected.
- This historical route was paused for the exhibition mainline and is not conflated with later on-device research.
Historical experiment; offline by default; no complete on-device ASR / LLM / TTS claim
What's next
Carry verified playback and routing lessons into new interaction experiments, following actual test results.
Project notes are grounded in reviewed source, experiment records and personal confirmations.
Content reviewed: 2026.10.28