Skip to content

Interface: SpeechMessage

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:55

A base64 audio clip pushed to the client to play — the premium tier's spoken TTS ack and the flagship tier's model reply share this one additive message (the streaming-turns notes §4 and the model-tiers notes T2/T3, both in git history). Distinguished from a per-frame ack and a LoweredMessage by its kind. label (when present) is the spoken text, for the widget's speaker line and the trace.

Properties

data

data: string

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:67

Base64-encoded audio bytes.


id

id: string

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:59

A per-thread clip/stream id (ack_N / lint_N), for the client player.


kind

kind: "speech"

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:56


label?

optional label?: string

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:77

The spoken text, when known (the widget shows it; the trace records it).


mime

mime: string

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:65

MIME of the payload. Whole clips (TTS acks): a container (audio/mpeg). Streamed reply chunks: raw audio/pcm;rate=24000seq is present and the client schedules each chunk for gapless playback as it arrives.


seq?

optional seq?: number

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:75

Present ⇒ this is one CHUNK of a streamed reply (0-based, in order, sharing id with its siblings). Absent ⇒ a whole clip, played as before. Streaming playback is the contract for model replies (whole-clip buffering retired 2026-07-19 — it delayed the first audible byte by the entire reply's generation time).


threadId

threadId: string

Defined in: packages/aiui-claude-channel/src/intent-messages.ts:57