Voice activation
Step diagram
User opts into voice in Settings
UserMaster switch defaults OFF. Enabling it surfaces the secondary toggles (talk mode, hot word, debug record).
App requests mic permission
AppPlatform permission dialog. Denied means the toggles flip back OFF; revisit Settings to retry.
User says the wake word
User"Hey Koder" or the configured hot phrase. Pre-wake ring buffer is strictly local — never leaves the device.
SDK detects the wake
SDKopenWakeWord (default) or Porcupine (fallback) flips the audio capture into talk mode.
App enters talk mode
AppVisual chrome flips to the talk-mode state; mic stays open until idle timeout or barge-in stops it.
User says "never mind"
UserApp leaves talk mode; mic returns to the wake-word standby buffer.
Common pitfalls
- Streaming the pre-wake buffer to the server — violates the privacy contract; the buffer must be local-only.
- Default-on talk mode — surprises the user, drains battery, breaks the consent posture.
- Shipping debugRecord enabled in a non-dev build — captures real audio without explicit opt-in.