

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 套用語彙 （合成語音）
<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 管理主控台 ，並在 https：//[https://console.aws.amazon.com/polly/](https://console.aws.amazon.com/polly/) 開啟 Amazon 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. 選擇 **Download** (下載)。

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

------