Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Text-to-Speech (TTS)


Text To Speech (TTS), also known as speech synthesis, is a process in which text is converted into a human-sounding voice. Developers and business users alike use TTS to turn traditional human-to-human interactions into seamless, machine-to-human interactions, and make every interaction over voice a frictionless and first-class experience.

Instead of recording audio files with human voices to play back in a call, which has limited flexibility and is not a scalable option, TTS prompts can be dynamically, programmatically generated from raw text as a response to events in your application. Whether the use case is an Interactive Voice Response (IVR), a conversational assistant for scaling contact centers, or Voice notifications to deliver critical messages over a phone call, Text To Speech capabilities enable efficiency at global scale while enhancing customer engagement.


Table of Contents

table-of-contents page anchor

Click on a section name below to jump to that section.


Get Started with Text To Speech

get-started-with-text-to-speech page anchor

You can provide text and Twilio will synthesize speech in real time and speak back the audio in any call or conference. TTS is available via the <Say> TwiML verb and Studio's Say/Play Widget.

TwiML

twiml page anchor

The <Say> verb allows you to provide plain text that Twilio converts to synthesized speech.

For example, when Twilio executes the following TwiML during a call, the caller hears "Hello world!" The synthesized voice the caller hears is the default voice and language of the Twilio Account (configured in the Twilio Console).


_10
<Response>
_10
<Say>Hello world!</Say>
_10
</Response>

<Say> also allows you to modify the language, accent, and voice of the synthesized speech via the language and voice attributes. The example below uses Amazon Polly's "Joanna" voice and American English:


_10
<Response>
_10
<Say language="en-US" voice="Polly.Joanna">Hello. I am Joanna and I speak American English!</Say>
_10
</Response>

<Say> offers different options for voices, each with its own supported set of languages and genders, so you can customize your application with Text To Speech capabilities according to your needs and preferences.

To start using TTS, complete the following steps:

  1. Configure your Account-wide Text To Speech Settings(link takes you to an external page) in the Twilio Console.
  2. Use <Say> to programmatically define TTS instructions.

Twilio Studio is a visual, serverless tool that uses Widgets to represent various parts of Twilio's platform features and functionality to design and build applications with little or no code.

The Say/Play Widget allows you to add Text To Speech capabilities to your application with ease, including embedding SSML for supported voices.

To start using TTS with Studio, complete the following steps:

  1. Configure your Account-wide Text To Speech Settings(link takes you to an external page) in the Twilio Console.
  2. Use the Say/Play Widget to add TTS to your Studio Flow.

Text To Speech voices overview

text-to-speech-voices-overview page anchor

Twilio's Text To Speech offering has a variety of different voices in multiple languages and locales with their associated accents and pronunciations. There are three types of voices with different quality, language coverage and pricing: Basic, Standard and Premium.

Basic voices are first-generation voices. They can be used to get started and familiarize yourself with Text To Speech capabilities using <Say>, but may not have enough human-like qualities to build conversational applications and deliver superior user experiences over a voice call. The voices in this tier are available in a limited number of languages at no cost.

Standard voices offer standard TTS technology and produce natural-sounding synthesized speech with a variety of lifelike voices. The voices in this tier are provided by Amazon (Amazon Polly) and Google (Standard), with support for SSML (Speech Synthesis Markup Language), which allows developers to control many aspects of the synthesized speech.

These voices are generated using the latest technology and innovation in synthesized speech, providing the most human-like, expressive and natural-sounding text-to-speech voices possible, with higher quality than Standard voices. The voices in this tier are provided by Amazon (Amazon Polly Neural) and Google (WaveNet, Neural2), with support for SSML, which allows developers to control many aspects of the synthesized speech.

See the Pricing section below for additional information.


Available voices and languages

available-voices-and-languages page anchor
(information)

Info

Effective June 26 2023, Alice voices are no longer supported for Text-To-Speech and any request will be redirected to an alternate voice. It is recommended to update configuration in your Console, Studio Flows, and backend application to remove any references to alice voices. For more information, visit the Changelog(link takes you to an external page).

(warning)

Warning

Google voices (Standard, WaveNet and Neural2) are available in Public Beta

The following table contains all voices available for each language and locale. You can test the different voices from the TTS Settings(link takes you to an external page) page in the Twilio Console.

Note: Invalid combination of voice and language attributes may result in error and <Say> instruction failure.

Voices listed with (*) are fully bilingual voices. At the moment only Amazon Polly has this capability for a limited number of voices. Learn more by visiting Amazon's Bilingual Voices documentation(link takes you to an external page).

Language (Locale)IDTypeGenderVoice name
Afrikaans (South Africa)af-ZAStandardFemaleGoogle.af-ZA-Standard-A
Arabic (Standard)arbStandardFemalePolly.Zeina
Arabic (Standard)ar-XAStandardFemaleGoogle.ar-XA-Standard-A
Arabic (Standard)ar-XAStandardMaleGoogle.ar-XA-Standard-B
Arabic (Standard)ar-XAStandardMaleGoogle.ar-XA-Standard-C
Arabic (Standard)ar-XAStandardFemaleGoogle.ar-XA-Standard-D
Arabic (Standard)ar-XAPremiumFemaleGoogle.ar-XA-Wavenet-A
Arabic (Standard)ar-XAPremiumMaleGoogle.ar-XA-Wavenet-B
Arabic (Standard)ar-XAPremiumMaleGoogle.ar-XA-Wavenet-C
Arabic (Standard)ar-XAPremiumFemaleGoogle.ar-XA-Wavenet-D
Arabic (Gulf)ar-AEPremiumFemalePolly.Hala-Neural *
Basque (Spain)eu-ESStandardFemaleGoogle.eu-ES-Standard-A
Bulgarian (Bulgaria)bg-BGStandardFemaleGoogle.bg-BG-Standard-A
Catalan (Spain)ca-ESPremiumFemalePolly.Arlet-Neural
Catalan (Spain)ca-ESStandardFemaleGoogle.ca-ES-Standard-A
Chinese Cantoneseyue-CNPremiumFemalePolly.Hiujin-Neural
Chinese Cantonese (Hong Kong)yue-HKStandardFemaleGoogle.yue-HK-Standard-A
Chinese Cantonese (Hong Kong)yue-HKStandardMaleGoogle.yue-HK-Standard-B
Chinese Cantonese (Hong Kong)yue-HKStandardFemaleGoogle.yue-HK-Standard-C
Chinese Cantonese (Hong Kong)yue-HKStandardMaleGoogle.yue-HK-Standard-D
Chinese Mandarincmn-CNStandardFemalePolly.Zhiyu
Chinese Mandarincmn-CNPremiumFemalePolly.Zhiyu-Neural
Chinese Mandarincmn-CNStandardFemaleGoogle.cmn-CN-Standard-A
Chinese Mandarincmn-CNStandardMaleGoogle.cmn-CN-Standard-B
Chinese Mandarincmn-CNStandardMaleGoogle.cmn-CN-Standard-C
Chinese Mandarincmn-CNStandardFemaleGoogle.cmn-CN-Standard-D
Chinese Mandarincmn-CNPremiumFemaleGoogle.cmn-CN-Wavenet-A
Chinese Mandarincmn-CNPremiumMaleGoogle.cmn-CN-Wavenet-B
Chinese Mandarincmn-CNPremiumMaleGoogle.cmn-CN-Wavenet-C
Chinese Mandarincmn-CNPremiumFemaleGoogle.cmn-CN-Wavenet-D
Chinese Mandarin (Taiwan)cmn-TWStandardFemaleGoogle.cmn-TW-Standard-A
Chinese Mandarin (Taiwan)cmn-TWStandardMaleGoogle.cmn-TW-Standard-B
Chinese Mandarin (Taiwan)cmn-TWStandardMaleGoogle.cmn-TW-Standard-C
Chinese Mandarin (Taiwan)cmn-TWPremiumFemaleGoogle.cmn-TW-Wavenet-A
Chinese Mandarin (Taiwan)cmn-TWPremiumMaleGoogle.cmn-TW-Wavenet-B
Chinese Mandarin (Taiwan)cmn-TWPremiumMaleGoogle.cmn-TW-Wavenet-C
Czech (Czech Republic)cs-CZStandardFemaleGoogle.cs-CZ-Standard-A
Czech (Czech Republic)cs-CZPremiumFemaleGoogle.cs-CZ-Wavenet-A
Danish (Denmark)da-DKStandardMalePolly.Mads
Danish (Denmark)da-DKStandardFemalePolly.Naja
Danish (Denmark)da-DKStandardFemaleGoogle.da-DK-Standard-A
Danish (Denmark)da-DKStandardMaleGoogle.da-DK-Standard-C
Danish (Denmark)da-DKStandardFemaleGoogle.da-DK-Standard-D
Danish (Denmark)da-DKStandardFemaleGoogle.da-DK-Standard-E
Danish (Denmark)da-DKPremiumFemaleGoogle.da-DK-Wavenet-A
Danish (Denmark)da-DKPremiumMaleGoogle.da-DK-Wavenet-C
Danish (Denmark)da-DKPremiumFemaleGoogle.da-DK-Wavenet-D
Danish (Denmark)da-DKPremiumFemaleGoogle.da-DK-Wavenet-E
Dutch (Belgium)nl-BEStandardFemaleGoogle.nl-BE-Standard-A
Dutch (Belgium)nl-BEStandardMaleGoogle.nl-BE-Standard-B
Dutch (Belgium)nl-BEPremiumFemaleGoogle.nl-BE-Wavenet-A
Dutch (Belgium)nl-BEPremiumMaleGoogle.nl-BE-Wavenet-B
Dutch (Netherlands)nl-NLStandardFemalePolly.Lotte
Dutch (Netherlands)nl-NLStandardMalePolly.Ruben
Dutch (Netherlands)nl-NLPremiumFemalePolly.Laura-Neural
Dutch (Netherlands)nl-NLStandardFemaleGoogle.nl-NL-Standard-A
Dutch (Netherlands)nl-NLStandardMaleGoogle.nl-NL-Standard-B
Dutch (Netherlands)nl-NLStandardMaleGoogle.nl-NL-Standard-C
Dutch (Netherlands)nl-NLStandardFemaleGoogle.nl-NL-Standard-D
Dutch (Netherlands)nl-NLStandardFemaleGoogle.nl-NL-Standard-E
Dutch (Netherlands)nl-NLPremiumFemaleGoogle.nl-NL-Wavenet-A
Dutch (Netherlands)nl-NLPremiumMaleGoogle.nl-NL-Wavenet-B
Dutch (Netherlands)nl-NLPremiumMaleGoogle.nl-NL-Wavenet-C
Dutch (Netherlands)nl-NLPremiumFemaleGoogle.nl-NL-Wavenet-D
Dutch (Netherlands)nl-NLPremiumFemaleGoogle.nl-NL-Wavenet-E
English (Australia)en-AUStandardFemalePolly.Nicole
English (Australia)en-AUStandardMalePolly.Russell
English (Australia)en-AUPremiumFemalePolly.Olivia-Neural
English (Australia)en-AUStandardFemaleGoogle.en-AU-Standard-A
English (Australia)en-AUStandardMaleGoogle.en-AU-Standard-B
English (Australia)en-AUStandardFemaleGoogle.en-AU-Standard-C
English (Australia)en-AUStandardMaleGoogle.en-AU-Standard-D
English (Australia)en-AUPremiumFemaleGoogle.en-AU-Wavenet-A
English (Australia)en-AUPremiumMaleGoogle.en-AU-Wavenet-B
English (Australia)en-AUPremiumFemaleGoogle.en-AU-Wavenet-C
English (Australia)en-AUPremiumMaleGoogle.en-AU-Wavenet-D
English (Australia)en-AUPremiumFemaleGoogle.en-AU-Neural2-A
English (Australia)en-AUPremiumMaleGoogle.en-AU-Neural2-B
English (Australia)en-AUPremiumFemaleGoogle.en-AU-Neural2-C
English (Australia)en-AUPremiumMaleGoogle.en-AU-Neural2-D
English (India)en-INStandardFemalePolly.Aditi *
English (India)en-INStandardFemalePolly.Raveena
English (India)en-INPremiumFemalePolly.Kajal-Neural *
English (India)en-INStandardFemaleGoogle.en-IN-Standard-A
English (India)en-INStandardMaleGoogle.en-IN-Standard-B
English (India)en-INStandardMaleGoogle.en-IN-Standard-C
English (India)en-INStandardFemaleGoogle.en-IN-Standard-D
English (India)en-INPremiumFemaleGoogle.en-IN-Wavenet-A
English (India)en-INPremiumMaleGoogle.en-IN-Wavenet-B
English (India)en-INPremiumMaleGoogle.en-IN-Wavenet-C
English (India)en-INPremiumFemaleGoogle.en-IN-Wavenet-D
English (New Zealand)en-NZPremiumFemalePolly.Aria-Neural
English (South African)en-ZAPremiumFemalePolly.Ayanda-Neural
English (UK)en-GBBasicMaleMan
English (UK)en-GBBasicFemaleWoman
English (UK)en-GBStandardFemalePolly.Amy
English (UK)en-GBStandardMalePolly.Brian
English (UK)en-GBStandardFemalePolly.Emma
English (UK)en-GBPremiumFemalePolly.Amy-Neural
English (UK)en-GBPremiumFemalePolly.Emma-Neural
English (UK)en-GBPremiumMalePolly.Brian-Neural
English (UK)en-GBPremiumMalePolly.Arthur-Neural
English (UK)en-GBStandardFemaleGoogle.en-GB-Standard-A
English (UK)en-GBStandardMaleGoogle.en-GB-Standard-B
English (UK)en-GBStandardFemaleGoogle.en-GB-Standard-C
English (UK)en-GBStandardMaleGoogle.en-GB-Standard-D
English (UK)en-GBStandardFemaleGoogle.en-GB-Standard-F
English (UK)en-GBPremiumFemaleGoogle.en-GB-Wavenet-A
English (UK)en-GBPremiumMaleGoogle.en-GB-Wavenet-B
English (UK)en-GBPremiumFemaleGoogle.en-GB-Wavenet-C
English (UK)en-GBPremiumMaleGoogle.en-GB-Wavenet-D
English (UK)en-GBPremiumFemaleGoogle.en-GB-Wavenet-F
English (UK)en-GBPremiumFemaleGoogle.en-GB-Neural2-A
English (UK)en-GBPremiumMaleGoogle.en-GB-Neural2-B
English (UK)en-GBPremiumFemaleGoogle.en-GB-Neural2-C
English (UK)en-GBPremiumMaleGoogle.en-GB-Neural2-D
English (UK)en-GBPremiumFemaleGoogle.en-GB-Neural2-F
English (US)en-USBasicMaleMan
English (US)en-USBasicFemaleWoman
English (US)en-USStandardFemalePolly.Ivy
English (US)en-USStandardFemalePolly.Joanna
English (US)en-USStandardMalePolly.Joey
English (US)en-USStandardMalePolly.Justin
English (US)en-USStandardFemalePolly.Kendra
English (US)en-USStandardFemalePolly.Kimberly
English (US)en-USStandardMalePolly.Matthew
English (US)en-USStandardFemalePolly.Salli
English (US)en-USPremiumFemalePolly.Ivy-Neural
English (US)en-USPremiumFemalePolly.Joanna-Neural*
English (US)en-USPremiumFemalePolly.Kendra-Neural
English (US)en-USPremiumMale (child)Polly.Kevin-Neural
English (US)en-USPremiumFemalePolly.Kimberly-Neural
English (US)en-USPremiumFemalePolly.Salli-Neural
English (US)en-USPremiumMalePolly.Joey-Neural
English (US)en-USPremiumMalePolly.Justin-Neural
English (US)en-USPremiumMalePolly.Matthew-Neural*
English (US)en-USPremiumFemalePolly.Ruth-Neural
English (US)en-USPremiumMalePolly.Stephen-Neural
English (US)en-USStandardMaleGoogle.en-US-Standard-A
English (US)en-USStandardMaleGoogle.en-US-Standard-B
English (US)en-USStandardFemaleGoogle.en-US-Standard-C
English (US)en-USStandardMaleGoogle.en-US-Standard-D
English (US)en-USStandardFemaleGoogle.en-US-Standard-E
English (US)en-USStandardFemaleGoogle.en-US-Standard-F
English (US)en-USStandardFemaleGoogle.en-US-Standard-G
English (US)en-USStandardFemaleGoogle.en-US-Standard-H
English (US)en-USStandardMaleGoogle.en-US-Standard-I
English (US)en-USStandardMaleGoogle.en-US-Standard-J
English (US)en-USPremiumMaleGoogle.en-US-Wavenet-A
English (US)en-USPremiumMaleGoogle.en-US-Wavenet-B
English (US)en-USPremiumFemaleGoogle.en-US-Wavenet-C
English (US)en-USPremiumMaleGoogle.en-US-Wavenet-D
English (US)en-USPremiumFemaleGoogle.en-US-Wavenet-E
English (US)en-USPremiumFemaleGoogle.en-US-Wavenet-F
English (US)en-USPremiumFemaleGoogle.en-US-Wavenet-G
English (US)en-USPremiumFemaleGoogle.en-US-Wavenet-H
English (US)en-USPremiumMaleGoogle.en-US-Wavenet-I
English (US)en-USPremiumMaleGoogle.en-US-Wavenet-J
English (US)en-USPremiumMaleGoogle.en-US-Neural2-A
English (US)en-USPremiumFemaleGoogle.en-US-Neural2-C
English (US)en-USPremiumMaleGoogle.en-US-Neural2-D
English (US)en-USPremiumFemaleGoogle.en-US-Neural2-E
English (US)en-USPremiumFemaleGoogle.en-US-Neural2-F
English (US)en-USPremiumFemaleGoogle.en-US-Neural2-G
English (US)en-USPremiumFemaleGoogle.en-US-Neural2-H
English (US)en-USPremiumMaleGoogle.en-US-Neural2-I
English (US)en-USPremiumMaleGoogle.en-US-Neural2-J
English (Welsh)en-GB-WLSStandardMalePolly.Geraint
Filipino (Philippines)fil-PHStandardFemaleGoogle.fil-PH-Standard-A
Filipino (Philippines)fil-PHStandardFemaleGoogle.fil-PH-Standard-B
Filipino (Philippines)fil-PHStandardMaleGoogle.fil-PH-Standard-C
Filipino (Philippines)fil-PHStandardMaleGoogle.fil-PH-Standard-D
Filipino (Philippines)fil-PHPremiumFemaleGoogle.fil-PH-Wavenet-A
Filipino (Philippines)fil-PHPremiumFemaleGoogle.fil-PH-Wavenet-B
Filipino (Philippines)fil-PHPremiumMaleGoogle.fil-PH-Wavenet-C
Filipino (Philippines)fil-PHPremiumMaleGoogle.fil-PH-Wavenet-D
Finnish (Finland)fi-FIPremiumFemalePolly.Suvi-Neural
Finnish (Finland)fi-FIStandardFemaleGoogle.fi-FI-Standard-A
Finnish (Finland)fi-FIPremiumFemaleGoogle.fi-FI-Wavenet-A
French (Canada)fr-CAStandardFemalePolly.Chantal
French (Canada)fr-CAPremiumFemalePolly.Gabrielle-Neural
French (Canada)fr-CAPremiumMalePolly.Liam-Neural
French (Canada)fr-CAStandardFemaleGoogle.fr-CA-Standard-A
French (Canada)fr-CAStandardMaleGoogle.fr-CA-Standard-B
French (Canada)fr-CAStandardFemaleGoogle.fr-CA-Standard-C
French (Canada)fr-CAStandardMaleGoogle.fr-CA-Standard-D
French (Canada)fr-CAPremiumFemaleGoogle.fr-CA-Wavenet-A
French (Canada)fr-CAPremiumMaleGoogle.fr-CA-Wavenet-B
French (Canada)fr-CAPremiumFemaleGoogle.fr-CA-Wavenet-C
French (Canada)fr-CAPremiumMaleGoogle.fr-CA-Wavenet-D
French (Canada)fr-CAPremiumFemaleGoogle.fr-CA-Neural2-A
French (Canada)fr-CAPremiumMaleGoogle.fr-CA-Neural2-B
French (Canada)fr-CAPremiumFemaleGoogle.fr-CA-Neural2-C
French (Canada)fr-CAPremiumMaleGoogle.fr-CA-Neural2-D
French (France)fr-FRBasicMaleMan
French (France)fr-FRBasicFemaleWoman
French (France)fr-FRStandardFemalePolly.Céline/Polly.Celine
French (France)fr-FRStandardFemalePolly.Léa/Polly.Lea
French (France)fr-FRStandardMalePolly.Mathieu
French (France)fr-FRPremiumFemalePolly.Lea-Neural
French (France)fr-FRPremiumMalePolly.Remi-Neural
French (France)fr-FRStandardFemaleGoogle.fr-FR-Standard-A
French (France)fr-FRStandardMaleGoogle.fr-FR-Standard-B
French (France)fr-FRStandardFemaleGoogle.fr-FR-Standard-C
French (France)fr-FRStandardMaleGoogle.fr-FR-Standard-D
French (France)fr-FRStandardFemaleGoogle.fr-FR-Standard-E
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Wavenet-A
French (France)fr-FRPremiumMaleGoogle.fr-FR-Wavenet-B
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Wavenet-C
French (France)fr-FRPremiumMaleGoogle.fr-FR-Wavenet-D
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Wavenet-E
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Neural2-A
French (France)fr-FRPremiumMaleGoogle.fr-FR-Neural2-B
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Neural2-C
French (France)fr-FRPremiumMaleGoogle.fr-FR-Neural2-D
French (France)fr-FRPremiumFemaleGoogle.fr-FR-Neural2-E
Galician (Spain)gl-ESStandardFemaleGoogle.gl-ES-Standard-A
German (Austria)de-ATPremiumFemalePolly.Hannah-Neural
German (Germany)de-DEBasicMaleMan
German (Germany)de-DEBasicFemaleWoman
German (Germany)de-DEStandardMalePolly.Hans
German (Germany)de-DEStandardFemalePolly.Marlene
German (Germany)de-DEStandardFemalePolly.Vicki
German (Germany)de-DEPremiumFemalePolly.Vicki-Neural
German (Germany)de-DEPremiumMalePolly.Daniel-Neural
German (Germany)de-DEStandardFemaleGoogle.de-DE-Standard-A
German (Germany)de-DEStandardMaleGoogle.de-DE-Standard-B
German (Germany)de-DEStandardFemaleGoogle.de-DE-Standard-C
German (Germany)de-DEStandardMaleGoogle.de-DE-Standard-D
German (Germany)de-DEStandardMaleGoogle.de-DE-Standard-E
German (Germany)de-DEStandardFemaleGoogle.de-DE-Standard-F
German (Germany)de-DEPremiumFemaleGoogle.de-DE-Wavenet-A
German (Germany)de-DEPremiumMaleGoogle.de-DE-Wavenet-B
German (Germany)de-DEPremiumFemaleGoogle.de-DE-Wavenet-C
German (Germany)de-DEPremiumMaleGoogle.de-DE-Wavenet-D
German (Germany)de-DEPremiumMaleGoogle.de-DE-Wavenet-E
German (Germany)de-DEPremiumFemaleGoogle.de-DE-Wavenet-F
German (Germany)de-DEPremiumMaleGoogle.de-DE-Neural2-B
German (Germany)de-DEPremiumFemaleGoogle.de-DE-Neural2-C
German (Germany)de-DEPremiumMaleGoogle.de-DE-Neural2-D
German (Germany)de-DEPremiumFemaleGoogle.de-DE-Neural2-F
Greek (Greece)el-GRStandardFemaleGoogle.el-GR-Standard-A
Greek (Greece)el-GRPremiumFemaleGoogle.el-GR-Wavenet-A
Hebrew (Israel)he-ILStandardFemaleGoogle.he-IL-Standard-A
Hebrew (Israel)he-ILStandardMaleGoogle.he-IL-Standard-B
Hebrew (Israel)he-ILStandardFemaleGoogle.he-IL-Standard-C
Hebrew (Israel)he-ILStandardMaleGoogle.he-IL-Standard-D
Hebrew (Israel)he-ILPremiumFemaleGoogle.he-IL-Wavenet-A
Hebrew (Israel)he-ILPremiumMaleGoogle.he-IL-Wavenet-B
Hebrew (Israel)he-ILPremiumFemaleGoogle.he-IL-Wavenet-C
Hebrew (Israel)he-ILPremiumMaleGoogle.he-IL-Wavenet-D
Hindi (India)hi-INStandardFemalePolly.Aditi *
Hindi (India)hi-INPremiumFemalePolly.Kajal-Neural *
Hindi (India)hi-INStandardFemaleGoogle.hi-IN-Standard-A
Hindi (India)hi-INStandardMaleGoogle.hi-IN-Standard-B
Hindi (India)hi-INStandardMaleGoogle.hi-IN-Standard-C
Hindi (India)hi-INStandardFemaleGoogle.hi-IN-Standard-D
Hindi (India)hi-INPremiumFemaleGoogle.hi-IN-Wavenet-A
Hindi (India)hi-INPremiumMaleGoogle.hi-IN-Wavenet-B
Hindi (India)hi-INPremiumMaleGoogle.hi-IN-Wavenet-C
Hindi (India)hi-INPremiumFemaleGoogle.hi-IN-Wavenet-D
Hindi (India)hi-INPremiumFemaleGoogle.hi-IN-Neural2-A
Hindi (India)hi-INPremiumMaleGoogle.hi-IN-Neural2-B
Hindi (India)hi-INPremiumMaleGoogle.hi-IN-Neural2-C
Hindi (India)hi-INPremiumFemaleGoogle.hi-IN-Neural2-D
Hungarian (Hungary)hu-HUStandardFemaleGoogle.hu-HU-Standard-A
Hungarian (Hungary)hu-HUPremiumFemaleGoogle.hu-HU-Wavenet-A
Icelandic (Iceland)is-ISStandardFemalePolly.Dóra/Polly.Dora
Icelandic (Iceland)is-ISStandardMalePolly.Karl
Icelandic (Iceland)is-ISStandardFemaleGoogle.is-IS-Standard-A
Indonesian (Indonesia)id-IDStandardFemaleGoogle.id-ID-Standard-A
Indonesian (Indonesia)id-IDStandardMaleGoogle.id-ID-Standard-B
Indonesian (Indonesia)id-IDStandardMaleGoogle.id-ID-Standard-C
Indonesian (Indonesia)id-IDStandardFemaleGoogle.id-ID-Standard-D
Indonesian (Indonesia)id-IDPremiumFemaleGoogle.id-ID-Wavenet-A
Indonesian (Indonesia)id-IDPremiumMaleGoogle.id-ID-Wavenet-B
Indonesian (Indonesia)id-IDPremiumMaleGoogle.id-ID-Wavenet-C
Indonesian (Indonesia)id-IDPremiumFemaleGoogle.id-ID-Wavenet-D
Italian (Italy)it-ITBasicMaleMan
Italian (Italy)it-ITBasicFemaleWoman
Italian (Italy)it-ITStandardFemalePolly.Bianca
Italian (Italy)it-ITStandardFemalePolly.Carla
Italian (Italy)it-ITStandardMalePolly.Giorgio
Italian (Italy)it-ITPremiumFemalePolly.Bianca-Neural
Italian (Italy)it-ITPremiumMalePolly.Adriano-Neural
Italian (Italy)it-ITStandardFemaleGoogle.it-IT-Standard-B
Italian (Italy)it-ITStandardMaleGoogle.it-IT-Standard-C
Italian (Italy)it-ITStandardMaleGoogle.it-IT-Standard-D
Italian (Italy)it-ITPremiumFemaleGoogle.it-IT-Wavenet-B
Italian (Italy)it-ITPremiumMaleGoogle.it-IT-Wavenet-C
Italian (Italy)it-ITPremiumMaleGoogle.it-IT-Wavenet-D
Italian (Italy)it-ITPremiumFemaleGoogle.it-IT-Neural2-A
Italian (Italy)it-ITPremiumMaleGoogle.it-IT-Neural2-C
Japanese (Japan)ja-JPStandardFemalePolly.Mizuki
Japanese (Japan)ja-JPStandardMalePolly.Takumi
Japanese (Japan)ja-JPPremiumMalePolly.Takumi-Neural
Japanese (Japan)ja-JPPremiumFemalePolly.Kazuha-Neural
Japanese (Japan)ja-JPPremiumFemalePolly.Tomoko-Neural
Japanese (Japan)ja-JPStandardFemaleGoogle.ja-JP-Standard-B
Japanese (Japan)ja-JPStandardMaleGoogle.ja-JP-Standard-C
Japanese (Japan)ja-JPStandardMaleGoogle.ja-JP-Standard-D
Japanese (Japan)ja-JPPremiumFemaleGoogle.ja-JP-Wavenet-B
Japanese (Japan)ja-JPPremiumMaleGoogle.ja-JP-Wavenet-C
Japanese (Japan)ja-JPPremiumMaleGoogle.ja-JP-Wavenet-D
Korean (South Korea)ko-KRStandardFemalePolly.Seoyeon
Korean (South Korea)ko-KRPremiumFemalePolly.Seoyeon-Neural
Korean (South Korea)ko-KRStandardFemaleGoogle.ko-KR-Standard-A
Korean (South Korea)ko-KRStandardFemaleGoogle.ko-KR-Standard-B
Korean (South Korea)ko-KRStandardMaleGoogle.ko-KR-Standard-C
Korean (South Korea)ko-KRStandardMaleGoogle.ko-KR-Standard-D
Korean (South Korea)ko-KRPremiumFemaleGoogle.ko-KR-Wavenet-A
Korean (South Korea)ko-KRPremiumFemaleGoogle.ko-KR-Wavenet-B
Korean (South Korea)ko-KRPremiumMaleGoogle.ko-KR-Wavenet-C
Korean (South Korea)ko-KRPremiumMaleGoogle.ko-KR-Wavenet-D
Korean (South Korea)ko-KRPremiumFemaleGoogle.ko-KR-Neural2-A
Korean (South Korea)ko-KRPremiumFemaleGoogle.ko-KR-Neural2-B
Korean (South Korea)ko-KRPremiumMaleGoogle.ko-KR-Neural2-C
Latvian (Latvia)lv-LVStandardMaleGoogle.lv-LV-Standard-A
Lithuanian (Lithuania)lt-LTStandardMaleGoogle.lt-LT-Standard-A
Malay (Malaysia)ms-MYStandardFemaleGoogle.ms-MY-Standard-A
Malay (Malaysia)ms-MYStandardMaleGoogle.ms-MY-Standard-B
Malay (Malaysia)ms-MYStandardFemaleGoogle.ms-MY-Standard-C
Malay (Malaysia)ms-MYStandardMaleGoogle.ms-MY-Standard-D
Malay (Malaysia)ms-MYPremiumFemaleGoogle.ms-MY-Wavenet-A
Malay (Malaysia)ms-MYPremiumMaleGoogle.ms-MY-Wavenet-B
Malay (Malaysia)ms-MYPremiumFemaleGoogle.ms-MY-Wavenet-C
Malay (Malaysia)ms-MYPremiumMaleGoogle.ms-MY-Wavenet-D
Malayalam (India)ml-INPremiumFemaleGoogle.ml-IN-Wavenet-C
Malayalam (India)ml-INPremiumMaleGoogle.ml-IN-Wavenet-D
Marathi (India)mr-INStandardFemaleGoogle.mr-IN-Standard-A
Marathi (India)mr-INStandardMaleGoogle.mr-IN-Standard-B
Marathi (India)mr-INStandardFemaleGoogle.mr-IN-Standard-C
Marathi (India)mr-INPremiumFemaleGoogle.mr-IN-Wavenet-A
Marathi (India)mr-INPremiumMaleGoogle.mr-IN-Wavenet-B
Marathi (India)mr-INPremiumFemaleGoogle.mr-IN-Wavenet-C
Norwegian (Norway)nb-NOStandardFemalePolly.Liv
Norwegian (Norway)nb-NOPremiumFemalePolly.Ida-Neural
Norwegian (Norway)nb-NOStandardFemaleGoogle.nb-NO-Standard-A
Norwegian (Norway)nb-NOStandardMaleGoogle.nb-NO-Standard-B
Norwegian (Norway)nb-NOStandardFemaleGoogle.nb-NO-Standard-C
Norwegian (Norway)nb-NOStandardMaleGoogle.nb-NO-Standard-D
Norwegian (Norway)nb-NOStandardFemaleGoogle.nb-NO-Standard-E
Norwegian (Norway)nb-NOPremiumFemaleGoogle.nb-NO-Wavenet-A
Norwegian (Norway)nb-NOPremiumMaleGoogle.nb-NO-Wavenet-B
Norwegian (Norway)nb-NOPremiumFemaleGoogle.nb-NO-Wavenet-C
Norwegian (Norway)nb-NOPremiumMaleGoogle.nb-NO-Wavenet-D
Norwegian (Norway)nb-NOPremiumFemaleGoogle.nb-NO-Wavenet-E
Polish (Poland)pl-PLStandardMalePolly.Jacek
Polish (Poland)pl-PLStandardMalePolly.Jan
Polish (Poland)pl-PLStandardFemalePolly.Ewa
Polish (Poland)pl-PLStandardFemalePolly.Maja
Polish (Poland)pl-PLPremiumFemalePolly.Ola-Neural
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Standard-A
Polish (Poland)pl-PLPremiumMaleGoogle.pl-PL-Standard-B
Polish (Poland)pl-PLPremiumMaleGoogle.pl-PL-Standard-C
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Standard-D
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Standard-E
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Wavenet-A
Polish (Poland)pl-PLPremiumMaleGoogle.pl-PL-Wavenet-B
Polish (Poland)pl-PLPremiumMaleGoogle.pl-PL-Wavenet-C
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Wavenet-D
Polish (Poland)pl-PLPremiumFemaleGoogle.pl-PL-Wavenet-E
Portuguese (Brazil)pt-BRStandardFemalePolly.Camila
Portuguese (Brazil)pt-BRStandardMalePolly.Ricardo
Portuguese (Brazil)pt-BRStandardFemalePolly.Vitória/Polly.Vitoria
Portuguese (Brazil)pt-BRPremiumFemalePolly.Camila-Neural
Portuguese (Brazil)pt-BRPremiumFemalePolly.Vitoria-Neural
Portuguese (Brazil)pt-BRPremiumMalePolly.Thiago-Neural
Portuguese (Brazil)pt-BRStandardMaleGoogle.pt-BR-Standard-B
Portuguese (Brazil)pt-BRStandardFemaleGoogle.pt-BR-Standard-C
Portuguese (Brazil)pt-BRPremiumMaleGoogle.pt-BR-Wavenet-B
Portuguese (Brazil)pt-BRPremiumFemaleGoogle.pt-BR-Wavenet-C
Portuguese (Brazil)pt-BRPremiumFemaleGoogle.pt-BR-Neural2-A
Portuguese (Brazil)pt-BRPremiumMaleGoogle.pt-BR-Neural2-B
Portuguese (Brazil)pt-BRPremiumFemaleGoogle.pt-BR-Neural2-C
Portuguese (Portugal)pt-PTStandardMalePolly.Cristiano
Portuguese (Portugal)pt-PTStandardFemalePolly.Inês/Polly.Ines
Portuguese (Portugal)pt-PTPremiumFemalePolly.Ines-Neural
Portuguese (Portugal)pt-PTStandardFemaleGoogle.pt-PT-Standard-A
Portuguese (Portugal)pt-PTStandardMaleGoogle.pt-PT-Standard-B
Portuguese (Portugal)pt-PTStandardMaleGoogle.pt-PT-Standard-C
Portuguese (Portugal)pt-PTStandardFemaleGoogle.pt-PT-Standard-D
Portuguese (Portugal)pt-PTPremiumFemaleGoogle.pt-PT-Wavenet-A
Portuguese (Portugal)pt-PTPremiumMaleGoogle.pt-PT-Wavenet-B
Portuguese (Portugal)pt-PTPremiumMaleGoogle.pt-PT-Wavenet-C
Portuguese (Portugal)pt-PTPremiumFemaleGoogle.pt-PT-Wavenet-D
Punjabi (India)pa-INStandardFemaleGoogle.pa-IN-Standard-A
Punjabi (India)pa-INStandardMaleGoogle.pa-IN-Standard-B
Punjabi (India)pa-INStandardFemaleGoogle.pa-IN-Standard-C
Punjabi (India)pa-INStandardMaleGoogle.pa-IN-Standard-D
Punjabi (India)pa-INPremiumFemaleGoogle.pa-IN-Wavenet-A
Punjabi (India)pa-INPremiumMaleGoogle.pa-IN-Wavenet-B
Punjabi (India)pa-INPremiumFemaleGoogle.pa-IN-Wavenet-C
Punjabi (India)pa-INPremiumMaleGoogle.pa-IN-Wavenet-D
Romanian (Romania)ro-ROStandardFemalePolly.Carmen
Romanian (Romania)ro-ROStandardFemaleGoogle.ro-RO-Standard-A
Romanian (Romania)ro-ROPremiumFemaleGoogle.ro-RO-Wavenet-A
Russian (Russia)ru-RUStandardMalePolly.Maxim
Russian (Russia)ru-RUStandardFemalePolly.Tatyana
Russian (Russia)ru-RUStandardFemaleGoogle.ru-RU-Standard-A
Russian (Russia)ru-RUStandardMaleGoogle.ru-RU-Standard-B
Russian (Russia)ru-RUStandardFemaleGoogle.ru-RU-Standard-C
Russian (Russia)ru-RUStandardMaleGoogle.ru-RU-Standard-D
Russian (Russia)ru-RUStandardFemaleGoogle.ru-RU-Standard-E
Russian (Russia)ru-RUPremiumFemaleGoogle.ru-RU-Wavenet-A
Russian (Russia)ru-RUPremiumMaleGoogle.ru-RU-Wavenet-B
Russian (Russia)ru-RUPremiumFemaleGoogle.ru-RU-Wavenet-C
Russian (Russia)ru-RUPremiumMaleGoogle.ru-RU-Wavenet-D
Russian (Russia)ru-RUPremiumFemaleGoogle.ru-RU-Wavenet-E
Serbian (Cyrillic)sr-RSStandardFemaleGoogle.sr-RS-Standard-A
Slovak (Slovakia)sk-SKStandardFemaleGoogle.sk-SK-Standard-A
Slovak (Slovakia)sk-SKPremiumFemaleGoogle.sk-SK-Wavenet-A
Spanish (Mexico)es-MXBasicMaleMan
Spanish (Mexico)es-MXBasicFemaleWoman
Spanish (Mexico)es-MXStandardFemalePolly.Mia
Spanish (Mexico)es-MXPremiumFemalePolly.Mia-Neural
Spanish (Mexico)es-MXPremiumMalePolly.Andres-Neural
Spanish (Spain)es-ESBasicMaleMan
Spanish (Spain)es-ESBasicFemaleWoman
Spanish (Spain)es-ESStandardFemalePolly.Conchita
Spanish (Spain)es-ESStandardMalePolly.Enrique
Spanish (Spain)es-ESStandardFemalePolly.Lucia
Spanish (Spain)es-ESPremiumFemalePolly.Lucia-Neural
Spanish (Spain)es-ESPremiumMalePolly.Sergio-Neural
Spanish (Spain)es-ESStandardMaleGoogle.es-ES-Standard-B
Spanish (Spain)es-ESStandardFemaleGoogle.es-ES-Standard-C
Spanish (Spain)es-ESStandardFemaleGoogle.es-ES-Standard-D
Spanish (Spain)es-ESPremiumMaleGoogle.es-ES-Wavenet-B
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Wavenet-C
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Wavenet-D
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Neural2-A
Spanish (Spain)es-ESPremiumMaleGoogle.es-ES-Neural2-B
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Neural2-C
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Neural2-D
Spanish (Spain)es-ESPremiumFemaleGoogle.es-ES-Neural2-E
Spanish (Spain)es-ESPremiumMaleGoogle.es-ES-Neural2-F
Spanish (US)es-USBasicMaleMan
Spanish (US)es-USBasicFemaleWoman
Spanish (US)es-USStandardFemalePolly.Lupe
Spanish (US)es-USStandardMalePolly.Miguel
Spanish (US)es-USStandardFemalePolly.Penélope/Polly.Penelope
Spanish (US)es-USPremiumFemalePolly.Lupe-Neural
Spanish (US)es-USPremiumMalePolly.Pedro-Neural
Spanish (US)es-USStandardFemaleGoogle.es-US-Standard-A
Spanish (US)es-USStandardMaleGoogle.es-US-Standard-B
Spanish (US)es-USStandardMaleGoogle.es-US-Standard-C
Spanish (US)es-USPremiumFemaleGoogle.es-US-Wavenet-A
Spanish (US)es-USPremiumMaleGoogle.es-US-Wavenet-B
Spanish (US)es-USPremiumMaleGoogle.es-US-Wavenet-C
Spanish (US)es-USPremiumFemaleGoogle.es-US-Neural2-A
Spanish (US)es-USPremiumMaleGoogle.es-US-Neural2-B
Spanish (US)es-USPremiumMaleGoogle.es-US-Neural2-C
Swedish (Sweden)sv-SEStandardFemalePolly.Astrid
Swedish (Sweden)sv-SEPremiumFemalePolly.Elin-Neural
Swedish (Sweden)sv-SEStandardFemaleGoogle.sv-SE-Standard-A
Swedish (Sweden)sv-SEStandardFemaleGoogle.sv-SE-Standard-B
Swedish (Sweden)sv-SEStandardFemaleGoogle.sv-SE-Standard-C
Swedish (Sweden)sv-SEStandardMaleGoogle.sv-SE-Standard-D
Swedish (Sweden)sv-SEStandardMaleGoogle.sv-SE-Standard-E
Swedish (Sweden)sv-SEPremiumFemaleGoogle.sv-SE-Wavenet-A
Swedish (Sweden)sv-SEPremiumFemaleGoogle.sv-SE-Wavenet-B
Swedish (Sweden)sv-SEPremiumMaleGoogle.sv-SE-Wavenet-C
Swedish (Sweden)sv-SEPremiumFemaleGoogle.sv-SE-Wavenet-D
Swedish (Sweden)sv-SEPremiumMaleGoogle.sv-SE-Wavenet-E
Tamil (India)ta-INStandardFemaleGoogle.ta-IN-Standard-C
Tamil (India)ta-INStandardMaleGoogle.ta-IN-Standard-D
Tamil (India)ta-INPremiumFemaleGoogle.ta-IN-Wavenet-C
Tamil (India)ta-INPremiumMaleGoogle.ta-IN-Wavenet-D
Telugu (India)te-INStandardFemaleGoogle.te-IN-Standard-A
Telugu (India)te-INStandardMaleGoogle.te-IN-Standard-B
Thai (Thailand)th-THStandardFemaleGoogle.th-TH-Standard-A
Turkish (Turkey)tr-TRStandardFemalePolly.Filiz
Turkish (Turkey)tr-TRStandardFemaleGoogle.tr-TR-Standard-A
Turkish (Turkey)tr-TRStandardMaleGoogle.tr-TR-Standard-B
Turkish (Turkey)tr-TRStandardFemaleGoogle.tr-TR-Standard-C
Turkish (Turkey)tr-TRStandardFemaleGoogle.tr-TR-Standard-D
Turkish (Turkey)tr-TRStandardMaleGoogle.tr-TR-Standard-E
Turkish (Turkey)tr-TRPremiumFemaleGoogle.tr-TR-Wavenet-A
Turkish (Turkey)tr-TRPremiumMaleGoogle.tr-TR-Wavenet-B
Turkish (Turkey)tr-TRPremiumFemaleGoogle.tr-TR-Wavenet-C
Turkish (Turkey)tr-TRPremiumFemaleGoogle.tr-TR-Wavenet-D
Turkish (Turkey)tr-TRPremiumMaleGoogle.tr-TR-Wavenet-E
Ukrainian (Ukraine)uk-UAStandardFemaleGoogle.uk-UA-Standard-A
Ukrainian (Ukraine)uk-UAPremiumFemaleGoogle.uk-UA-Wavenet-A
Vietnamese (Vietnam)vi-VNStandardFemaleGoogle.vi-VN-Standard-A
Vietnamese (Vietnam)vi-VNStandardMaleGoogle.vi-VN-Standard-B
Vietnamese (Vietnam)vi-VNStandardFemaleGoogle.vi-VN-Standard-C
Vietnamese (Vietnam)vi-VNStandardMaleGoogle.vi-VN-Standard-D
Vietnamese (Vietnam)vi-VNPremiumFemaleGoogle.vi-VN-Wavenet-A
Vietnamese (Vietnam)vi-VNPremiumMaleGoogle.vi-VN-Wavenet-B
Vietnamese (Vietnam)vi-VNPremiumFemaleGoogle.vi-VN-Wavenet-C
Vietnamese (Vietnam)vi-VNPremiumMaleGoogle.vi-VN-Wavenet-D
Welshcy-GBStandardFemalePolly.Gwyneth

Default voice and language

default-voice-and-language page anchor

The Text To Speech page in the Twilio Console(link takes you to an external page) allows you to define a default voice and language for your Account. These defaults are used when no language or voice attribute is provided in your <Say> TwiML. If you are using Studio, the defaults are used when "Default" is selected.

You can test different voices and messages in this section of the Console.

The Text To Speech Settings Console page shows the Default Provider set to 'Basic'.

In the screenshot above, the DEFAULT PROVIDER is set to Basic and the DEFAULT VOICE is set to Man, en-US. With these TTS settings, Twilio uses the Man voice and the en-US (American English) accent and pronunciation when executing the following TwiML:


_10
<Response>
_10
<Say>Hello. I am a man!</Say>
_10
</Response>

(information)

Info

Twilio updates the Text To Speech voices offering regularly. In order to have access to the latest voices without the need to review your code to change a voice for a new one, it is recommended to use the Language Mapping feature. Your application only needs the language and the text, and Twilio will automatically select and use the corresponding voice that can be updated any time from the Console.

On the Text to Speech page in the Console, you can set a voice for every locale. This means that you can specify the language without needing to specifying the voice when using TTS capabilities in your application.

To set a voice for a locale, complete the following:

Console screenshot showing the steps for configuring Language Mapping. Steps described in page text below this.
  1. Under the Current Language Mapping heading, click on the language/locale you wish to configure, e.g. English (British)(en-GB) .
  2. In the Test & Configure Voices By Language modal, select the PROVIDER and VOICE you wish to use, e.g. Amazon Polly and Emma .
  3. Click Save .
  4. Repeat steps 1-3 for other languages/locales if necessary.

For example, if you configure English (British)(en-GB) to use Amazon Polly and Emma, Twilio uses the Amazon Polly Emma voice when executing <Say> with the language attribute set to en-GB and no voice attribute (see TwiML example below).


_10
<Response>
_10
<Say language="en-GB">Hello. I am Emma!</Say>
_10
</Response>


Override default settings

override-default-settings page anchor

Override default providers/voices

override-default-providersvoices page anchor

<Say>'s voice attribute allows you to override any default provider/voice settings that were configured in the Console (i.e. Account-level and Language Mapping defaults).

For example, if your Account's default TTS voice is Amazon Polly Salli but you want to use Amazon Polly Joanna for a specific call, set the voice attribute to Polly.Joanna:


_10
<Response>
_10
<Say voice="Polly.Joanna">Hello. I am Joanna!</Say>
_10
</Response>

You can also use the voice attribute to override a Language Mapping's defaults.

For example, if your Language Mapping for English (British)(en-GB) uses Amazon Polly and Emma but you want to use the Amazon Polly Joanna voice for a specific <Say> instruction, you would use the voice attribute set to Polly.Joanna. The TwiML below causes Twilio to use the Amazon Polly Joanna voice, which overrides your Account's default Language Mapping:


_10
<Response>
_10
<Say language="en-GB" voice="Polly.Joanna">Hello. I am Joanna!</Say>
_10
</Response>

Override default language/locales

override-default-languagelocales page anchor

<Say>'s language attribute allows you to override any default language/locale settings that were configured in the Console.

For example, if your Account's default TTS Language is English (US) (en-US), but wish to use German for a specific call, set the language attribute to de-DE in your TwiML:


_10
<Response>
_10
<Say language="de-DE">Hallo. Ich spreche Deutsch!</Say>
_10
</Response>


(information)

Info

SSML support is only available in Standard and Premium voices.

Speech Synthesis Markup Language (SSML)(link takes you to an external page) uses XML-based tags that allow you to fine-tune the synthesized speech generated by TTS. SSML functionality includes the ability to: specify where pauses should be, provide pronunciations for acronyms, abbreviations, dates and times, and increase or decrease the speed at which text is spoken.

While the W3C specification covers many capabilities, Twilio currently only supports a subset of them.

In addition, SSML support (including tags and accepted values) may differ between TTS providers and/or may be limited to specific voices. Review the provider-specific SSML documentation and test your application. Use of unsupported SSML tags with any TTS provider may result in error and <Say> instruction failure.

(information)

Info

As per the SSML specification(link takes you to an external page), the root element for SSML starts with <speak>. However, when you are using SSML with <Say> it is not needed, so you can skip <speak> and insert the rest of the SSML inside <Say> directly.

The table below lists the supported SSML tags, but you should refer to the appropriate, provider-specific documentation to ensure you're using the SSML tags correctly.

ActionSSML tagProvider documentation
Add a pause<break>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Emphasize words<emphasis>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Specify another language for specific words<lang>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Add a pause between paragraphs<p>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Use phonetic pronunciation<phoneme>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Control volume, speaking rate, and pitch<prosody>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Add a pause between sentences<s>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Control how special types of words are spoken<say-as>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Pronounce acronyms and abbreviations<sub>Amazon Polly(link takes you to an external page) ; Google(link takes you to an external page)
Improve pronunciation by specifying parts of speech<w>Amazon Polly(link takes you to an external page) ; Google N/A

Modify speed and volume of synthesized speech

modify-speed-and-volume-of-synthesized-speech page anchor

The SSML <prosody> tag allows you to control the volume, rate, and pitch of synthesized speech.


_10
<Response>
_10
<Say voice="Polly.Joanna">
_10
Prosody can be used to change the way words sound. The following words are
_10
<prosody volume="x-loud"> quite a bit louder than the rest of this passage.
_10
</prosody> Each morning when I wake up, <prosody rate="x-slow">I speak slowly and
_10
deliberately until I have my coffee.</prosody> I can also change the pitch of my voice
_10
using prosody. Do you like <prosody pitch="+5%"> speech with a pitch higher,</prosody>
_10
or <prosody pitch="-10%"> is a lower pitch preferable?</prosody>
_10
</Say>
_10
</Response>

Read a phone number correctly

read-a-phone-number-correctly page anchor

The SSML <say-as> tag allows you to indicate specific categories of text, so that the synthesized speech pronounces the text correctly.

Without <say-as>, a phone number would be pronounced as a number, e.g. "four billion, one hundred fifty-five million, five hundred fifty-one thousand, two hundred twelve."

The TwiML example below uses <say-as> so that the synthesized speech reads the phone number as "four one five, five five five, one two one two."


_10
<Response>
_10
<Say voice="Polly.Joanna">John's phone number is, <say-as interpret-as="telephone">4155551212</say-as></Say>
_10
</Response>

Generate SSML with Twilio's Helper Libraries

generate-ssml-with-twilios-helper-libraries page anchor

You can generate TwiML with SSML within the <Say> verb using one of Twilio's helper libraries for C#(link takes you to an external page), Java(link takes you to an external page), Node.js(link takes you to an external page), PHP(link takes you to an external page), Python(link takes you to an external page), Ruby(link takes you to an external page), or Go(link takes you to an external page).

The code sample below shows Helper Library code that generates the following SSML and TwiML:


_16
<Response>
_16
<Say voice="Polly.Joanna">
_16
Hi
_16
<break strength="x-weak" time="100ms"/>
_16
<emphasis level="moderate">Words to emphasize</emphasis>
_16
<p>Words to speak</p>
_16
aaaaaa
_16
<phoneme alphabet="x-sampa" ph="pɪˈkɑːn">Words to speak</phoneme>
_16
bbbbbbb
_16
<prosody pitch="-10%" rate="85%" volume="-6dB">Words to speak</prosody>
_16
<s>Words to speak</s>
_16
<say-as interpret-as="spell-out">Words to speak</say-as>
_16
<sub alias="alias">Words to be substituted</sub>
_16
<w>Words to speak</w>
_16
</Say>
_16
</Response>

SSML with Helper Library Example

ssml-with-helper-library-example page anchor
Node.js
Python
C#
Java
PHP
Ruby

_36
const VoiceResponse = require('twilio').twiml.VoiceResponse;
_36
_36
const response = new VoiceResponse();
_36
const say = response.say({
_36
voice: 'Polly.Joanna'
_36
}, 'Hi');
_36
say.break({
_36
strength: 'x-weak',
_36
time: '100ms'
_36
});
_36
say.emphasis({
_36
level: 'moderate'
_36
}, 'Words to emphasize');
_36
say.p('Words to speak');
_36
say.addText('aaaaaa')
_36
say.phoneme({
_36
alphabet: 'x-sampa',
_36
ph: 'pɪˈkɑːn'
_36
}, 'Words to speak');
_36
say.addText('bbbbbbb')
_36
say.prosody({
_36
pitch: '-10%',
_36
rate: '85%',
_36
volume: '-6dB'
_36
}, 'Words to speak');
_36
say.s('Words to speak');
_36
say.sayAs({
_36
'interpret-as': 'spell-out',
_36
role: 'yyyymmdd'
_36
}, 'Words to speak');
_36
say.sub({
_36
alias: 'alias'
_36
}, 'Words to be substituted');
_36
say.w('Words to speak');
_36
_36
console.log(response.toString());

Output

_16
<Response>
_16
<Say voice="Polly.Joanna">
_16
Hi
_16
<break strength="x-weak" time="100ms"/>
_16
<emphasis level="moderate">Words to emphasize</emphasis>
_16
<p>Words to speak</p>
_16
aaaaaa
_16
<phoneme alphabet="x-sampa" ph="pɪˈkɑːn">Words to speak</phoneme>
_16
bbbbbbb
_16
<prosody pitch="-10%" rate="85%" volume="-6dB">Words to speak</prosody>
_16
<s>Words to speak</s>
_16
<say-as interpret-as="spell-out">Words to speak</say-as>
_16
<sub alias="alias">Words to be substituted</sub>
_16
<w>Words to speak</w>
_16
</Say>
_16
</Response>


  • There is a 4,000 character limit on text that <Say> can process with Basic voices ( man and woman ).
  • Basic voices ( man and woman ) don't support SSML tags.
  • There is a 3,000 character limit on text, non-SSML, that <Say> can process with Amazon Polly voices.
  • Amazon-specific SSML tags such as <amazon:auto-breath> or <amazon:effect> among others are not currently supported.
  • Lexicons are not supported in Amazon Polly voices.
  • SSML support in Amazon TTS may vary between Polly and Polly Neural voices, please refer to the Amazon Polly SSML documentation(link takes you to an external page) for detailed information
  • SSML support in Google TTS may vary between Standard, WaveNet and Neural2 voices, please refer to Google SSML documentation(link takes you to an external page) for detailed information
  • There is a 5,000 character limit on text, including SSML, that <Say> can process with Google voices.
  • SSML tags, newlines and spaces are included in the total character count by Google TTS hence billed.
  • Google-specific SSML tags such as <par> or <seq> among others are not currently supported.

Note: Use of unsupported SSML tags with any TTS provider may result in error and <Say> instruction failure. Please review provider-specific SSML documentation and test your application


Basic voices (man and woman) are free of charge.

Standard voices (Amazon Polly and Google Standard) pricing starts at $0.0008 per 100 characters with the following volume discounts:

05,000,000$0.00080
5,000,00150,000,000$0.00072
50,000,001100,000,000$0.00068
100,000,001$0.00064
Minimum charactersMaximum charactersPrice per 100 characters*

* Usage is rounded towards the end of call and priced in blocks of 100 characters. For example, if 546 characters are used on a call, then you're charged $0.004 for the use of Standard voices on that call. However, if less than 100 characters are used, you're charged $0.0008, even for using just one character.

Premium voices (Amazon Polly Neural, Google WaveNet and Google Neural2) price starts at $0.0032/100 characters with the following volume discounts:

05,000,000$0.0032
5,000,00150,000,000$0.0029
50,000,001100,000,000$0.0027
100,000,001$0.0025
Minimum charactersMaximum charactersPrice per 100 characters*

* Usage is rounded towards the end of call and priced in blocks of 100 characters. For example, if 546 characters are used on a call, then you're charged $0.016 for the use of Premium voices on that call. However, if less than 100 characters are used, you're charged $0.0032, even for using just one character.


Rate this page: