← Technologist

Saris · Speak For Me

Tap a card and it speaks, in a voice that feels like hers

Where
Independent
When
2026
Tags
ElevenLabs API · Voice Design · Gemini API · Accessibility · PWA
Saris · Speak For Me · Tap a card and it speaks, in a voice that feels like hers
Sara and me.

Why I built it

My cousin Sara has a cognitive disability that keeps her from speaking. Most voice apps are hard to use and not nice to look at.

I watched how she uses YouTube: big pictures, one tap and it plays. So I made Saris simple and beautiful, closer to a game than a tool, so she'd want to use it.

If it feels like a game, she'll actually use it.

What it does

The app on a phone, in English: tapping cards on the board, then adding a new phrase with a tone of voice and previewing it before saving.

Sara gets the board and a Type tab. A caregiver gets a composer on the same device. The product rules came first and everything else had to fit them:

  • Tap = speak. No confirmations and no detail pages on the speaker's side.
  • Image + label, always. The picture is a memory anchor; the label removes the ambiguity.
  • One voice, one identity. The same voice speaks every phrase, in both languages.
  • Nothing to sign up for. Opening the link means it works.
  • Accessible first. Tap targets of 48 px and up, AA contrast, no hover-only actions and no double taps.

The system

  1. 01

    Type or dictate

    The caregiver inputs the phrase: typed, or dictated like a voice note.

    ElevenLabs Scribe
  2. 02

    Structure

    The transcript becomes phrases: Spanish and English text, a category, an emoji and an image prompt, returned through a forced tool call so the shape is always the same. There is always a review step before saving.

    Gemini
  3. 03

    Paint the card

    The card shows up right away with its emoji and category colour, and the illustration replaces it when it lands.

    Gemini image → WebP
  4. 04

    Pick a tone

    A row of faces (normal, happy, calm, serious, sad, annoyed). Each one maps to an audio tag, and the toned audio is made when the card is saved, so the first tap is still instant.

    Eleven v3 audio tags
  5. 05

    Tap = speak

    Anything typed or tapped is spoken at runtime. The built-in phrases ship with pre-generated audio and are cached for offline use, and the attention key plays a chime before Sara speaks.

    Flash v2.5 · Sound Effects
All the audio goes through ElevenLabs; Gemini never touches sound. It only turns an idea into structured text and paints the picture. Splitting it by job kept each provider doing what it's best at, and kept the latency-sensitive part (a tap becoming speech) on the fastest model.

The voice

The default voice, Saris B, was made with Voice Design: described in words, not cloned from anyone. It speaks Spanish and English and works on the free API plan. If a paid voice is picked and the API answers 402, the app falls back to Saris B instead of going silent, because an AAC app that stops talking is a broken app.

Card art

Every built-in card has an illustration in one soft, hand-drawn style, so the board reads as one set and a picture can be recognized before the label is read.

Twelve of the built-in cards.

Guardrails

  • Every paid endpoint is protected: an allowlist of voices, length caps on input and a per-IP rate limit, so a public link can't burn the credits.
  • API keys live only on the server, in Vercel environment variables.
  • No login and no database. Custom phrases live in the device's IndexedDB and settings in local storage, with a JSON export for backup.

How I like to work

Understand the problem, build it with the tools, and show it working. Saris went from idea to a live app in under a week, and it's open for anyone to try.