Text to speech that keeps up with a phone call
A streaming voice API for agents and apps. Audio starts in about 250 ms and costs from $4 per million characters.
92/200 characters. One voice, English.
Two engines, one API
Choose per request with engine when you authorize. The protocol is identical, so switching is one field.
| ReadAloud Live | ReadAloud Studio | |
|---|---|---|
| Built for | Live calls and voice agents | The most natural read-aloud |
| Price | $0.004 per 1,000 characters | $0.01 per 1,000 characters |
| Voices | One American English voice | Multiple English voices |
| Limits | 5,000 characters per request. Limited capacity, so retry when you get an “at capacity” error. | See the docs |
How we compare with ElevenLabs
| Service | Time to first audio (warm) | Price per 1M characters |
|---|---|---|
| ReadAloud Live | about 250 ms | $4 |
| ElevenLabs Flash v2.5 | about 170 ms | $40 |
| ElevenLabs Multilingual v2 | about 1.04 s | $80 |
Measured October 2026 from one machine in San Jose, interleaved over several minutes, in the same hour, on short call-center sentences, as time to the first audio byte on a warm streaming connection. ElevenLabs advertises 75 ms for Flash; that is model latency, while these figures are end to end, including the network. ElevenLabs Flash is about 80 ms faster than ReadAloud Live at the median (two runs of 40 requests each, 2026-10-10); ReadAloud Live costs a tenth as much. Results vary by location and time of day. ElevenLabs prices are its published API list prices as of 2026-09; the latency and quality figures are from our own runs. Voice quality is subjective, and ElevenLabs offers far more voices and languages. We can share the benchmark scripts and raw results on request.
What you get for the price
| Engine | Word error rate | Naturalness (proxy) | Price per 1M characters |
|---|---|---|---|
| ReadAloud Live | 10.4% | 4.44 / 5 | $4 |
| ReadAloud Studio | 5.8% (English only) | 4.25 / 5 | $10 |
| ElevenLabs Flash v2.5 | 6.2% | 4.52 / 5 | $40 |
| ElevenLabs Multilingual v2 | 4.3% | 4.46 / 5 | $80 |
Word error rate: 21 short call-center sentences across English, Spanish, German and French, transcribed with an open-source speech recognizer and compared to the known input text — lower is better. Naturalness: an automated MOS predictor scored against a shared reference clip per language, not a human listener — useful for comparing engines to each other, not as an absolute quality score. On this sample, ReadAloud Live’s error rate runs a bit higher than ElevenLabs’ and naturalness is essentially tied. We don’t publish side-by-side audio samples; the sample size here (21 sentences) is small enough that we’d rather you listen to ReadAloud Live on your own text and judge for yourself. We re-run this evaluation after any engine change. Full methodology, the per-language breakdown and the caveats are available on request.
From key to audio in three calls
No SDK required. Audio arrives as raw PCM you can pipe to a phone line or a speaker.
- 1Authorize
Trade your API key for a token that lasts 60 seconds. Your key never reaches the browser or the voice server.
- 2Connect
Open a WebSocket to the URL you were given. Keep it open across turns of a call.
- 3Synthesize
Send text, receive 24 kHz mono PCM as each sentence finishes, and send stop if the caller interrupts.
// 1. Get a short-lived token (valid 60 s). engine: "live" or "studio".
const { token, url } = await fetch("https://api.readaloudai.org/tts/authorize", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ key: "YOUR_API_KEY", engine: "live" }),
}).then((r) => r.json())
// 2. Connect straight to the voice server.
const ws = new WebSocket(`${url}?token=${token}`)
ws.binaryType = "arraybuffer"
// 3. Ask for speech. Audio starts arriving as the first sentence is ready.
ws.onopen = () => ws.send(JSON.stringify({
type: "synthesize", text: "Thanks for calling. How can I help?", voice: "default", speed: 1.0,
}))
ws.onmessage = (e) => {
if (typeof e.data === "string") {
const msg = JSON.parse(e.data) // chunk_meta | done | cancelled | error
if (msg.type === "done") console.log("finished")
} else {
play(e.data) // PCM16 little-endian, mono, 24 kHz
}
}
// Caller interrupts? Stop mid-sentence:
// ws.send(JSON.stringify({ type: "stop" }))Your own voice, on the same API
Give us about 20 minutes of clean recordings from someone who has agreed to it, and we train a voice for you and host it beside the built-in ones.
- The speaker’s consent is recorded before anything is trained, and you can delete the voice and its training data at any time.
- You hear five preview samples, and can type your own text, before anything goes live.
- Once live, use it by sending
voice: "custom:<id>". Only your API keys can use it. - Works best with steady, clear speech. Very theatrical delivery can sound unstable, and we warn you when we detect it.
Early access. Email us to get started.
Pay for what you stream
Billed per character of speech that finishes. Cancelled requests are not billed.
Free
- 10,000 characters to try it
- No card required
- Both engines
ReadAloud Live
- About 250 ms to first audio
- Built for live calls
- No minimums, no plan to manage
ReadAloud Studio
- The most natural read-aloud
- Multiple voices
- Same API and keys
Speech to text, too
Upload a recording, get a transcript with word timestamps. ReadAloud speech to text, the same key, $0.11 per hour of audio.
| Batch speech to text | Price per hour of audio |
|---|---|
| ReadAloud | $0.11 |
| ElevenLabs Scribe (API list price, as of 2026-10) | $0.22 |
Cold start: the first request after a quiet period takes about 10 seconds while our GPU starts. After that, a short clip typically comes back in about a second (our own measurement, October 2026, from one machine). Billed by the second of audio, 10 second minimum per request; failed requests are not billed.
- That is half of ElevenLabs Scribe’s batch API list price (its realtime price is $0.39 per hour). This page makes no accuracy or speed comparison with other vendors.
- On 296 real 8 kHz phone-style recordings (English, role-played calls) the word error rate was 9.8% and 90.2% of spoken digit sequences came out exactly right. With 10 dB background noise added it was 17.8% and 84.6%, so noisy lines are our weaker case. One test set, so test on your own audio. How we measured.
- Batch only for now: no live transcription or entity detection. Speaker labels (
diarize=true) are available: 99.0% of words went to the right side on 78 real two-person calls, but the speaker count was exactly right on only 67% of them. - Accepts wav, flac, mp3, ogg, m4a and raw mu-law or A-law phone audio. Up to 200 MB or 3 hours per file.
Questions
Which languages does it speak?
English today. More languages are on the roadmap, and we would rather say so plainly than list languages we cannot yet do well.
How many calls can it handle at once?
Each ReadAloud Live server handles up to 12 simultaneous streams, and a second server starts automatically under load. Beyond that, new connections get an “at capacity” error and should retry shortly. If you need guaranteed capacity, email us.
Why is it so much cheaper than ElevenLabs?
ReadAloud Live is a small model that runs on ordinary CPUs, so we do not pay for an always-on GPU. The trade-off is fewer voices and a less expressive read than the largest models.
Can I hear how it compares before I commit?
Yes. Type your own text into the demo above, then use your free 10,000 characters to test it in your own app.
Also: ReadAloud AI Reader
Listen to articles, PDFs and emails on your phone or in the browser.