Skip to navigation

Voices and languages

Discover voices for your model and use their assigned language.
View as Markdown

Choose a voice in the Playground, or retrieve the complete catalog with List voices. The catalog is specific to the requested model; use its exact voice IDs in speech requests.

Voice names and IDs

voice is required and case-sensitive. Send the catalog entry’s id, not its display_name. For example:

Display nameAPI voice IDLanguageGender
DianadianaEnglish (en)Female
LeonleonEnglish (en)Male
GabrielgabrielSpanish (es)Male

Use "voice": "diana" or "voice": "leon" in requests. Capitalized display names such as "Diana" and "Leon" are not valid IDs. Retrieve the catalog for the model you will use.

These prerecorded previews come from the current voice pack. Each voice reads a different sample sentence.

Diana

diana · English · Female

Measured and professional, with a mature, reassuring presence.

I’ve reviewed the details, and everything is in place for tomorrow, so you can leave the rest with me.

Claire

claire · English · Female

Calm and articulate, with crisp enunciation and a polished finish.

Here’s the plan: we’ll focus on your priorities and turn the next steps into something simple and manageable.

Gabriel

gabriel · Castilian Spanish · Male

Clear and measured, with a professional, instructional delivery.

Ines

ines · Castilian Spanish · Female

Warm and expressive, with an unhurried narrative cadence.

List available voices

curl --fail --silent --show-error \
'https://api.narilabs.com/v1/voices?model=qwen3-tts' \
-H "Authorization: Bearer $NARI_API_KEY"

model and a valid API key are required. The response contains the complete voice list and its catalog_version. Search or filter this small list in your application. Listing voices does not consume inference concurrency or credits, and does not require an available GPU node.

Each entry contains id, display_name, language, gender, and description. Optional accent and preview_url fields describe the accent and link to a prerecorded sample. A catalog update appears on the next fetch after regional cache refresh; existing screens do not receive push updates.

Generate speech

{
"model": "qwen3-tts",
"input": "Your order has shipped.",
"voice": "diana",
"response_format": "wav"
}

The voice field is required. An unknown voice ID is rejected before inference. If a voice becomes unavailable after a catalog update, fetch the list again and select an available voice.

Language is assigned to the voice

The selected voice determines the generation language. The current multilingual pack contains 30 English voices and six Castilian Spanish voices: gabriel, tomas, adrian, ines, alba, and elisa.

Request languageBehavior
Omitted or autoUse the selected voice’s assigned language.
The voice’s returned language codeUse that language, such as en for Diana or es for Gabriel.
A different language codeReject before inference because the language does not match the voice.

auto does not detect the input language or translate text. Always use the catalog’s returned language instead of inferring a language from the text or voice name.