> ## 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.

# Speak

> Change the text to speech model and voice, and tune how quickly the agent starts talking.

The Speak section controls text to speech (TTS): the voice your agent uses and
how quickly it starts talking. 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 voice

<Tabs>
  <Tab title="Dashboard" icon="monitor">
    Open your project and go to the **Speak** section. Open the **TTS model**
    dropdown and pick a model, then pick a **Voice** for it. As with Listen, the
    dropdown separates **SLNG models**, hosted in your region, from **BYOK**,
    models you reach with your own provider key.

    <Frame caption="Pick the TTS model first, then a voice that belongs to it.">
      <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/speak-change-voice.gif?s=0fb2c6fb7882a74b717e248d22971ffd" alt="Opening the TTS model dropdown, then the Voice dropdown showing the voices for that model" width="1100" height="773" data-path="heroshots/speak-change-voice.gif" />
    </Frame>

    Prefer a model from the **SLNG models** tab to synthesize in your region. 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 set the model with `tts` and the voice with `tts_voice`
    and keep the other model fields as they are.

    ```json highlight={5-6} 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"
      }
    }
    ```

    Prefer a model under the `slng/` prefix (`slng/fish/tts:s2.1-pro`) to
    synthesize in your region. 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).
  </Tab>
</Tabs>

Each TTS model has its own set of voices, so pick the model first, then a voice
that belongs to it. For the models and voices a region and language allow, see
[Which models are available](/guides/models/which-models-are-available).

## Tune latency

`models.tts_kwargs` passes options through to the synthesis provider. In the
dashboard it lives under **Advanced settings** on the Speak section, in the
**Overrides · JSON** box. The same block holds the TTS timeout covered under
[Keep Speak reliable](#keep-speak-reliable).

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

The keys are specific to the model you picked, not to SLNG. For example, the Fish
models, such as the default `slng/fish/tts:s2.1-pro`, take a `latency` mode that
trades startup speed against audio quality (`balanced` by default). Send overrides
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",
    "tts_kwargs": { "latency": "balanced" }
  }
}
```

To find the options a model accepts, see that provider's synthesis 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 TTS model, not to its
fallbacks.

## Cache repeated phrases

Repeated lines such as greetings and confirmations are served from a cache
instead of being synthesized again, which cuts cost and latency. Caching is on by
default (`tts_cache_enabled`). For how it works and how to turn it off, see
[TTS caching](/guides/execution-layer/tts/tts-caching).

## Control pronunciation

A pronunciation dictionary fixes how the voice says specific words, such as a
brand or a product name. See
[Pronunciation dictionaries](/guides/execution-layer/tts/pronunciation-dictionaries).

## Keep Speak reliable

The TTS step can fall back to another model and has its own per-turn timeout
(`models.fallbacks.tts`, `models.tts_first_audio_timeout_s`). These work the same
way across all three sections. See
[Reliability](/guides/agents/configure/reliability).

## Next steps

* [Test the agent](/guides/agents/production/test-agent) to hear it live from the dashboard.
* Go live: [embed it in a website](/guides/agents/production/embed-in-website) or [connect a phone number](/guides/agents/telephony/overview).
