TTS · streaming

Text-to-speech, streamed.

A fine-tuned Shona voice, delivered either as a finished WAV or as raw PCM over a WebSocket with barge-in — so an agent can stop mid-sentence when the caller speaks.

tts · speaklive
Mhoro, ndinonzi Natasha.
sn-ZW1.0× speedwav
POST/api/enterprise/v1/tts/speak
24 kHz
PCM out, mono int16
5000
characters per call
barge-in
clear mid-sentence
600s
max per synthesis
request parameters
textstring, 1 – 5000
voiceid, default "natasha"
max_duration_seconds1 – 600
encodingpcm_s16le | mulaw
NATURAL

A voice tuned for one accent, not forty

TeeVoice Speak runs a fine-tuned checkpoint rather than a general multi-voice model — Natasha, a Shona female voice, is the production default.

Fine-tuned checkpoint
Consistent across turns
pcm_s16le or mulaw
Natasha
GET /tts/voices → 1 entry
id"natasha"
language"sn"
description"Shona female"
POST /tts/speak
{ "text": "Mhoro, ndinonzi Natasha." }
duration_seconds5.723exact
sample_rate24000Hz
billed_seconds6rounded up
Quota counts audio produced, not requests — so a call cut short bills only for what was spoken.
CAPABILITIES

Everything Text-to-Speech API does

Streaming synthesis

Audio frames arrive as they are produced, so playback starts before the sentence is finished.

Barge-in

One clear frame drops buffered and in-flight audio, so the agent stops the moment the caller speaks.

Stored or streamed

The synchronous route returns a finished WAV on a CDN URL; the socket returns raw frames and stores nothing.

Billed on output

Quota counts seconds of audio actually produced — cut a call short and you pay for what was spoken.

WS /ws/ttsone session
0.00
{"type":"text","text":"Your balance is …"}
0.04
audio frames — raw PCM @ 24 kHz
1.21
caller starts speaking
1.21
{"type":"clear"}
1.22
buffered text and in-flight audio dropped
1.26
{"type":"text","text":"Go ahead — I'm listening."}
Five hundredths of a second between the caller speaking and the agent stopping. Without clear, it talks over them until the buffer drains.
REALTIME

Built to be interrupted

Drive the socket with text, flush, clear and end frames. Unknown frame types are ignored rather than fatal, so a forward-compatible client cannot kill its own stream.

text / flush / clear / end
Raw PCM, no framing
Nothing archived

Ready to answer every conversation?

Tell us what you're building and we'll scope it with you.