How it works
Step four is why Speaker exists. Everything either side of it is plumbing that ought to be boring — so it is written down here in full, including the parts where it refuses.
The quality rung, the voice, the language and the length are all validated from the request alone. A rung that is not offered, a voice the active engine does not have, a language it does not speak, or text over the limit is refused immediately — no credits held, and on the keyless rail no price quoted. Refusing before quoting is the whole point: nobody should sign a payment for a call that cannot succeed.
If you sent a map, each term is swapped for its respelling before the text reaches the engine. It is a textual substitution, not a phoneme dictionary — and it is what gets billed, because it is what the engine reads.
Speaker runs a chain of speech engines, each with its own account and its own circuit breaker. The first healthy one that has your voice and can produce your format takes the call; if it refuses, the next one does, inside the same request. Which one served you is in the response, because voices are engine-specific and are never silently swapped. The price is not: it depends on the quality rung and the character count, and never on which engine ran.
One engine returns a character-level alignment — three parallel arrays of characters, starts and ends — and words are a reduction over it: group on whitespace, take the first character's start and the last one's end. The others return audio and nothing else, so Speaker transcribes the audio it just made and aligns the transcript's word boundaries back onto your text. Transcribers mishear names, so the transcript is only ever allowed to supply the clock; the words returned are always the ones you wrote, punctuation and all. Every response says which path it took, and any word the transcriber did not hear is interpolated and flagged.
The file goes to private storage under your account, and every download is a signature minted for that request. There is no public URL, so a link that leaks does not stay useful — and re-downloading it later, as often as you like, costs nothing.
Credits are held on the characters you submitted and settled on the characters actually spoken, never above the hold. A run that comes back without usable word timings settles at zero and refunds in full — on the keyless rail, where no refund exists, it is refused before the payment is settled.
Step four, drawn
A word takes its first character's start and its last character's end. Whitespace ends a word and belongs to none. Punctuation stays attached, so a token is usable as a caption exactly as it arrives.
Step two, drawn
Ounie
The spelling your brand actually uses.
Oonie
A plain respelling, applied before synthesis. Not a phoneme dictionary, and nothing is stored.
Ounie
Your spelling, back where it belongs — the captions are publishable as they arrive.
A respelling has to be a single word. Two tokens where you wrote one would put the timings out of step with your script, so that request is refused up front rather than answered with something quietly wrong.
The engines
The upstream engine exposes more models than this. These are the three whose price we can state exactly and whose timestamp behaviour we can stand behind — the rest are absent from the API, the docs and this page rather than present and unreliable.
Lowest latency. The right default for anything an agent speaks in a loop.
fast
32 languages
A little more expressive than Fast, at the same price.
balanced
32 languages
The most natural delivery. Costs the engine twice as much, so it costs you twice as much.
rich
29 languages
Rich costs twice as much because it costs us twice as much.
Every engine in the chain charges roughly double for its best model over its standard one, and each maps the Rich rung onto that model. That ratio is the only reason 20 is not 10 — the margin is the same on both.
Price follows the rung you ask for, never the engine that serves it. That is not a simplification: on the keyless rail the payer signs for the quoted amount before the work, and settling for less is refused after it — so a price that could move with a failover would be a price we could not collect.