本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在上使用 SSML AWS CLI
您可以使用合成 SSML 输入文 AWS CLI 本。以下示例说明如何使用 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 示例是针对 Unix、Linux 和 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 增强文件
-
将 SSML 保存为文件(例如
example.xml
)。 -
从存储 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
-
要试听合成语音,请使用任何播放器播放生成的
speech.mp3
文件。
使用 SSML 执行常见的 Amazon Polly 任务
以下示例展示了如何使用 SSML 标签完成常见的 Amazon Polly 任务。如需了解更多 SSML 标签,请参阅 支持的 SSML 标签。
要测试以下示例,请将以下 synthesize-speech
命令用于适当的 SSML 增强文本:
以下 AWS CLI 示例是针对 Unix、Linux 和 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 针对您添加标签的外语词汇应用不同的发音规则。
以下示例展示如何在输入文本中使用不同的语言组合,以及如何指定外语词汇的语音和发音。有关可用语言的完整列表,请参阅 亚马逊 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 会以美国英语为母语的方式朗读文本,他的西班牙语发音正确,但有美国英语口音。
注意
某些语言相似度更高,因此某些语言组合效果更好。