Skip to main content
Transcribe live audio in any supported language, or several at once, with native code switching. Universal-3.5 Pro Streaming is multilingual by default. It follows speakers as they shift mid-sentence between languages like English and Spanish, French, Hindi or Mandarin, preserving exactly what was said without translating everything into a single language. No configuration is required. Hear what code switching sounds like, and how it’s transcribed.
English <> French
I said something like, j'ai dit à mes étudiants que it's time to really pay attention to what the idea of code-switching is.
English <> Hindi
मेरा रुकने का तो बहुत मन है, but I have an exam to give tomorrow.
English <> Mandarin
But this sentence, 我父母不工作了, you can see the 了 at the end of the sentence indicates that the situation now, my parents don't work, is different from what it was before.

Quickstart

Code switching is on by default. Open a streaming session with no language parameters and the model code-switches natively across all supported languages.
CONNECTION_PARAMS = {
    "sample_rate": 16000,
    "speech_model": "universal-3-5-pro",
}

Steering toward known languages

When you know which languages a session will use, pass the language_codes connection parameter to steer the model toward them and improve language accuracy.
  • For a known subset, pass the codes you expect (for example, ["en", "es"]). The model still code-switches, but heavily biased to the languages you list.
  • For a monolingual session, pass a single-element list (for example, ["es"]).
  • For full multilingual, omit language_codes to keep native code switching across all supported languages.
Set the language_codes connection parameter when you open the WebSocket.
CONNECTION_PARAMS = {
    "sample_rate": 16000,
    "speech_model": "universal-3-5-pro",
    "language_codes": ["en", "es"],
}
Describing languages in a contextual promptYou can also name the expected languages in natural language as part of a contextual prompt (for example, Multilingual conversation in English, Spanish, and German.), but language_codes is the best-supported way to select languages. See Prompting and keyterms.

Supported languages

Universal-3.5 Pro Streaming code-switches across 18 languages.
LanguageCodeLanguageCode
EnglishenDanishda
SpanishesFinnishfi
FrenchfrHindihi
GermandeVietnamesevi
ItalianitArabicar
PortugueseptHebrewhe
TurkishtrJapaneseja
DutchnlMandarinzh
SwedishsvNorwegianno

Detecting the spoken language

Set the language_detection connection parameter to true to have each turn report which language was spoken. Turn messages then include language_code and language_confidence (a float between 0 and 1) fields, populated when an utterance is complete or the turn is final.
{
  "type": "Turn",
  "end_of_turn": true,
  "transcript": "¿Puedo pagar la factura por teléfono?",
  "language_code": "es",
  "language_confidence": 0.92
}
language_detection only controls reporting and doesn’t change how the model transcribes. It’s available on Universal-3.5 Pro Streaming and Universal-Streaming Multilingual.
CONNECTION_PARAMS = {
    "sample_rate": 16000,
    "speech_model": "universal-3-5-pro",
    "language_detection": True,
}

Updating languages mid-stream

language_codes can be updated during an active session without reconnecting. This is useful when a voice agent detects the caller’s language, or when a conversation is handed off to a speaker of another language. Send an UpdateConfiguration message with the new values. The change takes effect from the next turn.
# Steer transcription toward new languages
websocket.send('{"type": "UpdateConfiguration", "language_codes": ["en", "fr"]}')

# Clear steering and return to native code switching
websocket.send('{"type": "UpdateConfiguration", "language_codes": []}')
See Updating configuration mid-stream for the full list of parameters you can update mid-stream.

Other streaming models

Universal-3.5 Pro Streaming is the only streaming model with native (mid-sentence) code switching. The other streaming models handle languages differently.
ModelLanguagesCode switching
Universal-3.5 Pro Streaming18 languages (see above)Native, mid-sentence
Universal-Streaming Multilingualen, es, de, fr, pt, itPer turn
Universal-Streaming Englishen onlyNo
See Select the speech model for a full model comparison.

Looking for pre-recorded code switching?

This guide covers code switching for streaming (real-time audio). If you’re working with pre-recorded audio, see Code Switching (Pre-recorded).