Skip to content

[Feature]: Read AI responses aloud via built-in TTS (per-message "read aloud" action) #3964

Description

@JardarIversen

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I am describing a concrete problem or use case, not just a vague idea.

Area

apps/desktop

Use case

Add an optional text-to-speech action that reads the assistant's chat output aloud, on a per-message basis.

Problem

Today there is no way to have T3 Code read its own responses out loud while I'm away from the screen or looking at the code. This makes it harder to concentrate and read output on longer coding sessions.

Related issues:

Neither of these addresses the use case of having the model's content itself read aloud, message by message, on demand.

Proposed solution

A per-message "Read aloud" / "Speak" action on the assistant message UI (next to copy button), with a small set of built-in voices and the option to auto-read new streaming responses.

Two implementation paths, either or both:

  1. Browser SpeechSynthesisUtterance — zero-cost, no model download, works offline, uses the OS-provided voices. Good baseline, available everywhere the UI runs.
  2. Optional cloud TTS (OpenAI, ElevenLabs, etc.) via the same providerhook surface the app already uses — better quality, natural voices, streaming audio. Opt-in, BYO-key.

Suggested shape

  • A 🔊 button on each assistant message bubble
  • Optional setting: "Auto-read streaming assistant responses when complete" (off by default)
  • Optional setting: pick TTS engine (System / OpenAI / ElevenLabs / ...) and voice.
  • Respect streaming boundaries — only enqueue a chunk once it forms a complete sentence / code block boundary so narration stays coherent.
  • Stop/pause controls while speaking.

Open questions

  • Should reading also cover code blocks verbatim, skip them, or summarize ("30-line TS function")? My vote: skip fenced code by default, read prose.
  • Should there be a keyboard shortcut to read the latest assistant message?

Why this matters

  • Hands-free during long turns. While the agent is generating/running, I can keep my eyes on the editor and have the response delivered as audio.
  • Accessibility. Users with low vision, dyslexia, or who simply skim better by ear benefit from spoken output.
  • Outdoing Claude Code and Codex on this. Even though their chats have a "read aloud" control on assistant messages, their coding agents don't.

Smallest useful scope

A single button under each message that read out the message it's under, with a pause function. Smallest useful scope would not need more advanced controls, or model selection.

Alternatives considered

No response

Risks or tradeoffs

No response

Examples or references

No response

Contribution

  • I would be open to helping implement this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementRequested improvement or new capability.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions