本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SynthesizeSpeech
将 UTF-8 输入、纯文本或 SSML 合成为字节流。SSML 输入必须是有效的、格式正确的 SSML。除非使用音位映射,否则某些字母可能不适用于所有语音(例如,英语语音可能根本无法读懂西里尔字母)。有关更多信息,请参阅的工作原理。
请求语法
POST /v1/speech HTTP/1.1
Content-type: application/json
{
"Engine": "string
",
"LanguageCode": "string
",
"LexiconNames": [ "string
" ],
"OutputFormat": "string
",
"SampleRate": "string
",
"SpeechMarkTypes": [ "string
" ],
"Text": "string
",
"TextType": "string
",
"VoiceId": "string
"
}
URI 请求参数
该请求不使用任何 URI 参数。
请求正文
请求接受采用 JSON 格式的以下数据。
- Engine
-
指定 Amazon Polly 在处理用于语音合成的输入文本时使用的引擎(
standard
或neural
)。有关 Amazon Polly 语音以及哪些语音以仅限标准版、仅限 NTTS 格式以及标准和 NTTS 格式提供哪些语音的信息,请参阅可用语音。仅限 NTTS 的声音
当使用 Kevin (en-US) 等仅限 NTTS 的声音时,此参数是必需的,必须设置为
neural
。如果未指定引擎或将其设置为standard
,则会导致错误。类型:字符串
有效值:
standard
|neural
必需:是
标准语音
对于标准语音,这不是必需的;引擎参数默认为
standard
。如果未指定引擎,或者将其设置为standard
并选择了仅限 NTTS 的语音,则会导致错误。类型:字符串
有效值:
standard | neural
必需:否
- LanguageCode
-
合成语音请求的可选语言代码。只有在使用双语语音(例如 Aditi)时,才需要这样做,后者可以用于印度英语(en-in)或印地语(Hi-in)。
如果使用双语语音但未指定语言代码,Amazon Polly 将使用双语语音的默认语言。任何声音的默认语言都是
LanguageCode
参数DescribeVoices操作返回的语言。例如,如果未指定语言代码,Aditi 将使用印度英语而不是印地语。类型:字符串
有效值:
arb | cmn-CN | cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | en-US | es-ES | es-MX | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | hi-IN | ko-KR | nb-NO | nl-NL | pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR | en-NZ | en-ZA
必需:否
- LexiconNames
-
你希望该服务在合成过程中应用的一个或多个发音词典名称的列表。只有当词典的语言与语音的语言相同时,词典才会适用。有关存储词典的信息,请参见PutLexicon。
类型:字符串数组
数组成员:最多 5 项。
模式:
[0-9A-Za-z]{1,20}
必需:否
- OutputFormat
-
对返回的输出进行编码的格式。对于音频直播,这将是 mp3、ogg_vorbis 或 pcm。对于语音标记,这将是 json。
使用 pcm 时,返回的内容是带符号的 16 位 1 通道(mono 声道)、小端序格式的音频/pcm。
类型:字符串
有效值:
json | mp3 | ogg_vorbis | pcm
必需:是
- SampleRate
-
以 Hz 为单位指定的音频频率。
mp3 和 ogg_vorbis 的有效值为 “80000”、“16000”、“22050” 和 “240000”。标准语音的默认值为 “22050”。神经语音的默认值为 “24000”。
pcm 的有效值为 “8000” 和 “16000” 默认值为 “160000”。
类型:字符串
必需:否
- SpeechMarkTypes
-
为输入文本返回的语音标记类型。
类型:字符串数组
数组成员:最多 4 项。
有效值:
sentence | ssml | viseme | word
必需:否
- Text
-
输入要合成的文本。如果您指定
ssml
为TextType
,请按照 SSML 格式输入文本。类型:字符串
必需:是
- TextType
-
指定输入文本是纯文本还是 SSML。默认值为纯文本。有关更多信息,请参阅使用 SSML。
类型:字符串
有效值:
ssml | text
必需:否
- VoiceId
-
要用于合成的语音 ID。您可以通过调用该DescribeVoices操作获取可用语音 ID 的列表。
类型:字符串
有效值:
Aditi | Amy | Astrid | Bianca | Brian | Camila | Carla | Carmen | Celine | Chantal | Conchita | Cristiano | Dora | Emma | Enrique | Ewa | Filiz | Gabrielle | Geraint | Giorgio | Gwyneth | Hans | Ines | Ivy | Jacek | Jan | Joanna | Joey | Justin | Karl | Kendra | Kevin | Kimberly | Lea | Liv | Lotte | Lucia | Lupe | Mads | Maja | Marlene | Mathieu | Matthew | Maxim | Mia | Miguel | Mizuki | Naja | Nicole | Olivia | Penelope | Raveena | Ricardo | Ruben | Russell | Salli | Seoyeon | Takumi | Tatyana | Vicki | Vitoria | Zeina | Zhiyu | Aria | Ayanda
必需:是
响应语法
HTTP/1.1 200
Content-Type: ContentType
x-amzn-RequestCharacters: RequestCharacters
AudioStream
响应元素
如果此操作成功,则该服务将会发送回 HTTP 200 响应。
响应将返回以下 HTTP 标头。
- ContentType
-
指定音频流的类型。这应该反映您的请求中的
OutputFormat
参数。-
如果您以 audio/mpeg
mp3
身份请求OutputFormat
,则ContentType
返回的是 audio/mpeg。 -
如果您以 audio/ogg
ogg_vorbis
身份请求OutputFormat
,则ContentType
返回的是 audio/ogg。 -
如果您请求
pcm
为OutputFormat
,则ContentType
返回的是 audio/pcm,采用带符号 16 位、1 通道(mono 声道)、小端字节序格式。 -
如果您以 audio/json
json
身份请求OutputFormat
,则ContentType
返回的是 audio/json。
-
- RequestCharacters
-
合成的字符数。
响应将以下内容作为 HTTP 正文返回。
- AudioStream
-
包含合成语音的直播。
错误
- EngineNotSupportedException
-
此引擎与您指定的语音不兼容。选择与引擎兼容的新声音,或者更换引擎并重新启动操作。
HTTP 状态代码:400
- InvalidSampleRateException
-
指定的采样率无效。
HTTP 状态代码:400
- InvalidSsmlException
-
您提供的 SSML 无效。验证 SSML、标签和值的拼写,然后重试。
HTTP 状态代码:400
- LanguageNotSupportedException
-
Amazon Polly 目前不以这种身份支持指定的语言。
HTTP 状态代码:400
- LexiconNotFoundException
-
Amazon Polly 找不到指定的词典。这可能是由于词典缺失、名称拼写错误或指定了位于不同区域的词典所致。
验证词典是否存在、位于该区域(参见ListLexicons)以及您拼写的词典名称拼写是否正确。然后重试。
HTTP 状态代码:404
- MarksNotSupportedForFormatException
-
OutputFormat
所选内容不支持语音标记。语音标记仅适用于json
格式化内容。HTTP 状态代码:400
- ServiceFailureException
-
未知情况导致服务故障。
HTTP 状态代码:500
- SsmlMarksNotSupportedForTextTypeException
-
纯文本类型输入不支持 SSML 语音标记。
HTTP 状态代码:400
- TextLengthExceededException
-
“文本” 参数的值长于可接受的限制。对于
SynthesizeSpeech
API,输入文本的总限制最多为 6000 个字符,其中最多可以计费 3000 个字符。对于StartSpeechSynthesisTask
API,最大值为 200,000 个字符,其中不能超过 100,000 个字符作为计费字符。SSML 标签不会算作计费字符。HTTP 状态代码:400
另请参阅
有关在特定语言的 Amazon 软件开发工具包中使用此 API 的更多信息,请参阅以下内容: