> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

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

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`

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

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

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

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

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

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

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

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`<br />required   | <ul><li>`amazon`</li><li>`polly` (will be deprecated in the future)</li></ul> | TTS engine                              |
| `voice`<br />required    | Choose from the [**Name/ID** column][polly]                                   | Voice ID                                |
| `model`<br />optional    | `standard`, `neural`, or `generative`                                         | Amazon Polly model. Default: `standard` |
| `language`<br />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.

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."
```

```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();
```

![The Call Flow Builder interface. A voice is selected in the drop-down menu.](https://files.buildwithfern.com/signalwire.docs.buildwithfern.com/docs/ff0711b6accf078bb7ffef69b47e886e8d1cd241674e12020ed6428843a7181b/assets/images/call-flow/tts/polly-cfb-voice.webp)

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