Skip to main content
Telnyx AI Assistants support multiple speech-to-text (STT) models for transcribing caller audio. The model you choose affects transcription accuracy, supported languages, and response latency. You can also tune provider-specific transcription behavior, such as end-of-turn detection, formatting, keyterm boosting, and Azure region selection.

Available models

deepgram/flux supports English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch. For broader language coverage, use deepgram/nova-3, deepgram/nova-2, azure/fast, assemblyai/universal-3-5-pro, xai/grok-stt, or nvidia/parakeet-v3.

Selecting a model

Portal

In the AI Assistants tab, edit your assistant and navigate to the Voice tab. Select your preferred STT model from the Transcription Model dropdown. AI Assistant Transcription Model Selection When you change models in the Portal, related settings are reset to the defaults for that provider. For example:
  • deepgram/flux supports explicit languages, auto, and multi for its supported languages, and applies Flux end-of-turn defaults.
  • Other Deepgram models enable smart_format and numerals by default.
  • assemblyai/universal-3-5-pro applies AssemblyAI turn detection defaults.
  • soniox/stt-rt-v4 and soniox/stt-rt-v5 disable endpoint detection by default; term biasing and language hints are left unset.
  • azure/fast defaults the Azure region to latency, which auto-selects the closest supported Telnyx-managed region.
  • nvidia/parakeet-v3 uses automatic multilingual transcription.
  • omi-health/omi-med-stt-v1 pins the language to en.
  • cohere/ar-stt defaults the language to ar. Set it to en explicitly if needed — unlike other models, it does not auto-detect and rejects auto.
  • reson8/turns defaults the language to auto for automatic detection. Setting an explicit language reduces latency.
  • speechmatics/standard defaults the language to en; omitting it, or setting auto, also resolves to en.
  • speechmatics/linden-1 (preview) has no auto-detect. Omitting language defaults to en, so set a code from its supported list for other languages; setting auto is rejected with a 400.

API

Set the transcription.model field when creating or updating an assistant:
You can also set the transcription language explicitly. If omitted or set to auto, supported models auto-detect the language:

Languages

Supported language options depend on the selected model. If your assistant has a language filter set elsewhere in the Voice tab, the Portal only shows transcription models and language choices that are compatible with that language.

Deepgram settings

Deepgram Flux end-of-turn detection

deepgram/flux is optimized for live voice agents. It provides end-of-turn detection so the assistant can start responding as soon as the caller finishes speaking. It also supports eager end-of-turn, which starts large language model (LLM) processing before the caller fully stops speaking to reduce perceived response latency. When you select deepgram/flux in the Portal, these settings are applied by default: eager_eot_threshold must be less than or equal to eot_threshold. Setting both thresholds to the same value effectively disables eager end-of-turn behavior because the system waits for final end-of-turn confirmation before starting LLM processing.
The eager_eot_threshold field is controlled by the FE-eager-eot-threshold Portal feature flag. When that flag is disabled, the Portal hides the field, but API payloads can still include it if your account supports the setting.
When using Flux, the Portal may also prompt you to lower the assistant’s start speaking plan timings. Flux works best with low start speaking delays, such as 0.1 seconds for wait time and endpointing plan thresholds.

Keyterm Boost

keyterm is a comma-separated list of terms to boost during recognition. Use it for product names, customer names, acronyms, or domain-specific vocabulary. It is supported by deepgram/flux, deepgram/nova-3, reson8/turns, speechmatics/linden-1, and assemblyai/universal-3-5-pro (and its legacy alias assemblyai/universal-streaming). The full keyterm value is limited to 1000 characters. AssemblyAI models additionally accept at most 100 distinct terms of up to 50 characters each. Keyterm Boost also supports dynamic variables. Use variables when boosted terms are caller-specific, such as a customer name, participant names, account name, or product names passed into the assistant at conversation start.

Smart Format and Numerals

For Deepgram models other than Flux, the Portal exposes these settings and enables both by default when you select the model:

AssemblyAI settings

assemblyai/universal-3-5-pro supports configurable turn detection. When you select it in the Portal, these defaults are applied: min_turn_silence must be less than or equal to max_turn_silence.

Soniox settings

Soniox offers two model versions: soniox/stt-rt-v4 and soniox/stt-rt-v5. Both support multilingual streaming transcription with automatic language detection.

Term Biasing

soniox/stt-rt-v4 and soniox/stt-rt-v5 support context, a comma-separated list of terms to boost during recognition. Use it for staff names, building names, product names, or other domain-specific vocabulary. Term Biasing also supports dynamic variables. Use variables when boosted terms are caller-specific, such as a customer name, participant names, account name, or product names passed into the assistant at conversation start.

Language Hints

language_hints pins recognition to one or more languages at once, as an array of ISO 639-1 codes. Use it when an assistant regularly serves callers in a known set of languages, such as Dutch and French, instead of relying on full auto-detection.

Endpoint detection


Parakeet settings

nvidia/parakeet-v3 supports multilingual transcription with automatic language detection. It does not require provider-specific transcription settings.

Reson8 settings

reson8/turns delivers transcripts per turn of speech: the assistant receives the full transcript of a turn when the caller finishes speaking. Language defaults to auto for automatic detection and can be fixed to one of the 10 supported languages. It does not require provider-specific transcription settings.

Cohere settings

cohere/ar-stt is a self-hosted model for Arabic and English transcription. Unlike other models, it does not auto-detect the language and requires an explicit ar or en — auto (and any other value) is rejected. Omitting language defaults to ar. It does not require provider-specific transcription settings.

Speechmatics settings

speechmatics/linden-1 is a preview, vendor-hosted model with broad language coverage (67 language codes, compared with 17 for speechmatics/standard). It has no automatic language detection: omitting language defaults to en, and setting auto is rejected with a 400 (unlike speechmatics/standard, which resolves auto to en). Set the caller’s language explicitly. es-bilingual-en selects the Spanish and English bilingual pack. To choose a spelling or script variant, set language to en-US, en-GB, or en-AU (English), or cmn-Hans (Simplified) or cmn-Hant (Traditional) for Mandarin. en alone uses the default spelling. These codes are accepted for speechmatics/linden-1 only, not speechmatics/standard. remove_disfluencies applies to speechmatics/linden-1 only, and only for the languages Speechmatics supports for disfluency removal: ar, cmn, da, de, el, en, es, fr, he, hi, hu, it, ja, nl, pl, pt, and ru. Support follows the base language, so the variants en-US, en-GB, en-AU, cmn-Hans, and cmn-Hant are covered. For other languages, filler words remain in the transcript. See Speechmatics formatting.

Azure settings

azure/fast supports region selection and an optional Azure API key reference. Common Telnyx-managed regions include latency, australiaeast, centralindia, eastus, northcentralus, westeurope, and westus2. Additional Azure regions are available when using your own Azure API key.

Fallback models and language booster

An assistant can run more speech-to-text models next to its transcription model, transcription.model, in one of two modes: An assistant uses one mode at a time. Each fallback model and the language booster take an optional language and settings:
  • language: omit it to use the transcription model’s language. If the model doesn’t support that language, the request is rejected; set a language for that model.
  • settings: omit it to use the transcription model’s settings where they apply to the model. A settings object takes the same fields and limits as transcription.settings and replaces the transcription model’s settings for that model. Fields for another provider are dropped, and the provider’s defaults fill in the rest.

Fallback models

The transcription model and every fallback model must be streaming models: deepgram/flux, deepgram/nova-3, deepgram/nova-2, assemblyai/universal-3-5-pro (or its legacy alias assemblyai/universal-streaming), xai/grok-stt, soniox/stt-rt-v4, soniox/stt-rt-v5, humain/realtime, or reson8/turns. Each fallback model must differ from the transcription model and from the other fallback models.

Language booster

The language booster is set with transcription.challenger. It and the transcription model must both be streaming models, listed above, or both non-streaming models: azure/fast, nvidia/parakeet-v3, omi-health/omi-med-stt-v1, cohere/ar-stt, distil-whisper/distil-large-v2, openai/whisper-large-v3-turbo, or telnyx/basira. The language booster can also be the same model as the transcription model, on another language. Set rule to choose how the assistant picks the transcript: best_turn and best_engine score transcripts on how complete and confident they are, not on their language, so they work best when both models understand the callers’ language. Set the model that is more accurate for the callers as transcription.model: the language booster must outscore it to win. Under best_turn with streaming models, the transcription model also decides when each turn ends. While both models transcribe, the end of each turn can wait up to about 1.5 seconds for the other model, and eager end-of-turn, such as Deepgram Flux eager_eot_threshold, does not apply.
If the language booster can’t run, the call runs on the transcription model alone. If either model fails mid-call, the call continues on the other.

Updates and validation

  • Omit fallback_models or challenger in an update to keep the stored value. Send null to remove either one; [] also removes fallback_models. A new fallback_models list replaces the stored list.
  • To switch modes, remove the other mode in the same request. For example, send "fallback_models": [] with a new challenger.
  • When an update changes transcription.model or transcription.language, the assistant’s stored fallback models or language booster that no longer fit are removed without an error. The response shows what remains.
  • With fallback models or a language booster other than merge_words, the transcription model must support transcription.language alongside other models. For example, cohere/ar-stt supports only ar there.
  • A request that sets both modes, more than 3 fallback models, or a model that doesn’t fit is rejected with 400. The error names the model, for example fallback 2 (deepgram/nova-2) doesn't support 'ar' — set a language for it.
  • In a workflow node, a transcription override that sets model, fallback_models, or challenger doesn’t inherit the assistant’s fallback models or language booster; it uses only the ones it sets. Otherwise the node inherits them, and they must fit the node’s language: a node or assistant change they no longer fit is rejected with 400, naming the node.

Configure advanced settings via API

Create an assistant with tuned transcription settings: