Skip to main content
Deepgram's Docs

Search documentation

Type to search this documentation.

On this pageOverview

Flux Multilingual & Language Prompting

Flux Multilingual (flux-general-multi) is a single model supporting 10 languages with the same turn-aware, interruption-aware conversational intelligence as flux-general-en. The optional language_hint parameter biases the model toward specific languages, delivering accuracy on par with dedicated monolingual models. Without hints, the model auto-detects the spoken language.

Flux Multilingual uses the same production endpoint and API key you already use for Flux. Just set model=flux-general-multi — no new credentials or endpoints required. Pricing is the same as flux-general-en.

Language Code
English en
Spanish es
French fr
German de
Hindi hi
Russian ru
Portuguese pt
Japanese ja
Italian it
Dutch nl

language_hint string (optional, repeatable)

Pass one or more language_hint values to bias the model toward specific languages. This improves accuracy when you know the expected language(s) ahead of time.

Behavior Description
Single hint Biases strongly toward one language — best accuracy for known-language calls
Multiple hints Biases toward a set of languages — ideal for multilingual support centers
No hint Model auto-detects — use when the language is completely unknown

When you know the caller’s language ahead of time (e.g., a Spanish-language call center), set a single language_hint for best accuracy.

wss://api.deepgram.com/v2/listen?model=flux-general-multi&language_hint=es&encoding=linear16&sample_rate=16000

When callers may speak one of several languages (e.g., a bilingual English/Spanish support line), pass multiple hints. The model biases toward the specified set while still producing accurate transcripts regardless of which language is spoken.

wss://api.deepgram.com/v2/listen?model=flux-general-multi&language_hint=en&language_hint=es&encoding=linear16&sample_rate=16000

When you have no knowledge of what language the caller will speak, omit language_hint entirely. The model auto-detects the language from the audio.

wss://api.deepgram.com/v2/listen?model=flux-general-multi&encoding=linear16&sample_rate=16000

When speakers switch between languages mid-conversation (e.g., a bilingual speaker mixing English and Spanish), set hints for the expected languages. Flux handles mid-sentence language switches natively.

wss://api.deepgram.com/v2/listen?model=flux-general-multi&language_hint=en&language_hint=es&language_hint=fr&encoding=linear16&sample_rate=16000
Python
from deepgram import AsyncDeepgramClient
from deepgram.core.events import EventType

client = AsyncDeepgramClient()

async with client.listen.v2.connect(
    model="flux-general-multi",
    encoding="linear16",
    sample_rate=16000,
    request_options={
        "additional_query_parameters": {
            "language_hint": ["en", "es"],
        }
    },
) as connection:
    def on_message(message):
        if getattr(message, "type", None) == "TurnInfo":
            print(message.languages)
            print(message.languages_hinted)

    connection.on(EventType.MESSAGE, on_message)
    await connection.start_listening()

When using flux-general-multi, all TurnInfo events include two additional fields:

Field Type Description
languages string array (BCP-47) Languages detected in the current turn, sorted by word count (descending). Empty when no transcript is present.
languages_hinted string array (BCP-47) The language hints active at the time of the turn.
JSON
{
  "type": "TurnInfo",
  "request_id": "ad12514a-0d38-4f7e-8fba-cce10d8f174c",
  "sequence_id": 11,
  "event": "EndOfTurn",
  "turn_index": 0,
  "audio_window_start": 0,
  "audio_window_end": 1.3,
  "transcript": "Hello, how are you?",
  "languages_hinted": ["en", "es", "de"],
  "languages": ["en"],
  "words": [
    { "word": "Hello,", "confidence": 0.96 },
    { "word": "how", "confidence": 0.94 },
    { "word": "are", "confidence": 0.97 },
    { "word": "you?", "confidence": 0.92 }
  ],
  "end_of_turn_confidence": 0.86,
  "trigger": "model"
}

Use the languages field to route downstream processing — for example, selecting the correct TTS voice or LLM prompt language based on what the user actually spoke.

You can update language hints during a stream using the Configure control message without disconnecting. This is useful when conversational context changes — for example, after detecting the caller’s language, you can narrow the hints for better accuracy.

JSON
{
  "type": "Configure",
  "language_hints": ["en", "es"]
}
Action JSON Behavior
Replace hints "language_hints": ["en", "fr"] Replaces current hints with the new set
Clear hints "language_hints": [] Removes all hints; model reverts to auto-detect
Keep unchanged Omit language_hints or set to null Current hints remain active

A common voice agent pattern is to start a call with broad language detection, then lock in the detected language for the rest of the conversation. This gives you the best of both worlds: flexible auto-detection at the start and high-accuracy single-language transcription once the caller’s language is known.

How it works:

  1. Connect with no hints (or a broad subset of expected languages) to let the model auto-detect.
  2. Read the languages field from the first EndOfTurn event to identify the caller’s language.
  3. Send a Configure message to lock in that language as a single hint for the remainder of the call.
  4. Monitor for language changes — if a subsequent turn returns a different primary language in languages, send another Configure to update the hint.

Step 1 — Connect with broad detection:

wss://api.deepgram.com/v2/listen?model=flux-general-multi&encoding=linear16&sample_rate=16000

Or, if you know callers will speak one of a few languages, start with a subset:

wss://api.deepgram.com/v2/listen?model=flux-general-multi&language_hint=en&language_hint=es&language_hint=fr&encoding=linear16&sample_rate=16000

Step 2 — Read the detected language from the first EndOfTurn:

JSON
{
  "type": "TurnInfo",
  "event": "EndOfTurn",
  "transcript": "Hola, necesito ayuda con mi cuenta.",
  "languages": ["es"],
  "languages_hinted": [],
  "trigger": "model",
  ...
}

The first entry in languages is the primary language by word count.

Step 3 — Lock in the detected language:

JSON
{
  "type": "Configure",
  "language_hints": ["es"]
}

This biases all subsequent transcription toward Spanish, improving accuracy for the rest of the call.

Step 4 — Handle language switches (optional):

If a later turn returns a different primary language, update the hint:

JSON
{
  "type": "Configure",
  "language_hints": ["en"]
}
Error Cause HTTP Code
INVALID_PARAMETER language_hint sent to a model other than flux-general-multi 400
INVALID_PARAMETER Unsupported language code in language_hint 400

Example error response:

JSON
{
  "code": "INVALID_PARAMETER",
  "description": "language_hint is not supported for model flux-general-en"
}

flux-general-en remains available and recommended for English-only workloads. Use flux-general-multi when you need multilingual support or expect non-English audio. Both models share the same turn detection architecture, end-of-turn configuration, and control message interface.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu