Disciplines · Decisions (ADRs)

ADR-0084: Eve governed asynchronous voice depth

Eve already shipped microphone capture, VAD auto-stop, server STT with browser recognition fallback, transcript review in the text composer, opt-in TTS, and captions.

4sections3 minread

On this page
  • Status: accepted for Phase 8 Task 8.7
  • Date: 2026-09-12
  • Owners: Eve Product, Privacy, Accessibility, Web, and Evaluation
  • Scope: customer-web asynchronous voice input and opt-in spoken replies

Context#

Eve already shipped microphone capture, VAD auto-stop, server STT with browser recognition fallback, transcript review in the text composer, opt-in TTS, and captions. Task 8.7 asks for a depth decision based on that path. It expressly forbids rebuilding the microphone/TTS lane and requires evidence for controls, interruption, privacy, accent/noise/empty audio, and text fallback.

The source review found real depth but four consequential seams: starting a new capture did not interrupt current playback, capture/transcription did not state where audio was or when it crossed a provider boundary, an active recorder was not cancelled when the panel unmounted, and recognition forced en-US instead of respecting the browser locale. Low-confidence results also lacked a visible review cue, and the transcript response did not explicitly opt out of caches.

Decision#

Harden and retain the existing asynchronous, review-before-send contract. Decline a live-duplex/realtime redesign for this task.

The admitted contract is:

  1. Start with the shipped server-STT capture and fall back to browser speech recognition only when the server path is unavailable.
  2. Keep microphone state, the on-device-before-stop boundary, and provider or browser transcription state visible in the existing bounded assistant surface.
  3. Put recognized words in the authoritative text composer. Never submit a transcript without member review and an explicit Send.
  4. Respect the browser's preferred locale, warn when the provider reports low confidence, and make empty/error states recover to text without data loss.
  5. Keep voice output opt-in, visibly labelled as synthetic, captioned alongside the written reply, and stoppable. Starting the microphone is also a barge-in gesture that stops active server audio or browser speech before capture.
  6. Cancel recording/recognition on teardown. Do not cache transcript responses; do not log audio or provider response bodies; delete private normalization files on every server exit.

Admission evidence#

The checked-in live measurement calls the shipped OpenRouter microsoft/mai-transcribe-2 binding with four reproducible speech fixtures and one silence fixture, repeated three times each. Every speech sample must be non-empty and inside its per-case word-error budget, every silence sample must stay empty, and nearest-rank p95 across all 15 calls must be at most 5 seconds.

The decision also requires component/route tests, a real Chromium capture and playback journey, fault/recovery coverage, a privacy review, and an eight-part operator rubric. Machine verification binds those results to the current source and observes deliberate red controls before the final green result.

Consequences#

  • Voice remains a reversible input/output aid around the text conversation, not a second conversation protocol.
  • There is no always-listening mode and no automatic transcript submission.
  • Browser synthesis exposes approximate word captions; server TTS exposes the exact written reply as a plain caption because the provider supplies no audio timing contract. Timings are never fabricated.
  • Synthetic accents make the quality probe reproducible but do not establish demographic accent fairness. A consented-human-speech study remains a future product-research responsibility if voice scope expands.
  • Manual assistive-technology interoperability remains Task 8.8. Mobile voice parity remains Task 8.9. Phase 8 and G9 remain open.