Skip to main content
The Text to Speech (TTS) service converts written text into spoken audio. The unified POST /tasks/audio/speech endpoint exposes two models:
  • orpheus-3b-tts (default) — multilingual, multi-speaker. Voices are catalog tags (e.g. salt_lug_0001); list them with GET /tasks/voice/speakers.
  • spark-tts — the six fixed Ugandan voices below; supports streaming on Modal.
Migrating? The legacy /tasks/tts, /tasks/modal/tts, /tasks/runpod/tts, /tasks/modal/orpheus/tts, streaming (/stream, /stream-with-url), Orpheus batch, speaker-listing, and refresh-url endpoints are deprecated. Use the unified /tasks/audio/speech endpoints below.

Single Synthesis (orpheus-3b-tts, default)

Parameters

orpheus-3b-tts: Languages and Voices

Speaker IDs encode both the source corpus (salt_*, waxal_*, slr32_*, slr129_*, bateesa_*) and the language. Languages marked with an em dash are present in the model’s training mix but do not currently expose individual voice IDs in this checkpoint.
Per-language quality scales with the amount of training data collected for that language. Audition the voices before relying on a particular speaker — use the discovery snippet under Listing Voices.

Single Synthesis (spark-tts, fixed voices)

spark-tts Voices

Response Modes

response_mode applies to spark-tts on Modal:
  • url — generate audio, upload to GCP, return a signed URL (valid ~30 minutes) — default
  • stream — stream raw audio chunks directly
  • both — stream audio and return a final signed URL

Listing Voices

Batch Synthesis (orpheus-3b-tts)

Synthesize up to 128 items in a single request:

Refreshing an Expired URL

Signed URLs expire after ~30 minutes. Re-sign a stored object with GET /tasks/audio/speech/url:

Response

The audio_url is a temporary signed URL valid for ~30 minutes. Download or stream the audio promptly, or re-sign it with GET /tasks/audio/speech/url.