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

# Listen

> Change the speech to text model and how your agent hears callers.

The Listen section controls speech to text (STT): the model that turns caller
audio into text, and how the agent decides the caller is speaking. For how
Listen, Think, and Speak fit together, see the
[Execution Layer overview](/concepts/execution-layer/overview).

## Prerequisites

Before you begin:

* An agent already exists. If not, see
  [Create an agent](/guides/get-started/create-a-project/create-agent).
* These steps change a live agent. The API path uses `PATCH`; see
  [Update an agent](/guides/get-started/create-a-project/create-agent#update-an-agent).

## Change the speech to text model

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Open your project and go to the **Listen** section. Open the **STT model**
    dropdown to see the models you can pick. It has two tabs: **SLNG models**,
    hosted by SLNG in your region, and **BYOK**, models you reach with your own
    provider key. Each list is filtered to what the project's region and language
    support.

    <Frame caption="The STT model dropdown, with the SLNG models and BYOK tabs.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/livekit-listen-model.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=17c106fa27f9132f6b51986ebe9b7f87" alt="The Listen section STT model dropdown open, showing the SLNG models and BYOK tabs" width="2560" height="1600" data-path="heroshots/livekit-listen-model.png" />
    </Frame>

    Pick a model from the **SLNG models** tab where one fits: it runs in your
    region and skips the hop to an outside provider. To use the **BYOK** tab,
    register your provider key first; see
    [Bring your own key](/guides/models/bring-your-own-key).
  </Tab>

  <Tab title="API" icon="code">
    Send the whole `models` object. A `PATCH` replaces it as a unit rather than
    merging fields, so change `stt` and keep the other model fields as they are.

    ```json highlight={3} theme={null}
    {
      "models": {
        "stt": "deepgram/nova:3",
        "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
        "tts": "slng/fish/tts:s2.1-pro",
        "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
      }
    }
    ```

    ```bash Request theme={null}
    curl -X PATCH https://api.agents.slng.ai/v1/agents/$AGENT_ID \
      -H "Authorization: Bearer $SLNG_API_KEY" \
      -H "Content-Type: application/json" \
      -d @models.json
    ```

    Prefer a model under the `slng/` prefix (`slng/deepgram/nova:3-en`): it runs
    in your region and skips the hop to an outside provider. A bare
    `provider/model` uses the provider's model through SLNG; add your own key
    (BYOK) to run it on your account. See
    [Choose a model route](/guides/integrate/pipecat#choose-a-model-route) and
    [Bring your own key](/guides/models/bring-your-own-key).
  </Tab>
</Tabs>

To see which models your region and language support, see
[Which models are available](/guides/models/which-models-are-available).

## Tune transcription

`models.stt_kwargs` passes options straight through to the transcription
provider. It is empty by default. In the dashboard, it lives under **Advanced
settings** on the Listen section, in the **Overrides · JSON** box. The same block
holds the STT timeout covered under [Keep Listen reliable](#keep-listen-reliable).

<Frame caption="Advanced settings on the Listen section: an STT timeout and a JSON box for provider overrides.">
  <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/listen-advanced-settings.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=f68df0ab2185af779e48f816cd14755d" alt="The Advanced settings block on the Listen section, with the STT timeout field and the Overrides JSON editor" width="1376" height="1116" data-path="heroshots/listen-advanced-settings.png" />
</Frame>

The keys are specific to the model you picked, not to SLNG. For the default
Deepgram Nova 3, they include `punctuate`, `smart_format`, `numerals`,
`profanity_filter`, `redact`, `keywords`, and `filler_words`. Send them inside
the whole `models` object, since a `PATCH` replaces it as a unit:

```json highlight={7} theme={null}
{
  "models": {
    "stt": "deepgram/nova:3",
    "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
    "tts": "slng/fish/tts:s2.1-pro",
    "tts_voice": "16cabdb7f8d240569aff36c9e480d783",
    "stt_kwargs": { "punctuate": true, "numerals": true }
  }
}
```

To find the options a model accepts, see that provider's transcription API
reference. SLNG applies a few limits: up to 128 keys, 64 KiB in total, and it
rejects keys that would carry credentials or change routing (`api_key`,
`base_url`, `headers`, `model`, and similar). Overrides apply to the primary STT
model, not to its fallbacks.

## Handle interruptions

`enable_interruptions` is a top-level field, `true` by default. When it is on,
the agent stops speaking as soon as the caller starts, so a caller can cut in
mid-sentence. Turn it off for a flow that must finish a statement before it
listens again.

```json theme={null}
{ "enable_interruptions": true }
```

## Reduce background noise

Noise cancellation cleans caller audio before transcription. The agent carries a
`noise_cancellation_enabled` field for it. For what it does and when to use it,
see [Noise cancellation](/guides/execution-layer/stt/noise-cancellation).

## Keep Listen reliable

The STT step can fall back to another model and has its own per-turn timeout
(`models.fallbacks.stt`, `models.stt_final_timeout_s`). These work the same way
across all three sections, so they live in one place. See
[Reliability](/guides/agents/configure/reliability).

## Next steps

* [Think](/guides/agents/configure/think): the system prompt, greeting, and
  language model.
* [Speak](/guides/agents/configure/speak): the text to speech model and voice.
