> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# Amazon Polly

> Learn how to use Polly TTS voices on the SignalWire platform.

Amazon Web Services' Polly TTS engine includes several models to accommodate different use cases.

## Models

SignalWire supports the following three Amazon models.

#### [Standard](https://docs.aws.amazon.com/polly/latest/dg/standard-voices.html)

Polly Standard is a traditional, cost-effective, and reliable TTS model.

Example voice ID string: `amazon.Emma:en-GB` or `amazon.Emma:standard:en-GB`

#### [Neural](https://docs.aws.amazon.com/polly/latest/dg/neural-voices.html)

Polly Neural produces more natural, human-like speech than Polly Standard.

Example voice ID string: `amazon.Kendra:neural:en-US`

#### [Generative](https://docs.aws.amazon.com/polly/latest/dg/generative-voices.html)

Polly Generative is Amazon's largest and most realistic model.

Example voice ID string: `amazon.Danielle:generative:en-US`

## Voices

Browse Amazon's list of [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) and build the voice ID string as shown in the model cards above.

## Languages

Consult AWS documentation for a comprehensive and up-to-date list of supported voices,
as well as information on accented and fully bilingual voices.

#### [List of supported voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html)

Most Amazon Polly voices support a single language.
Select voices from this list, which includes Standard, Neural, and Generative models.

#### [Bilingual pronunciation](https://docs.aws.amazon.com/polly/latest/dg/bilingual-voices.html#accented-bilingual)

All Amazon Polly voices support accented bilingual pronunciation through the use of the SSML `lang` tag.

#### [Fully bilingual voices](https://docs.aws.amazon.com/polly/latest/dg/bilingual-voices.html#true-bilingual)

Learn more about fully bilingual voices like `Aditi`, `Kajal`, `Hala`, and `Zayd`,
which are designed to fluently speak two languages.

## Usage

Amazon voice IDs conform to the following format:

```
amazon.<voice>:<model>:<language>
```

| Parameter           | Possible values                                         | Description                             |
| :------------------ | :------------------------------------------------------ | :-------------------------------------- |
| `engine` required   | * `amazon`
* `polly` (will be deprecated in the future) | TTS engine                              |
| `voice` required    | Choose from the [**Name/ID** column][polly]             | Voice ID                                |
| `model` optional    | `standard`, `neural`, or `generative`                   | Amazon Polly model. Default: `standard` |
| `language` optional | Choose from the [**Language code** column][polly]       | Sets model language. Default: `en-US`   |

**Examples:**

```
amazon.Joanna
amazon.Joanna:standard:en-US
amazon.Kendra:neural:en-US
amazon.Matthew:neural:en-US
amazon.Danielle:generative:en-US
amazon.Amy:generative:en-GB
amazon.Aditi:standard:hi-IN
```

**Simplified Format:**

For voices that only support one model, you can omit the model parameter:

```
amazon.<voice>:<language>
```

Example: `amazon.Aditi:hi-IN` (Standard model implied)

The `polly` engine code is being deprecated. Use `amazon` instead.

Amazon Polly has a limit of 3000 chargeable characters in a single request.
If your TTS request is longer than 3000 characters, you will experience silence.

---

## Examples

See how to use Amazon Polly voices on the SignalWire platform.

#### SWML

Use the
[**`languages`**](/docs/swml/reference/ai/languages#use-voice-strings)
SWML method to set one or more voices for an [AI agent](/docs/swml/reference/ai).

```yaml
version: 1.0.0
sections:
  main:
  - ai:
      prompt:
        text: Have an open-ended conversation about flowers.
      languages:
        - name: English
          code: en-US
          voice: amazon.Ruth:neural
```

Alternatively, use the [**`say_voice`** parameter](/docs/swml/reference/play#variables)
of the [**`play`**](/docs/swml/reference/play)
SWML method to select a voice for basic TTS.

```yaml
version: 1.0.0
sections:
  main:
  - set:
      say_voice: "amazon.Ruth:neural"
  - play: "say:Greetings. This is the Ruth voice from Amazon Polly's Neural text-to-speech model."
```

#### Relay Realtime SDK

```javascript
// This example uses the Node.js SDK for SignalWire's Relay Realtime API.
const playback = await call.playTTS({ 
    text: "Greetings. This is the Ruth voice from Amazon Polly's Neural text-to-speech model.",
    voice: "amazon.Ruth:neural",
});
await playback.ended();
```

#### Call Flow Builder

In a **Play Audio or TTS** node, choose **Text to Speech** and select the Amazon Polly voice `amazon.Ruth:neural`.

[polly]: https://docs.aws.amazon.com/polly/latest/dg/available-voices.html "Available Amazon Polly voices"