Docs /Getting Started/Speech model guides

Speech model guides

Model-specific prompting, voices, cloning, languages, controls, and delivery behavior.

Why each model has a guide

The unified endpoint keeps basic speech generation consistent, but it does not make the models interchangeable. A bracket token can create laughter in one model and be spoken literally by another. Some models use preset voices, some use speaker roles, and some depend on reference audio. Some controls described by the model authors are not exposed by Featherless.

Before you choose a guide

The three requests below take you from nothing to audio without picking a model first. Each one reads your key from the FEATHERLESS_API_KEY environment variable, and nothing else needs editing. The Python examples need pip install requests. The TypeScript examples use top-level await, so save each one with an .mjs extension, or set "type": "module" in package.json, and run them on Node 18 or newer.

This request lists every active speech model, so you can see which ones you are able to call and copy the exact case-sensitive ID each guide below refers to.

List the speech models
curl --fail-with-body --get https://api.featherless.ai/v1/models \
  --header "Authorization: Bearer $FEATHERLESS_API_KEY" \
  --data-urlencode "model_class=tts" \
  --data-urlencode "status=active" \
  --data-urlencode "per_page=100"

This request lists the voice names one model accepts, along with its default voice. It uses Kokoro 82M because that model publishes a large preset inventory; run it against whichever model ID you picked above, since voice names are never shared between models.

List the voices for one model
curl --fail-with-body --get https://api.featherless.ai/v1/audio/voices \
  --header "Authorization: Bearer $FEATHERLESS_API_KEY" \
  --data-urlencode "model=hexgrad/Kokoro-82M"

This request generates audio and writes it to a file, using the three fields every speech model shares: model, input, and response_format.

Generate speech
curl --fail-with-body https://api.featherless.ai/v1/audio/speech \
  --header "Authorization: Bearer $FEATHERLESS_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "hexgrad/Kokoro-82M",
    "input": "Every speech model accepts this same basic request shape.",
    "response_format": "wav"
  }' \
  --output speech-example.audio \
  --write-out "Content-Type: %{content_type}\n"

Swap the model ID for any ID returned by the first example to hear the same sentence from a different model. There is deliberately no voice in this request, because each model has its own voice rules: read its guide before adding one. Each snippet prints the Content-Type it received, because response_format is a request rather than a guarantee.

Current guides

There is one guide for every speech model in the Featherless catalog. The links below are the authoritative entry points for model-specific prompt syntax and UI behavior.

Kokoro 82M — preset voices, language-bearing voice names, speed, and pronunciation.

Qwen3-TTS Base — nine preset voices, ten languages inferred from the input text, and a cloning reference that is accepted but ignored.

Chatterbox — English speech with configured zero-shot reference cloning, no named-voice inventory, and no exposed generation controls.

F5-TTS — reference-voice synthesis, clean clips, and exact transcripts.

CSM-1B — conversational speaker roles and why [0]/[1] are not expression tags.

Dia 1.6B — [S1]/[S2] dialogue, parenthesized vocal cues, and audio prompts.

Orpheus 3B — named English voices and verified angle-bracket vocal events.

Chatterbox Turbo — English presets or cloning with square-bracket vocal events.

Last edited: Aug 27, 2026