Amazon Polly
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 SSML (AWS CLI)

您可以使用 AWS CLI 合成 SSML 输入文本。以下示例说明如何使用 AWS CLI 执行常见任务。

通过合成语音命令使用 SSML

此示例展示了如何使用具有 SSML 字符串的 synthesize-speech 命令。在使用 synthesize-speech 命令时,通常您需要提供以下要素:

  • 输入文本(必需)

  • 开始和结束标签(必需)

  • 输出格式

  • 语音

在此示例中,您通过引号指定简单的文本字符串,以及必要的开始和结束 <speak></speak> 标签。

重要

在 Amazon Polly 控制台中不需要将输入文本放在引号中,但使用 AWS CLI 必须将输入文本放在引号中。另外一项重要的注意事项是,您需要区分输入文本两端的引号和个别标签需要使用的引号。

例如,您可以在输入文本两端使用标准引号 ("),并将单引号 (') 用于内部标签,也可相反使用。Unix、Linux 和 macOS 适用于这两种选项。但对于 Windows,必须在输入文本两端使用标准引号,并将单引号用于标签。

对于所有操作系统,您都可以在输入文本两端使用标准引号 ("),并将单引号 (') 用于内部标签。例如:

--text "<speak>Hello <break time='300ms'/> World</speak>"

对于 Unix、Linux 和 macOS,您也可以在输入文本两端使用单引号 ('),并将标准引号 (") 用于内部标签:

--text '<speak>Hello <break time="300ms"/> World</speak>'

以下 AWS CLI 示例针对 Linux、Unix 和 macOS 编排了格式。对于 Windows,请将每行末尾处的反斜杠 (\) Unix 继续符替换为脱字号 (^),并对输入文本使用双引号 ("),对内部标签使用单引号 (')。

aws polly synthesize-speech \ --text-type ssml \ --text '<speak>Hello world</speak>' \ --output-format mp3 \ --voice-id Joanna \ speech.mp3

要试听合成语音,请使用任何播放器播放生成的 speech.mp3 文件。

合成 SSML 增强文档

如果输入文本较长,可能将 SSML 内容保存为文件,简单地在 synthesize-speech 命令中指定文件名更加方便。例如,您可以把以下内容保存为名为 example.xml 的文件:

<?xml version="1.0"?> <speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis11/synthesis.xsd" xml:lang="en-US">Hello World</speak>

xml:lang 属性指定 en-US (美国英语) 作为输入文本的语言。有关输入文本的语言和所选语音的语言对 SynthesizeSpeech 操作的影响,请参阅 改善外语词汇的发音

要运行 SSML 增强文件

  1. 将 SSML 保存为文件 (例如 example.xml)。

  2. 从存储 XML 文件的路径运行以下 synthesize-speech 命令,并用 file:\\example.xml 替换输入文本,指定 SSML 文件作为输入。由于此命令指向一个文件,不包含实际输入文本,所以您不需要使用引号。

    注意

    以下 AWS CLI 示例格式适用于 Unix、Linux 和 macOS。对于 Windows,请将每行末尾的反斜杠 (\) Unix 行继续符替换为脱字号 (^)。

    aws polly synthesize-speech \ --text-type ssml \ --text file://example.xml \ --output-format mp3 \ --voice-id Joanna \ speech.mp3
  3. 要试听合成语音,请使用任何播放器播放生成的 speech.mp3 文件。

将 SSML 用于常见 Amazon Polly 任务

以下示例展示了如何使用 SSML 标签完成常见的 Amazon Polly 任务。如需了解更多 SSML 标签,请参阅 Amazon Polly 支持的 SSML 标签

要测试以下示例,请将以下 synthesize-speech 命令用于适当的 SSML 增强文本:

以下 AWS CLI 示例针对 Linux、Unix 和 macOS 编排了格式。对于 Windows,请将每行末尾处的反斜杠 (\) Unix 继续符替换为脱字号 (^),并对输入文本使用双引号 ("),对内部标签使用单引号 (')。

aws polly synthesize-speech \ --text-type ssml \ --text '<speak>Hello <break time="300ms"/> World</speak>' \ --output-format mp3 \ --voice-id Joanna \ speech.mp3

添加停顿

要在词语之间添加停顿,请使用 <break> 元素。以下 SSML synthesize-speech 命令使用 <break> 元素在单词“Hello”和“World”之间添加 300 毫秒的延迟。

<speak> Hello <break time="300ms"/> World. </speak>

控制音量、音高和速度

要控制音高、语速和音量,请使用 <prosody> 元素。

  • 以下 synthesize-speech 命令使用 <prosody> 元素控制音量:

    <speak> <prosody volume="+20dB">Hello world</prosody> </speak>
  • 以下 synthesize-speech 命令使用 <prosody> 元素控制音高:

    <speak> <prosody pitch="x-high">Hello world.</prosody> </speak>
  • 以下 synthesize-speech 命令使用 <prosody> 元素指定语速:

    <speak> <prosody rate="x-fast">Hello world.</prosody> </speak>
  • 您可以在一个 <prosody> 元素中指定多个属性,如以下示例中所示:

    <speak> <prosody volume="x-loud" pitch="x-high" rate="x-fast">Hello world.</prosody> </speak>

轻读

要轻读词语,请使用 <amazon:effect name="whispered"> 元素。在以下示例中, <amazon:effect name="whispered"> 元素告知 Amazon Polly 轻读 "little lamb":

<speak> Mary has a <amazon:effect name="whispered">little lamb.</amazon:effect> </speak>

要增强这种效果,可以使用 <prosody> 元素稍稍减慢轻读的语速。

强调词语

要强调词或短语,请使用 <emphasis> 元素。

<speak> <emphasis level="strong">Hello</emphasis> world how are you? </speak>

指定某些词语的读法

要提供要朗读的文本类型的相关信息,请使用 <say-as> 元素。

例如,在以下 SSML 中,<say-as> 指明应将文本“4/6”解释为日期。interpret-as="date" format="dm" 属性指明应将它作为日期朗读,格式为月/日。

您还可以使用 <say-as> 元素告知 Amazon Polly 将数字作为分数、电话号码、度量单位等形式朗读。

<speak> Today is <say-as interpret-as="date" format="md" >4/6</say-as> </speak>

生成的语音为“今天是六月四日”。 <say-as> 标签利用 interpret-as 属性提供额外的上下文,指定如何解释文本。

要验证合成语音的准确度,请播放生成的 speech.mp3 文件。

有关此元素的更多信息,请参阅 控制如何朗读特殊的词语类型

改善外语词汇的发音

Amazon Polly 假设输入文本与您所选的朗读语音为同一种语言。要改善输入文本中外语词汇的发音,请在 synthesize-speech 调用中使用 xml:lang 属性指定目标语言。这样可告知 Amazon Polly 针对您添加标签的外语词汇应用不同的发音规则。

以下示例展示如何在输入文本中使用不同的语言组合,以及如何指定外语词汇的语音和发音。有关可用语言的完整列表,请参阅 Amazon Polly 支持的语言

在以下示例中,语音 (Joanna) 为美国英语语音。默认情况下,Amazon Polly 假设输入文本与语音的语言相同(在此例中均为美国英语)。当您使用 xml:lang 标签时,Amazon Polly 将文本解释为西班牙语,使用所选语音朗读的文本将根据外语发音规则以西班牙语词汇发音。如果没有此标签,朗读文本时将使用所选语音的发音规则。

<speak> That restaurant is terrific. <lang xml:lang="es-ES">Mucho gusto.</lang> </speak>

由于输入文本的语言是英语,Amazon Polly 会将西班牙语音素与最接近的英语音素进行对应。因此,Joanna 会以美国英语为母语的方式朗读文本,他的西班牙语发音正确,但有美国英语口音。

注意

某些语言相似度更高,因此某些语言组合效果更好。