Words in, a voice out
Self-hosted neural synthesis with word-level timings and chunked streaming. The same engine that speaks in a live session.
The line you type is the line you hear
One request carries the text and names the voice. The audio comes back with per-word offsets, so everything downstream can run off one clock.
- One clock for mouth and subtitles. Ask for timings and per-word offsets ride back with the audio — interpolated, so approximate by design.
- Playback before the render finishes. Long passages stream in chunks instead of making you wait for the whole file.
- The voice a session speaks with. The live companion answers through this exact engine.
Anything you type comes back spoken, about a second later.
Anything you type comes back spoken, about a second later.
Synthesis without a metered vendor in the middle
Preset neural voices
US and UK English presets suited to narration, product copy and character work. Pick one per request or bind one to a character permanently.
Piper · port 8506Chunked streaming
Long passages are synthesised in pieces and streamed, so playback can begin before the whole thing is rendered rather than waiting on the full file.
Streaming endpointWord-level timings
Ask for timings and get per-word offsets back with the audio — enough to drive subtitles or a mouth. Alignment is interpolated, so treat it as close rather than exact.
Approximate alignmentCloned voices, same endpoint
A voice cloned from a reference clip is addressed exactly like a preset. There is no separate API to learn.
GPT-SoVITSWAV out, no lock-in
You get an audio file back. Store it, post-process it, ship it — there is no proprietary container and no playback SDK you are required to use.
audio/wavSelf-hosted
Synthesis runs in a container you operate. Your text never reaches a third-party speech vendor, which matters when the text is explicit.
Local container
| Endpoint | Returns | Use it when |
|---|---|---|
| POST /text-to-speech | A complete WAV | You want the whole clip and can wait for it. |
| POST /text-to-speech/stream | Chunked audio | The passage is long and playback should start early. |
| POST /text-to-speech/with-timestamps | Audio plus per-word offsets | You are driving subtitles, or a mouth, off the same clock. |
Before you wire it up
Are the word timestamps frame-exact?
No, and the API does not pretend otherwise. Alignment is interpolated rather than forced, so the offsets are close — good enough for subtitles and lip-sync, not for forensic audio work. Treat them as approximate in your own UI too.
Can I use a cloned voice?
Yes. A voice cloned from a reference clip is addressed exactly like a preset — same endpoint, same parameters. See voice cloning for how a clone is made.
Which voices are available?
Four neural presets in US and UK English, listed with their identifiers in the voice library, plus any voice you clone.
Can playback start before synthesis finishes?
Yes — the stream endpoint synthesises long passages in chunks, so audio starts arriving before the whole passage is rendered.
How is synthesis billed?
Against your plan’s API allowance — 5,000 calls on Free, 50,000 on Pro, unlimited on Enterprise — rather than metered per character by a vendor. Limits are on the pricing page.
Hear it first
The demo on the homepage runs this exact engine on your own words.