Skip to content

Text-to-speech for AI voice agents.Unlimited minutes, one flat rate.

Drops into the voice stack you already run

LiveKitPipecatVapiRetellTwilioTelnyxVonageDailyDeepgramWhisperLiveKitPipecatVapiRetellTwilioTelnyxVonageDailyDeepgramWhisper

p95, single stream

108ms

one millisecond above the median

Languages from one cloned voice

23

identity survives translation

Reference audio to a working clone

10s

no training job, no per-voice fee

Added cost when your volume doubles

$0

lines × rate, whatever the volume

00 · The console

Type a line. Hear it back.

Fig. 0 — Gandr console

the demo call runs this live

langEnglishvoiceJenny
271/500

01 · The engine

every clip below · production API

The engine, played back.

Six cards, no mockups. The audio, the turn timing, and the languages are real production output — the same the demo call runs on.

02 · Latency

Production API · call-shaped load

Measured, not marketed.

The deadline

Inside the human handoff

Humans hand a conversation back inside ~200 milliseconds; past a second, callers talk over the agent or hang up. First audio lands at 107 ms — and every figure in this panel is server time to first audio on the production API, percentile attached.

human handoff · ~200 ms
Spex-TTS first audio · 107 ms
callers interrupt

Single stream

107 ms to first audio

107 ms at the 50th percentile, 108 ms at the 95th. One millisecond apart, which is the shape a latency curve has when nothing is hiding in the tail.

Single stream: 107 ms median, 108 ms at the 95th percentile.
107 p50 · 108 p95

Past capacity

A busy signal, not a stall.

The API refuses fast: a retryable busy signal instead of a hang. Clients retry in milliseconds, the fleet scales up within seconds, and the call survives.

503 at_capacity · retryable

Collections · payment reminder

Sam · Dane

Agent · Leo

Sam · Dane

Recovery calls that keep the customer

The exchange

Both sides of a live call.

Two stock voices on one wire — every turn rendered on the production API and stamped with its date.

Sit in on three calls

Fig. 2 — time to first audio

SourceGandr engineering · p50/p95 server time to first audio · production API

ms · 0–1000

03 · The build

One request shape. No meter behind it.

Explore the docs

the request

Everything is a field on one POST.

Voice, language, delivery — one JSON body carries the whole read. The same shape streams over SSE and WebSocket; only the path changes.

<break/>
a timed pause — the line just holds
<spell>
read character by character
emotion
names the read — tuned presets under the hood

Listing 1 — POST /v1/tts/bytes — the request behind the player below


cap 2,000 characters · auth x-api-key or Bearer · usage per key at GET /v1/usage

the stream

The same request, played.

The paragraph is the transcript from Listing 1, controls inline. Pick the language, the voice, and the emotion — the audio renders on the production API when you press play.

the clock

the player below re-measures this figure on every take

Your appointment moved to Thursday at ten. <break time="600ms"/> The confirmation code is <spell>KH4T29</spell>. <break time="800ms"/> Take your time — I’ll hold the line while you write it down.

langEnglishvoiceJennyemotioncalm

the cost

Nothing above is metered — not the characters, not the minutes, not the retakes. The bill is lines × rate, one number that holds still while your volume moves.

The whole price list

04 · Book the call

Bring your script.

Table 3 — the 30 minutes, itemized

00–05

Your stack

Where TTS sits, who bills you, your volume.

05–20

Your script, live

Your production prompts in a cloned voice, latency readout running.

20–30

The arithmetic

Your volume on flat lines, and a 20-line pilot plan.

Bring

  • Production prompts
  • Current TTS invoice
  • Ten seconds of your voice, to hear it cloned

You leave with — The recording, a one-page pilot plan — worst case, leverage on your current vendor.

Calendar broken?

contact@gandr.ai

Fig. 5 — 30 minutes · live synthesis of your script