> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vocily.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Language

> Pick the language a call starts in, the languages it may switch into, and when switching is allowed.

An agent no longer has a single language. It has a **primary language** - the one every call
starts in - and optionally a set of **additional languages** it is allowed to move into while the
call is running.

You set both in the **Language** pill, the first of the four pills at the top of the agent editor.

<Note>
  **Language is the first choice for a reason.** The Transcriber, Intelligence, and Voice pills are
  all filtered by it - a speech model that cannot hear Kannada is greyed out the moment Kannada is
  in the set. Choose the languages your callers actually speak, then let the rest of the row narrow
  itself.
</Note>

## Primary language

**Primary language** is the language the call starts in. It is also the language the greeting is
spoken in, because the greeting happens before the caller has said anything - there is nothing to
detect yet, so it can only be configured.

Every agent has exactly one primary language.

<Note>
  **There is no separate greeting language setting any more.** The greeting always follows the
  primary language.
</Note>

### Changing it can change your voice

Some voice providers cannot be handed some languages at all. Cartesia raises an error on Kannada,
Odia, Assamese, and Urdu; Sarvam AI speaks eleven languages, which exclude Urdu and Assamese; and
Vocily AI's catalogue is India-only. That is not a "the voice sounds wrong" problem - the call
fails to connect, on every voice in that provider's catalogue.

So when you change the primary language to something your current voice or provider cannot speak,
Vocily swaps it and **tells you it did**, right there in the pill:

> Voice provider changed to **Sarvam AI** - the previous one cannot speak Kannada at all, so calls
> would not have connected.

The swap happens while you are looking at it, never silently mid-call. If you would rather choose
the replacement yourself, open the [Voice](/building-agents/voice) pill and pick one.

## Also speaks

Add languages under **Also speaks** to let the agent switch into them during a call. Each one
appears as a chip you can remove.

The primary language can never also be an additional one - it is already the language the call
starts in.

An agent with no additional languages speaks **one language only**. It will not follow a caller who
switches; it continues in its primary language and asks them to switch back.

<Warning>
  **More languages costs some accuracy on the primary one.** With a single language the recognizer
  is tuned for exactly that language. The moment there are two, it has to listen for every selected
  language at once and cannot be re-tuned mid-call - narrowing it later would mean dropping the
  audio connection in the middle of a sentence.

  Add the languages your callers really use, not every language they might.
</Warning>

## Switch when

Once there is more than one language, the **Switch when** setting (under the pill's gear) decides
what is allowed to move the conversation:

| Setting                              | What triggers a switch                                                                                                                                                             |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **The caller asks, or we detect it** | The agent follows the caller's language automatically, and also switches when they ask. This is the default.                                                                       |
| **Only when the caller asks**        | The agent stays in its primary language even if the caller speaks another one. It changes only when the caller explicitly asks - "can you speak in Hindi", "Tamil mein baat karo". |

The setting is disabled until you add a second language, because with one language there is nothing
to switch to.

<Note>
  **"Only when the caller asks" is a promise about stability.** A bilingual caller who drops one
  English word into a Hindi sentence is not asking for anything. On this setting the agent keeps
  going in the language it was in, which is what you want for a scripted or compliance-sensitive
  call.
</Note>

## How automatic switching behaves

Automatic switching is not "the agent heard Tamil, so it speaks Tamil". A recognizer's per-turn
guess is noisy, and an agent that flips on every uncertain turn is worse than one that never
switches at all. Vocily applies four rules:

<CardGroup cols={2}>
  <Card title="A confident turn switches immediately" icon="bolt">
    When the recognizer is sure about the language, the agent moves on that turn.
  </Card>

  <Card title="An unsure turn has to repeat" icon="repeat">
    A weak signal must show up on consecutive turns before it counts. One uncertain turn never
    moves the voice.
  </Card>

  <Card title="Numbers never count" icon="numbers">
    "4 2 8 1 9 7" - an OTP or an order ID read out digit by digit - looks like English to any
    recognizer, whatever language the call is in. Digits are ignored as evidence entirely.
  </Card>

  <Card title="Unlisted languages are held" icon="lock">
    An agent switches only into languages you configured. A Telugu caller on a Hindi + English
    agent does not move the voice.
  </Card>
</CardGroup>

Very short utterances ("haan", "ok") are also ignored - there is not enough in them to tell one
language from another.

### The first thing the caller says is special

On an inbound call the caller usually speaks first, and their opening words are the strongest
evidence that will ever exist about which language they want. There is also nothing to flap away
from yet, because the conversation has not committed to a language.

So the **first caller turn can switch on its own**, without waiting for a repeat. Later turns need
the full anti-flap treatment.

## What the agent replies in

The languages you select also bound what the agent is allowed to **answer** in. Vocily writes that
constraint into the agent's instructions automatically, generated from the same setting the
detector reads, so the two can never disagree.

You do not write it and you cannot edit it. It changes on its own whenever the language set or the
switch trigger changes.

<Warning>
  **Do not write language rules into Response Style.** Instructions like "reply in Hindi if they
  speak Hindi" compete with the platform's own switching, and which one wins is not predictable.
  Response Style is for tone, length, and how the agent handles uncertainty - see [Agent
  Core](/building-agents/agent-core).

  Keeping names, emails, URLs, and product codes untranslated is already handled for you.
</Warning>

## If a provider fails mid-call

If the speech or voice provider stops responding and the agent falls back to its backup, the
conversation **returns to the primary language** and the agent says so:

> Sorry - I'm having a technical problem. Let me continue in Hindi.

A backup only has to cover the primary language, not the whole set. That is deliberate: nothing
else on the roster covers every Indic language, so requiring full parity would leave Indic agents
with no backup at all. Announcing the reset is what makes it honest - a caller who had switched to
Tamil is told the agent is going back to Hindi, instead of quietly finding it no longer understands
them.

See [Transcriber](/building-agents/transcriber) for choosing the backup.

## Supported languages

| Region      | Languages                                                                                           |
| ----------- | --------------------------------------------------------------------------------------------------- |
| **Indic**   | Assamese, Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu, Urdu |
| **English** | English (India), English (US), English (UK)                                                         |
| **Other**   | Dutch, French, German, Italian, Japanese, Portuguese, Russian, Spanish                              |

Not every speech model covers every language, and no model covers all of them. The language list
here is the full set the platform offers; the [Transcriber](/building-agents/transcriber) pill shows
which models can serve the particular combination you picked, and greys out the ones that cannot.

<Warning>
  **Urdu and Assamese can be heard but not spoken.** The speech models transcribe them, and no
  voice provider on the platform can voice them. Keep them under **Also speaks** so the agent
  understands a caller who uses them; an agent with either as its **primary** language will not be
  able to speak at all.
</Warning>

<Note>
  **A new agent starts on Hindi with English alongside it**, with switching set to "the caller asks,
  or we detect it".
</Note>

## If you used Vocily before

The old **Conversation Language** dropdown, with its seventeen fixed modes, is gone. So are
**Greeting Language** and **Auto Language Rules**.

| Before                                        | Now                                                                                 |
| --------------------------------------------- | ----------------------------------------------------------------------------------- |
| **Hindi / English (Auto)**                    | Primary **Hindi**, also speaks **English (India)**                                  |
| **Indian Multilingual (Auto)**                | Primary language, plus the specific Indian languages you want under **Also speaks** |
| A fixed mode, e.g. **Kannada**                | Primary **Kannada**, nothing under **Also speaks**                                  |
| **Greeting Language**                         | Follows the primary language                                                        |
| **Auto Language Rules** / **Override Prompt** | Replaced by **Switch when**, plus the automatic reply-language constraint           |
| **Translate custom-set messages**             | Removed                                                                             |

Existing agents were migrated to the equivalent language set. The thing worth revisiting is
**Also speaks**: an agent that was on Indian Multilingual now needs its languages named explicitly,
because "any Indian language" is not a set a recognizer can be held to.

## Checklist

Before you rely on a multilingual agent, place a test call and check that:

* The greeting comes out in the primary language.
* Speaking an additional language moves the agent within a turn or two.
* Reading out a number does **not** move it.
* Speaking a language you did **not** configure leaves the agent where it is.
* On "Only when the caller asks", using another language does nothing until you ask.

## What's next

* [Transcriber](/building-agents/transcriber) - which speech model hears these languages, and what
  it costs.
* [Voice](/building-agents/voice) - choosing a voice that can actually speak them.
* [Agent Core](/building-agents/agent-core) - the greeting and the prompt sections.
