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

# Transcription (STT)

> Voice agents use STT (speech recognition) to turn the caller's speech into text that is passed to the LLM.

By default, transcription is provided by the Brosbots-managed stack. From
the **Pro** plan up you can connect your own Deepgram key, and on the
**Business** plan - all STT providers (incl. Soniox, Cartesia, OpenAI). Choose the
transcription language according to the provider's documentation, e.g.
Deepgram:
[https://developers.deepgram.com/docs/models-languages-overview#nova-3](https://developers.deepgram.com/docs/models-languages-overview#nova-3)

## Managed tiers: Fast and Accurate

Managed transcription works the same way as the managed LLM tiers - you pick a
tier, not a concrete model:

* **Fast (Deepgram Nova-3)** - lowest latency, the most natural conversation
  flow. Good for regular talking.
* **Accurate (Soniox stt-rt-v5)** - slightly slower, far more reliable on
  digits and spelling, multilingual, and it takes keyword hints (under advanced
  settings).

**Default tier.** A new agent in Polish or with language set to `multi` (auto-detect)
starts on **Accurate**; an agent in any other language starts on **Fast**. This
applies to agents created from a template or the wizard and to configurations
that carry no tier at all. Agents saved with a tier keep it - switch an older
Polish agent to **Accurate** yourself if you want the same behaviour.

If the Deepgram connection drops during a call, the platform reconnects it
straight away, so the agent does not stop hearing the caller.

<Warning>
  Do not use the **Fast** tier when the agent has to collect numbers or
  spelled-out data: phone numbers, e-mail addresses, postal addresses, account or
  ID numbers. Deepgram gets phone numbers wrong, and an e-mail address it has no
  chance with. Switch those conversations to the **Accurate** tier.
</Warning>

The sliders and toggles described below (`endpointing`, `utterance_end_ms`,
`smart_format`, `punctuate`, `numerals`) belong to Deepgram, so they are only
available on the **Fast** tier.

## Deepgram streaming - important pitfalls

When Deepgram is selected, the platform opens a streaming WebSocket with a
few timing parameters that determine **when the LLM kicks in**:

* **`utterance_end_ms`** (silence that marks the end of the caller's
  utterance) - **Deepgram requires a minimum of `1000` ms**. A lower value
  causes the connection to be rejected with **HTTP 400** - the agent then
  appears not to hear the caller at all. The backend automatically
  corrects legacy configurations, and the UI slider has a locked minimum
  of `1000`.
* **`endpointing`** (silence marking a phrase boundary) - safe range
  `10–1000` ms.
* **`smart_format` / `punctuate` / `numerals`** - provider-side
  formatting; availability depends on the language.

For a full explanation of how `utterance_end_ms`, VAD and the Smart Turn
model (deciding that the caller has finished speaking) work together, see
[Turn detection and STT timing](/en/configurations/turn-detection).

## Soniox

Soniox is a real-time provider available from the **Business** plan. It
auto-detects across 60+ languages on a single model, so it suits calls that
switch language mid-sentence (Polish with English product names, for
instance) better than a model pinned to one language.

* **Model** - `stt-rt-v5` is the current real-time model; `stt-rt-v3` stays
  available for configurations pinned to it.
* **Language** - `multi` sends no hint and lets Soniox detect the language.
  Any other code is a hint that biases recognition without restricting it.
* **Context** - names, products or jargon the caller is likely to say
  (`Ivorylab, Pipedrive, KRS number`). A few dozen words is plenty.
* **End turns on our VAD** - on by default: the pipeline's VAD decides the
  caller has finished, which replies faster. Turn it off to let Soniox's own
  endpoint detection make that call.
* **Speaker diarization** / **Language identification** - annotate the
  transcript with speaker IDs and detected language.

Billing is \$0.12 per hour of audio, with translation, diarization and
timestamps included in that rate.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.