

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

# 应用词典（合成语音）
<a name="managing-lexicons-console-synthesize-speech"></a>

您使用的词典必须符合发音词典规范（PLS）W3C 建议。有关更多信息，请参阅 W3C 网站上的[发音词典规范 (PLS) 1.0 版](https://www.w3.org/TR/pronunciation-lexicon/#S4.7)。

------
#### [ Console ]

以下过程将通过应用 `W3c.pls` 词典将“万维网联盟”替换为“W3C”演示如何将词典应用到您的输入文本。如果您对文本应用多个词典，则它们将以自上而下的顺序应用，第一个匹配优先于以后的匹配。仅当词典中指定的语言与所选择的语言相同时，词典才会应用于文本。

您可以将一个词典应用到纯文本或 SSML 输入。

**Example – 应用 W3C.pls 词典**  
要创建您在本练习中将需要用到的词典，请参阅 [上传词典](managing-lexicons-console-upload.md)。使用纯文本编辑器来创建主题顶部显示的 W3C.pls 词典。请记住您保存此文件的位置。  

**将 W3C.pls 词典应用到您的输入**

在此示例中，我们介绍了使用词典用“万维网联盟”替代“W3C”的方法。对此练习的美国英语和另一语言结果与 [在控制台上使用 SSML](ssml-to-speech-console.md) 的同语言结果进行比较。

1. 登录到 AWS 管理控制台 并打开 Amazon Polly 控制台，网址：[https://console.aws.amazon.com/polly/](https://console.aws.amazon.com/polly/)。

1. 请执行以下操作之一：
   + 关闭 **SSML**，然后将此文本键入或粘贴到文本输入框中。

     ```
     He was caught up in the game. 
     In the middle of the 10/3/2014 W3C meeting 
     he shouted, "Score!" quite loudly.
     ```
   + 打开 **SSML**，然后将此文本键入或粘贴到文本输入框中。

     ```
     <speak>He wasn't paying attention.<break time="1s"/>
     In the middle of the 10/3/2014 W3C meeting 
     he shouted, "Score!" quite loudly.</speak>
     ```

1. 从**语言**列表中，选择**英语（美国）**，然后选择您要用于此文本的语音。

1. 展开**其他设置**，然后打开**自定义发音**。

1. 从词典列表中选择 `W3C (English, US)`。

   如果未列出 `W3C (English, US)` 词典，请选择 **Upload lexicon** 并将其上传，然后从列表中选择该词典。要创建此词典，请参阅[上传词典](managing-lexicons-console-upload.md)。

1. 要立即收听语音，请选择**收听**。

1. 将语音保存到文件中

   1. 选择**下载**。

   1. 要更改到不同的文件格式，请打开**语音文件格式设置**，选择所需文件格式，然后选择**下载**。
重复上述步骤，但选择不同的语言并注意输出中的差异。

------
#### [ AWS CLI ]

在对 `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>
  ```

  

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

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

1. 使用 `put-lexicon` AWS 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
     ```

1. 运行 `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
   ```

1. 测试生成的 `speech.mp3`。具体如下：

   ```
   PLS is a World Wide Web Consortium recommendation
   ```

------