Audio & Speech
Generate spoken audio, choose or clone voices, and use each text-to-speech model effectively.
One speech API, model-specific behavior
Featherless provides a unified speech API for turning text into audio across multiple text-to-speech models. Each model differs in its voices, cloning workflow, language coverage, expressive prompt syntax, controls, limits, and streaming behavior.
Send every synthesis request to /v1/audio/speech. The selected model determines which voices and reference-audio modes are available and how the prompt should be written.
Every example on this page reads your key from the FEATHERLESS_API_KEY environment variable, so export it once before running any of them. 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 it on Node 18 or newer, which supplies the built-in fetch they rely on.
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": "Hello from Featherless.",
"voice": "af_bella",
"response_format": "wav"
}' \
--output speech.audio \
--write-out "Content-Type: %{content_type}\n"Start with capability discovery
Do not assume that a voice name, cloning recipe, language selector, expression tag, output format, or streaming mode works across models. First list active speech models through /v1/models, then query /v1/audio/voices for the chosen model. Use its model guide for prompt syntax and model-specific limitations.
Current speech models
The active speech catalog includes eight models: Kokoro, Qwen3-TTS Base, Chatterbox, F5-TTS, CSM-1B, Dia, Orpheus, and Chatterbox Turbo. Each one has its own model class, so list them with model_class=tts rather than by naming a single shared class. Two Zonos models are not available as speech choices. This section does not cover the music model class.