SpeakTrue

Quick Speak Accessibility Mode Plan

Status

Proposed native-first implementation plan for fast, accessible typed or prepared speech on iOS and Android.

Product Thesis

When speech is time-sensitive, the user should not have to navigate the full TTS studio, choose technical generation settings, wait without feedback, or lose the ability to communicate when the network fails. Quick Speak should optimize the path from intent to audible speech while preserving an obvious route to the full studio.

User Outcome

A user can open Quick Speak, type or select a pinned phrase, and activate one large Speak control. SpeakTrue uses the selected cloud voice when available and a clearly labeled platform voice fallback when cloud generation is unavailable or the user chooses offline mode.

Principles

Scope

MVP

Later

Non-Goals

UX Contract

Default screen

Playback states

Accessibility behavior

Speech Routing

  1. If the user explicitly chooses Device Voice, synthesize locally.
  2. Otherwise, if a valid cached cloud artifact exists for the exact phrase/voice/settings identity, play it.
  3. Otherwise, attempt the existing protected tts-generate path.
  4. On offline/auth/provider failure, offer or automatically use Device Voice according to the user’s saved fallback preference.
  5. Label the active voice source and record only content-free result/fallback metadata.

Do not upload or save locally synthesized audio to Soundboard automatically. Save generated audio remains a cloud-artifact action with the existing canonical artifact contract.

Phrase Persistence

Local MVP

Authenticated sync

Add quick_speak_phrases only after the local interaction is validated:

Field Type Notes
id uuid Stable shortcut/sync identity
user_id uuid Owner
text text Bounded; never emitted to telemetry
locale_code text nullable Device/cloud voice hint
sort_order integer User ordering
is_pinned boolean Synced pin state
preferred_voice_id text nullable Cloud voice preference, not a provider key
linked_clip_id uuid nullable Optional saved cloud artifact
timestamps timestamptz UTC

Use RLS for owner CRUD, a maximum phrase count, idempotent upsert, and conflict rules based on updated_at plus a client mutation ID. Local-only users never need this table.

Shortcut Contract

Platform references:

File Ownership Map

Shared backend

iOS

Android

Vertical Slices

Verification

Automated

Manual device matrix

Acceptance Gate

Rollback

Disable Quick Speak UI, fallback, and shortcuts through separate flags. Leave local phrase data intact for re-enable. Keep synced phrase schema additive and readable; do not delete user phrases during feature rollback. Existing TTS generation and Soundboard contracts remain the fallback product path.

Open Decisions

  1. Whether Quick Speak is a top-level tab, home action, or both.
  2. Whether pinned phrase taps speak immediately after explicit opt-in.
  3. Whether synced phrases are enabled by default for signed-in users.
  4. Local recent-phrase retention count and clear-on-sign-out behavior.
  5. Whether a web Quick Speak surface enters this 90-day scope.
  6. Whether OS Personal Voice integration is technically and policy-feasible in a later plan.