> This page is for Build.

> Append .md to any page URL for clean Markdown. Index: https://docs.speechify.ai/llms.txt.
>
> Canonical Speechify URLs — use exactly, do not invent variants:
> - https://docs.speechify.ai — this site (API reference, SDKs, quickstarts)
> - https://speechify.ai — marketing + product site
> - https://platform.speechify.ai — customer dashboard, signup, API keys, billing
> - https://api.speechify.ai — API base URL
> - https://github.com/Speechify-AI: GitHub org for the API (cookbook, demos, CLI). `github.com/speechify` does not exist.
> - https://status.speechify.ai — status + incidents
> - https://speechify.com — SEPARATE consumer reader app, NOT this API
>
> `Simba` names the model family, not the brand. Model ids: `simba-3.5` (48 languages under one id, English included; recommended), `simba-3.2` (English) and `simba-3.0` (English, German, Spanish, French, Italian and Portuguese; the default). `simba-english` and `simba-multilingual` are retired: a new workspace that sends either gets `400 model_retired`. `SimbaVoice` / `simbavoice.ai` are retired.
>
> Ask, don't scrape. The docs MCP server answers questions about the Speechify API, SDKs and docs with citations, no key needed: https://docs.speechify.ai/_mcp/server (Streamable HTTP, tool `searchDocs`). Setup: https://docs.speechify.ai/build/guides/get-started/connect-mcp

# Speech Synthesis Markup Language (SSML)

> Use SSML with SpeechifyAI Build TTS to set pauses, speaking rate, pitch, volume and pronunciation. See which tags each model applies and how to escape characters.

SSML is an XML-based markup language for controlling how text is spoken. On the current models, `simba-3.5`, `simba-3.2` and `simba-3.0`, it sets pauses, speaking rate, pitch, volume and pronunciation. Wrap your content in a `<speak>` tag:

```xml
<speak>Your content to be synthesized here</speak>
```

## Escaping Characters

Transforming text into SSML requires escaping certain characters to ensure correct interpretation:

| Character | Escaped Form |
| --------- | ------------ |
| `&`       | `&amp;`      |
| `>`       | `&gt;`       |
| `<`       | `&lt;`       |
| `"`       | `&quot;`     |
| `'`       | `&apos;`     |

**`Example`**

```xml title="Example"
<!-- Original: Some "text" with 5 < 6 & 4 > 8 in it -->
<speak>Some &quot;text&quot; with 5 &lt; 6 &amp; 4 &gt; 8 in it</speak>
```

**`Escape Function`**

```ts title="Escape Function"
const escapeSSMLChars = (text: string) =>
  text
    .replaceAll("&", "&amp;")
    .replaceAll("<", "&lt;")
    .replaceAll(">", "&gt;")
    .replaceAll('"', "&quot;")
    .replaceAll("'", "&apos;");
```

> **Note**
>
> An attribute name or value we do not recognise is **ignored, not refused**. `<prosody ptich="high">` (misspelled name) and `<prosody pitch="hihg">` (misspelled value) both synthesize as ordinary speech and return `200`. Malformed XML is different: unbalanced tags or undeclared entities return `400`. If a tag seems to have had no effect, check the spelling of both the attribute name and its value.

## What each model applies

| Tag                                   | `simba-3.5`, `simba-3.2`, `simba-3.0` | Simba 1.6 (`simba-english`, `simba-multilingual`) until `2026-11-21` |
| ------------------------------------- | ------------------------------------- | -------------------------------------------------------------------- |
| `<break>`                             | Applied                               | Applied                                                              |
| `<prosody rate>`                      | Applied                               | Applied                                                              |
| `<sub alias>`                         | Applied                               | Applied                                                              |
| `<prosody pitch>`, `<prosody volume>` | Applied                               | Applied                                                              |
| `<emphasis>`                          | Accepted, not applied                 | Applied                                                              |
| `<speechify:style emotion>`           | Accepted, not applied                 | Applied                                                              |

Accepted, not applied means the request still returns `200` and the text inside the tag is spoken, without the change the tag describes. Simba 1.6 is retired for new workspaces. From `2026-11-21` both of its ids are served by the current models, so they apply only the tags in the current-model column. See [Migrating off Simba 1.6](/build/migrating-off-simba-1-6).

## Supported SSML Tags

#### prosody

The `prosody` tag changes how a span is spoken. Every model applies `rate`, `pitch` and `volume`, with the same values. Nested `prosody` tags multiply: `rate="slow"` inside `rate="slow"` is 0.75 times 0.75 of the normal rate.

A `prosody` around a whole block of text costs nothing extra. One that changes part of a sentence has that part synthesized on its own, so the sentence's intonation can break where the value changes.

```xml
<speak>
    This is a normal speech pattern.
    <prosody rate="fast">
        I'm speaking faster than usual!
    </prosody>
    Back to normal speech pattern.
</speak>
```

**Parameters**

**`rate`** `string`

Alters speech speed.

**Values:**

* `x-slow`, `slow`, `medium` (also `default`), `fast`, `x-fast`
* Percentage adjustments: `-50%` to `+9900%` (e.g., `+20%`, `-30%`)

---

**`pitch`** `string`

Adjusts the pitch of speech delivery, without changing its speed.

**Values:**

* `x-low`, `low`, `medium` (also `default`), `high`, `x-high`
* Percentage adjustments: `-83%` to `+100%` (e.g., `+20%`, `-30%`)

---

**`volume`** `string`

Controls speech loudness. A gain that would clip is held under a limiter.

**Values:**

* `silent`, `x-soft`, `soft`, `medium` (also `default`), `loud`, `x-loud`
* Decibel adjustments: Number with `dB` suffix, `-60dB` to `+20dB` (e.g., `-6dB`)
* Percentage adjustments, relative to the voice's own loudness: `-100%` to `+900%` (e.g., `+20%`, `-30%`). `100%` doubles the gain; it does not mean unchanged. Omit `volume`, or use `medium`, for no change.

---

#### break

The `break` tag controls pausing between words, following [W3 specifications](https://www.w3.org/TR/speech-synthesis11/#S3.2.3).

```xml
<speak>
    Sometimes it can be useful to add a longer pause at the end of the sentence.
    <break strength="medium" />
    Or <break time="100ms" /> sometimes in the <break time="1s" /> middle.
</speak>
```

**Parameters**

**`strength`** `string`

Specifies pause strength.

**Values:**

* `none`: 0ms
* `x-weak`: 250ms
* `weak`: 500ms
* `medium`: 750ms
* `strong`: 1000ms
* `x-strong`: 1250ms

---

**`time`** `string`

Specifies pause duration (0-10 seconds). A single break is capped at 10 seconds, and the **total** silence one document may insert is capped at **30 seconds** - past that, further pauses are dropped rather than rejected.

**Values:**

* Milliseconds: `ms` suffix (e.g., `100ms`)
* Seconds: `s` suffix (e.g., `1s`)

---

#### emphasis

The `emphasis` tag adds or removes emphasis from text, modifying speech similarly to `prosody` but without setting individual attributes. Simba 1.6 only: `simba-3.5`, `simba-3.2` and `simba-3.0` accept it and speak the text without emphasis.

```xml
<speak>
    I already told you I <emphasis level="strong">really like</emphasis> that person.
</speak>
```

**Parameters**

**`level`** `string`

Specifies emphasis level.

**Values:**

* `reduced`
* `moderate`
* `strong`

---

#### sub

The `sub` tag replaces pronunciation for contained text, following [W3 specifications](https://www.w3.org/TR/speech-synthesis11/#S3.1.11).

```xml
<speak>
    For detailed information, please read the <sub alias="Frequently Asked Questions">FAQ</sub> section.
</speak>
```

**Parameters**

**`alias`** `string` — required

Specifies text to be spoken instead of enclosed text.

---

#### speechify:style

The `speechify:style` tag sets an emotion style. Simba 1.6 only: `simba-3.5`, `simba-3.2` and `simba-3.0` accept it and speak the text without the style. See [Emotion styles](/build/guides/text-to-speech/emotion-control).

```xml
<speak>
    <speechify:style emotion="cheerful">Great news! Your order shipped!</speechify:style>
</speak>
```

**Parameters**

**`emotion`** `string`

Sets the voice emotion on Simba 1.6. Values: `angry`, `cheerful`, `sad`, `terrified`, `relaxed`, `fearful`, `surprised`, `calm`, `assertive`, `energetic`, `warm`, `direct`, `bright`.

---

## Examples

#### Basic SSML

```xml
<speak>Welcome to SpeechifyAI Build.</speak>
```

#### Speaking rate

```xml
<speak>
  <prosody rate="slow">
    This text will be spoken slowly.
  </prosody>
  <prosody rate="fast">
    While this text will be spoken quickly.
  </prosody>
</speak>
```

#### Pauses

```xml
<speak>
  Let me tell you something important.
  <break time="750ms" />
  This is critical information.
</speak>
```

#### Pronunciation

```xml
<speak>
  Read the <sub alias="Frequently Asked Questions">FAQ</sub> before you call.
</speak>
```

To say a word your way everywhere it appears, or to give its exact phones, send [`pronunciations`](/build/guides/text-to-speech/pronunciation) with the request on Simba 3.5.