Speaker

How it works

Six steps, and one of them is the product.

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.

  1. 01

    Your text is checked before anything is charged

    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.

  2. 02

    Pronunciations are applied to the text

    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.

  3. 03

    An engine is chosen, and the next one takes over if it refuses

    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.

  4. 04

    Word timings are derived, one of two ways

    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.

  5. 05

    The audio is stored privately and handed back signed

    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.

  6. 06

    You are billed for what was spoken

    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

Characters in, words out.

what an aligning engine returns
H0
i0.1
0.2
t0.3
h0.4
e0.5
r0.6
e0.7
group on whitespace
what you get
Hi0200 ms
there300800 ms

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

Say the name properly, keep your spelling.

you write

Ounie

The spelling your brand actually uses.

the engine reads

Oonie

A plain respelling, applied before synthesis. Not a phoneme dictionary, and nothing is stored.

the timing says

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

Three, and only three.

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.

Fast

10 cr / 1k

Lowest latency. The right default for anything an agent speaks in a loop.

fast

32 languages

Balanced

10 cr / 1k

A little more expressive than Fast, at the same price.

balanced

32 languages

Rich

20 cr / 1k

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.

When something goes wrong

An engine is unavailable
The next engine in the chain takes the call inside the same request, and you see only that it was served. If every engine is refusing you get an immediate 503 and nothing is charged — no hold, no quote, no signature requested. A scheduled probe watches each engine independently, so no user's request pays to discover an outage, and recovery needs no deploy.
Audio came back, timings did not
Zero credits settled, full refund, and on the keyless rail the payment is refused before it settles. You still get the audio and are told plainly that the timings are missing. Three different faults land here — no alignment, a failed transcription, or a transcript that covered too little of your text to trust — and none of them is yours, so none of them is billed.
You are out of credits
A 402 with the exact shortfall and a link to top up, before any work runs. A key can never overdraw — the hold is taken first, or the call does not happen.
Your text is over 5,000 characters
Refused at the door, free, with the count you sent. The limit is checked after pronunciation respelling too, because respelling can make text longer and the engine bills what it reads.