

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

# 上传词典
<a name="managing-lexicons-console-upload"></a>

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

------
#### [ Console - Lexicons tab ]

要使用发音词典，您必须先将其上传。您可以从控制台中的两个位置上传词典：**Text-to-Speech** 选项卡和 **Lexicons** 选项卡。

以下过程描述如何添加词典，您可以使用这些词典来自定义所选语言的不常见单词和短语如何发音。<a name="upload-lexicon-lexicons-tab"></a>

**从词典选项卡添加词典**

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

1. 选择 **Lexicons** 选项卡。

1. 选择**上传词典**。

1. 为词典提供名称，然后使用**选择词典文件**来查找要上传的词典。您只能上传扩展名为 .pls 或 .xml 的 PLS 文件。

1. 选择**上传词典**。如果相同名称的词典（无论是 .pls 或 .xml 文件）存在，上传词典会覆盖现有词典。

------
#### [ Console - TTS tab ]<a name="upload-lexicon-tts-tab"></a>

**从“文本转语音”选项卡添加词典**

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

1. 选择**文本到语音转换**选项卡。

1. 展开**其他设置**，打开**自定义发音**，然后选择**上传词典**。

1. 为词典提供名称，然后使用**选择词典文件**来查找要上传的词典。您只能使用扩展名为 .pls 或 .xml 的 PLS 文件。

1. 选择**上传词典**。如果相同名称的词典（无论是 .pls 或 .xml 文件）存在，上传词典会覆盖现有词典。

------
#### [ AWS CLI - one lexeme ]

借助 Amazon Polly，可以在特定 AWS 区域内使用 [PutLexicon](API_PutLexicon.md) 为您的账户存储发音词典。然后，在服务开始合成文本之前，您可以在 [SynthesizeSpeech](API_SynthesizeSpeech.md) 请求中指定一个或多个已存储的词典。有关更多信息，请参阅 [管理词典](managing-lexicons.md)。

请考虑以下兼容 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)，则 Amazon Polly 可以使用此示例词典。
**注意**  
您可以使用 `DescribeVoices` 操作以查找与语音关联的语言代码。

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

     
+ `<lexeme>` 元素用于描述 `<grapheme>`（即单词的文本表示）和 `<alias>` 之间的映射。

要测试此词典，请执行以下操作：

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

1. 在 us-east-2 地区，运行 `put-lexicon` AWS CLI 命令来存储词典（使用名称 `w3c`）。

   ```
   aws polly put-lexicon \
   --name w3c \
   --content file://example.pls
   ```

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

1. 播放生成的 `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”（山核桃馅饼很好吃））。

有关 PutLexicon API 操作的附加代码示例，请参阅以下资源：
+ Java 示例：[PutLexicon](PutLexiconSample.md)
+ Python (Boto3) 示例：[PutLexicon](PutLexiconSamplePython.md)

------
#### [ AWS CLI - multiple lexemes ]

借助 Amazon Polly，可以在特定 AWS 区域内使用 [PutLexicon](API_PutLexicon.md) 为您的账户存储发音词典。然后，在服务开始合成文本之前，您可以在 [SynthesizeSpeech](API_SynthesizeSpeech.md) 请求中指定一个或多个已存储的词典。有关更多信息，请参阅 [管理词典](managing-lexicons.md)。

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

```
<?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)。

首先，让我们来测试此词典。假设您想要将以下示例文本合成到音频文件 (`speech.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.
  ```

可以使用 AWS CLI 对此进行测试，如下所示：

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

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

   ```
   aws polly put-lexicon \
   --name w3c \
   --content file://example.pls
   ```

1. 运行 `list-lexicons` 命令以验证 w3c 词典在返回的词典列表中。

   ```
   aws polly list-lexicons
   ```

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

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

有关 PutLexicon API 操作的附加代码示例，请参阅以下资源：
+ Java 示例：[PutLexicon](PutLexiconSample.md)
+ Python (Boto3) 示例：[PutLexicon](PutLexiconSamplePython.md)

------