Piper · self-hosted

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.

Text in, audio out

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.
4Preset neural voicesPiper · port 8506
2English accentsUS · UK
3Ways to askWhole · stream · timestamps
0Vendors in the middleSelf-hosted
What it does

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 8506
  • Chunked 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 endpoint
  • Word-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 alignment
  • Cloned voices, same endpoint

    A voice cloned from a reference clip is addressed exactly like a preset. There is no separate API to learn.

    GPT-SoVITS
  • WAV 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/wav
  • Self-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
Endpoints

Three ways to ask

Full request and response shapes are in the API reference.

EndpointReturnsUse it when
POST /text-to-speechA complete WAVYou want the whole clip and can wait for it.
POST /text-to-speech/streamChunked audioThe passage is long and playback should start early.
POST /text-to-speech/with-timestampsAudio plus per-word offsetsYou are driving subtitles, or a mouth, off the same clock.
Questions

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.