使用 PutLexicon 操作 - Amazon Polly
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 PutLexicon 操作

使用 Amazon Polly,你可以使用PutLexicon将发音词典存储在特定的Amazon您账户的区域。然后,在服务开始合成文本之前,您可以在 SynthesizeSpeech 请求中指定一个或多个已存储的词典。有关更多信息,请参阅管理词典

此部分提供了示例词典以及词典存储和测试的分步说明。

注意

这些词典必须符合发音词典规范 (PLS) W3C 建议。有关更多信息,请参阅 W3C 网站上的发音词典规范 (PLS) 1.0 版

示例 1:含一个词素的词典

请考虑以下兼容 W3C PLS 的词典。

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon>

请注意以下几点:

  • <lexicon> 元素中指定的两个属性:

    • 这些区域有:xml:lang属性指定语言代码,en-US词典适用于。如果您在SynthesizeSpeech呼叫具有相同的语言代码 (en-US)。

      注意

      您可以使用 DescribeVoices 操作以查找与语音关联的语言代码。

       

    • alphabet 属性指定了 IPA,这意味着使用国际语音字母表 (IPA) 字母表发音。IPA 是用于书写发音的字母之一。Amazon Polly 还支持拓展音标字母评估法 (X-SAMPA)。

       

  • <lexeme> 元素用于描述 <grapheme> (即单词的文本表示) 和 <alias> 之间的映射。

要测试此词典,请执行以下操作:

  1. 将该词典保存为 example.pls

  2. 在 us-east-2 地区,运行 put-lexicon Amazon CLI 命令来存储词典(使用名称 w3c)。

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. 运行 synthesize-speech 命令以将示例文本合成为音频流 (speech.mp3 )),并指定可选 lexicon-name 参数。

    aws polly synthesize-speech \ --text 'W3C is a Consortium' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3
  4. 播放生成的 speech.mp3 ,注意单词 W3C 在文本已替换为万维网联盟。

上述示例词典使用别名。未使用的词典中提到的 IPA 字母。以下词典使用带 IPA 字母 <phoneme> 元素指定语音发音。

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>pecan</grapheme> <phoneme>pɪˈkɑːn</phoneme> </lexeme> </lexicon>

按照相同步骤测试此词典。请确保您指定的输入文本里有单词“pecan” (山核桃) (例如,"Pecan pie is delicious" (山核桃馅饼很好吃))。

示例 2:含多个词素的词典

在此示例中,您在词典中指定的词素仅用于输入文本,以进行合成。考虑以下词典:

<?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> </lexeme> <lexeme> <grapheme>Consortium</grapheme> <alias>Community</alias> </lexeme> </lexicon>

词典指定了三个词素,其中两个词素为字素 W3C 定义了一个别名,如下所示:

  • 第一个 <lexeme> 元素定义了一个别名 (万维网联盟)。

  • 第二个 <lexeme> 定义了一个替代别名 (WWW Consortium)。

Amazon Polly 使用第一个替换词典中的任意给定字素。

第三个 <lexeme> 为单词 Consortium 定义了一个替换词 (Community)。

首先,让我们来测试此词典。假设您想要将以下示例文本合成到音频文件 («1»«2») (speech.mp3speech.mp3),并且在 SynthesizeSpeech 的调用中指定词典。

The W3C is a Consortium

SynthesizeSpeech 首先按如下所示应用词典:

  • 根据第一个词素,单词 W3C 被修改为 World Wide Web Consortium。修改后的文本如下所示:

    The World Wide Web Consortium is a Consortium
  • 第三个词素中定义的别名仅适用于作为原始文本一部分的单词 Consortium,产生以下文本:

    The World Wide Web Consortium is a Community.

可以使用 Amazon CLI 对此进行测试,如下所示:

  1. 将该词典保存为 example.pls

  2. 在 us-east-2 地区,运行 put-lexicon 命令来存储词典 (使用名称 w3c)。

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. 运行 list-lexicons 命令以验证 w3c 词典在返回的词典列表中。

    aws polly list-lexicons
  4. 运行 synthesize-speech 命令以将示例文本合成为音频文件 (speech.mp3 )),并指定可选 lexicon-name 参数。

    aws polly synthesize-speech \ --text 'W3C is a Consortium' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names="w3c" \ speech.mp3

  5. 播放生成的 speech.mp3 文件,以验证合成语音是否反映了文本的更改。

示例 3:指定多个词典

在对 SynthesizeSpeech 的调用中,您可以指定多个词典。在这种情况下,指定的第一个词典 (按照从左到右的顺序)覆盖前面的任意词典。

请考虑以下两个词典。请注意,每个词典都为同一个字素 W3C 描述了不同的别名。

  • 词典 1:w3c.pls

    <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>World Wide Web Consortium</alias> </lexeme> </lexicon>
  • 词典 2:w3cAlternate.pls

    <?xml version="1.0" encoding="UTF-8"?> <lexicon version="1.0" xmlns="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/01/pronunciation-lexicon http://www.w3.org/TR/2007/CR-pronunciation-lexicon-20071212/pls.xsd" alphabet="ipa" xml:lang="en-US"> <lexeme> <grapheme>W3C</grapheme> <alias>WWW Consortium</alias> </lexeme> </lexicon>

假设您分别将这些词典存储为 w3cw3cAlternate。如果在 调用中指定词汇符号 (先是w3c 然后是 w3cAlternate) SynthesizeSpeech 则第一个词典中定义的 W3C 的别名优先于第二个。要测试词典,请执行以下操作:

  1. 在本地将词典保存在名为 w3c.plsw3cAlternate.pls 的文件中。

  2. 使用 put-lexicon Amazon CLI 命令上传这些词典。

    • 上传 w3c.pls 词典并将其存储为 w3c

      aws polly put-lexicon \ --name w3c \ --content file://w3c.pls
    • 在服务中将 w3cAlternate.pls 词典上传为 w3cAlternate

      aws polly put-lexicon \ --name w3cAlternate \ --content file://w3cAlternate.pls

  3. 运行 synthesize-speech 命令以将示例文本合成为音频流 (speech.mp3 )),并使用 lexicon-name 参数指定两个词典。

    aws polly synthesize-speech \ --text 'PLS is a W3C recommendation' \ --voice-id Joanna \ --output-format mp3 \ --lexicon-names '["w3c","w3cAlternative"]' \ speech.mp3
  4. 测试生成的 speech.mp3。具体如下:

    PLS is a World Wide Web Consortium recommendation

PutLexicon API 的其他代码示例