Skip to content

Read markdown aloud as plain speech #243

Open

Description

@arthware-dev

Story

As a family member, I want spoken answers to sound like speech, so that the agent never reads out "asterisk asterisk" or a URL.

Context

The speech server (Piper) reads markdown marks aloud. For one sentence the spoken length was: plain 2.0 s, with **bold** 3.9 s (read as "asterisk asterisk"), with a link 4.1 s, with a heading 2.7 s, with emoji 2.7 s. The agent's speaking instructions and the say help line ask for plain sentences, but a model does not always follow them, and a later routine (a morning briefing) will pass longer text.

Proposal

ai say turns its input into speakable text before it is spoken, as a pure function: emphasis marks go, a heading becomes a sentence, list items become sentences, a link becomes its text, a bare URL becomes its domain, inline code keeps its content, emoji go, a table becomes one sentence per row.

Definition of done

  • A module test feeds markdown with each of those elements and expects the plain sentences.
  • Plain text passes through unchanged.
  • On a running instance, ./stack ai say "Good morning. **Three emails** came in." takes as long as the same sentence without the marks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions