Voice & Language Profiles
Configure a voice per language and let agents switch voice mid-call as the conversation's language changes.
If your agents need to speak more than one language, Talkr can assign a different TTS voice to each language and switch between them automatically as a call progresses — without a separate LLM or TTS provider per language.
Voice profiles use a single TTS provider for every language. All the voices you configure must come from the same provider as your organization's BYOK Voice configuration.
How it works
- Your organization's primary language is whatever you've already set in Model Configuration → BYOK → Voice — the
LanguageandVoicefields on your TTS provider. There's nothing extra to configure for primary; it's just your existing Voice setup. - You configure an Additional Language Voices list at the organization level (below the Voice section): one entry per additional language you want agents to be able to switch into, each with its own voice from your configured TTS provider.
- On a specific agent, you optionally check which of those Additional Languages it should handle, under Settings → Language. Primary isn't picked per-agent — it's always your org's Voice configuration.
- When a call starts, Talkr resolves the agent's language configuration and configures the TTS voice for its primary language. If additional languages are checked and your STT provider can detect language per utterance (see STT provider support below), Talkr also enables that provider's language detection for the call. As the detected spoken language changes mid-conversation, the agent's TTS voice switches to match — with no added per-turn latency, since the switch context is resolved once at call setup.
- The agent's own replies switch language too, not just the voice. Talkr adds an instruction to the agent's system prompt telling it which languages are configured and to reply in whichever one the caller most recently used — otherwise the TTS voice would switch while the model kept writing in the original language, which sounds broken. With no additional languages configured, the agent is instead explicitly told to always reply in the primary language regardless of what the caller says.
If the org's Additional Language Voices list doesn't have a voice for a language a workflow requests, or the profile's provider no longer matches the org's configured TTS provider, Talkr fails soft: the call proceeds on the organization's plain TTS configuration rather than failing to connect.
Configuring additional language voices
- Go to Model Configuration → BYOK → Voice.
- Configure your TTS provider, language, and voice as usual (see Voice) — this is your primary language, already done here.
- In the Additional Language Voices card below it, add an entry for each additional language: pick a language, then a voice available from your configured TTS provider.
- Click Save Voice Profile.
The language options offered here come directly from your TTS provider's supported language list, and exclude your primary language (it's already covered by the Voice section above).
Configuring an agent's languages
- Open the agent and go to Settings → Language. Its primary language is shown read-only — it's always your org's configured TTS language.
- Check any Additional Languages the agent should be able to switch into mid-call, from what you've added to Additional Language Voices.
- Save the agent's settings.
If your STT provider can't detect language per utterance, the Language settings page shows a warning explaining that additional languages will be saved but the agent won't switch into them — see below.
STT provider support
Mid-call switching is driven entirely by the language your STT provider reports on each utterance. Providers fall into three groups:
- Always detects: Deepgram, Gladia, ElevenLabs.
- Detects only with a specific setting enabled: AssemblyAI (turn on "Language detection" in its STT settings), Soniox (turn on "Annotate tokens with detected language IDs"), Sarvam (use a
saarastranslate-endpoint model with language set to auto-detect — the defaultsaarikamodel requires a fixed language and won't detect). - Never detects — reports back whatever language it was statically configured with: Cartesia, OpenAI, Google, Speechmatics, Speaches, HuggingFace, Azure Speech, Smallest AI.
With a primary language and no additional languages selected, the agent uses the correct starting voice on every STT provider regardless of this list; the distinction only matters once you check at least one additional language.
Checking whether it's actually working
Every call's Gathered Context (visible on the run detail page) records two fields once a language configuration is active:
call_language: the language the agent is speaking in right now — its starting language if the call never switched, or the most recent language it switched into.language_switches: an ordered list of every switch that happened during the call, each as{"from": "...", "to": "..."}.
A call that stayed on its primary language the whole time still shows call_language (confirming the feature is configured and simply had nothing to switch into) with no language_switches key — that's different from multilingual not being configured at all, where neither field appears.
Related
- Voice — configure your TTS provider and default voices
- Transcriber — configure your STT provider
Voice
Voice Agents use TTS (Text to Speech), which generates audio that LLMs generate during the course of a conversation. This is the audio that the end user having the conversation listens to.
Pronunciation Dictionary
Teach your agents how to say names and places your TTS provider mispronounces by default.