Voices
Where a voice comes from: built-in presets, a written description, or a cloned speaker.
Overview
Choose a voice in one of three ways: pass a preset id, send a reference clip to clone, or describe the voice you want. Presets and cloning differ only in the fields you send. Voice design requires its own model id.
| Send | Model | Voice source | Guide |
|---|---|---|---|
voice | chorus | One of 56 built-in speakers | Voice presets |
ref_audio and ref_text | chorus-clone | A specific real speaker | Voice cloning |
instructions with no voice | chorus-design | A voice synthesized from your description | Voice design |
chorus is an alias for the preset and cloning models and does not reach voice
design. Use chorus-design instead: an instructions-only request sent to
chorus synthesizes the cloning model's default speaker, and no error tells you
design never ran.
Choose a voice source
Start with a preset. It is the most consistent of the three, because the speaker is fixed rather than generated per request.
Use design when no preset fits the character you want. A designed voice belongs to no real person, so there is no consent question to answer. It is synthesized fresh per request, so the same description varies between runs.
Use cloning only when the voice has to be a particular person's. You need that person's audio and their permission. Nothing is created up front; the reference clip travels in every request you make.
List voices
GET /v1/audio/voices requires a model query parameter and needs no API key.
Omitting model returns 400, and a model id that does not exist returns 404.
curl "https://api.sprag.ai/v1/audio/voices?model=chorus"The response is the OpenAI voice-list envelope: an object of list, a data
array, has_more (always false), and first_id / last_id. Each entry
carries id, name, description, and a category that reads preset on
every voice. Nothing sent to the speech endpoint is added to this list.
chorus lists 56 voices, the union of chorus-voices (9) and chorus-clone
(47). chorus-design lists none, because a designed voice has no id. Ids come
back lowercase, and voice matches them case-insensitively.