AddThisFeature

Live Captions

Show captions during a live call or stream, close enough to real time to follow.

involved Accessibility & Internationalization

What it adds

A real-time caption track over live audio, with interim text that settles as recognition corrects itself and a saved transcript at the end.

What your agent is told to do

5
  1. 1

    Stream audio to recognition continuously and render text as it arrives, in two visual tiers: settled text that will not change, and interim text that still might.

  2. 2

    Set an explicit latency budget and hold to it. If recognition falls behind, discard the oldest pending audio and carry on rather than showing captions that lag the speaker by half a minute.

  3. 3

    Give viewers control over caption size, position, background opacity, and contrast, and persist that choice using the app's existing per-user preference storage.

  4. 4

    When the session ends, write the settled text to the app's existing transcript record so the recording and the transcript stay together. Do not create a separate captions-only artefact.

  5. 5

    Do not present live captions as an accessibility guarantee. State that they are automatic and may be wrong, and keep any existing path to a human captioner or a corrected transcript.

Edge cases it handles

8
  • End-to-end latency must be bounded. When recognition or the network cannot keep pace, drop the backlog and resume at the live edge, because captions that are minutes behind are worse than a visible gap.
  • Interim text will be rewritten as recognition revises it. Replace the interim tier in place so words settle smoothly, rather than deleting and reprinting whole lines in a way that makes the caption area flicker.
  • The caption connection will drop on a network blip. Reconnect automatically, resume at the current live position rather than replaying, and show the viewer that captions are reconnecting instead of leaving a frozen last line.
  • Viewers need size, position, and contrast controls, because default captions land over faces, slides, or the stream's own lower third for someone on a small screen.
  • When the stream ends, the accumulated settled text must be saved as a transcript, including for a session that ended by disconnection rather than a clean stop.
  • Captions must not cover the player controls or any on-screen text the stream is presenting, and must reflow rather than overflow when the window is narrow.
  • Silence, music, and background noise must produce nothing at all rather than hallucinated words. An empty caption area is honest; invented text is not.
  • A live stream may be public. Apply the app's existing content moderation to what is displayed, and give the host a way to turn captions off mid-session.

Definition of done

9
  • Captions appear during a live session within a stated latency budget.
  • Interim text is visually distinct from settled text and is revised in place.
  • A dropped caption connection reconnects at the live edge and shows its state to the viewer.
  • Viewers can change caption size, position, and contrast, and the choice persists.
  • The settled text is saved to the existing transcript record when the session ends, including on an unclean end.
  • Captions never obscure player controls and reflow on narrow screens.
  • Silence produces no caption text.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.