Amazon Polly
Amazon Web Services' Polly TTS engine includes several models to accommodate different use cases.
Models
SignalWire supports the following three Amazon models.
Standard
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
Polly Neural produces more natural, human-like speech than Polly Standard.
Example voice ID string: amazon.Kendra:neural:en-US
Generative
Polly Generative is Amazon's largest and most realistic model.
Example voice ID string: amazon.Danielle:generative:en-US
Billing
Amazon Polly usage on SignalWire is billed according to the following SKU codes:
| Billing SKU | Model(s) | Description |
|---|---|---|
amazon_tts_standard | Standard | Traditional concatenative TTS, most cost-effective |
amazon_tts_neural | Neural | Advanced neural TTS with natural-sounding speech |
amazon_tts_generative | Generative | Latest generative AI model with highest quality |
The model you specify determines which billing SKU is applied. Standard is the default if no model is specified.
Consult the Voice API Pricing page for current rates.
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
Most Amazon Polly voices support a single language. Select voices from this list, which includes Standard, Neural, and Generative models.
Bilingual pronunciation
All Amazon Polly voices support accented bilingual pronunciation through the use of the SSML lang tag.
Fully bilingual voices
Learn more about fully bilingual voices like Aditi, Kajal, Hala, and Zayd,
which are designed to fluently speak two languages.
Voice IDs
Amazon voice IDs are composed of four sections:
| Parameter | Possible values | Description |
|---|---|---|
enginerequired |
| TTS engine |
voicerequired | Choose from the Name/ID column | Voice ID |
modeloptional | standard, neural, or generative | Amazon Polly model. Default: standard |
languageoptional | Choose from the Language code column | Sets model language. Default: en-US |
Amazon voice IDs conform to the following format:
amazon.<voice>:<model>:<language>
Parameters:
| Parameter | Required | Values | Description |
|---|---|---|---|
engine | Yes | amazon | TTS engine identifier (note: polly is deprecated) |
voice | Yes | See available voices | Voice name from the Name/ID column |
model | Optional | standard, neural, generative | Amazon Polly model (default: standard) |
language | Optional | See language codes | Language code (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
- RELAY Realtime SDK
- Call Flow Builder
- cXML
Use the
languages
SWML method to set one or more voices for an AI agent.
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
of the play
SWML method to select a voice for basic TTS.
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."
// 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();

<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="amazon.Ruth:neural">
Greetings. This is the Ruth voice from Amazon Polly's Neural text-to-speech model.
</Say>
</Response>