Skip to main content
Set languages on a PAL to name the languages its conversations are expected to run in, and override it on an individual conversation when that one needs a different set.
This makes recognition more accurate, keeps the PAL from answering in a language you did not ask for, and picks the right voice for each language automatically.
properties.language is deprecated. It still works and existing integrations are unaffected, but it only names one language and cannot say what a conversation should be prepared for. Prefer languages, including for a single language: languages: ["es"] replaces language: "spanish". See Migrating from language.

Setting languages

cURL
What it accepts:
  • Language codes from the spoken languages below.
  • Up to 42 entries, in order. The first entry is the language the conversation opens in.
Name only the languages you expect. A narrower set is more accurate in those languages than a wide one, so declaring five beats declaring twenty when you only need five. With languages set on neither the PAL nor the conversation, the conversation runs in English, the same as sending ["en"]. A conversation whose pinned STT or TTS engine cannot support every language in the field is rejected. If you pin an engine or a model, check that it covers the languages you declare.

PAL and conversation precedence

Every conversation with a PAL starts from that PAL’s languages. Setting languages on a conversation applies to that conversation alone.
Omit languages on the conversation to inherit the PAL’s. Sending it replaces the PAL’s set. The two are not merged.
Both fields accept exactly the same values.

Spoken languages

Tavus speaks 42 languages with the default tavus-auto TTS engine.
tavus-auto picks the provider and model for you. Set tts_engine and tts_model_name explicitly only when you need a specific one, and check its language coverage first.

Migrating from language

Additional language support via Azure

If you need a language outside the 42 above, Azure may cover it. Use Azure only as a fallback, prefer the default tavus-auto routing whenever your language is already supported. For the latest list, see Azure Speech TTS language support. Unlike Cartesia and ElevenLabs (which Tavus hosts for you), Azure requires you to bring your own Azure Speech API key:
  1. Set tts_engine to azure explicitly on the PAL’s TTS layer.
  2. Provide your own Azure Speech resource api_key. The resource must be in the East US region (Tavus synthesizes via eastus; a key from another region returns an authentication error). Set external_voice_id to any standard Azure neural voice available in East US (for example de-DE-KatjaNeural); Custom Neural Voices must be deployed in that same resource.
Any Azure voice can speak any supported language, carrying the voice’s own accent. For a natural accent, pick a voice whose locale matches your target language (e.g. a de-DE-* voice for German), or use one of Azure’s *MultilingualNeural voices.

Per-engine language lists

Cartesia

ElevenLabs