使用操 PutLexicon 作 - Amazon Polly

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

使用操 PutLexicon 作

透過 Amazon Polly,您可以使PutLexicon用在帳戶的特定 AWS 區域中儲存發音詞彙。然後,您可以在您的 SynthesizeSpeech 請求中指定一個或多個儲存的語彙,以在服務開始合成這些文字之前套用。如需詳細資訊,請參閱 管理詞典

本節提供了用於存儲和測試它們的 step-by-step 示例詞彙和說明。

注意

這些語彙必須符合發音語彙規格 (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),Amazon Polly 可以使用此範例詞庫。

      注意

      您可以使用 DescribeVoices 操作來尋找和語音相關聯的語言代碼。

       

    • alphabet 屬性指定 IPA,其表示國際音標用於發音。IPA 是用於編寫發音的字母之一。Amazon Polly 也支援擴展語音評估方法語音字母 (X-SAMPA)。

       

  • <lexeme> 元素描述 <grapheme> (也就是單字的文字表示) 和 <alias> 之間的映射。

要測試此語彙,請依下列步驟執行:

  1. 將語彙儲存為 example.pls

  2. 執行命put-lexicon AWS CLI 令以儲存在 us-east-2 區域中的詞典 (使用名稱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 字母。以下語彙指定使用 <phoneme> 元素與 IPA 字母的語音發音。

<?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 餅很好吃」)。

示例 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 協會)

Amazon Polly 使用詞典中的任何給定字形的第一個替代品。

第三個 <lexeme> 定義協會這個字的取代 (社群)。

首先,我們來測試這個語彙。假設您要合成以下範例文字到音訊檔案 (speech.mp3),而您將呼叫中的語彙指定為 SynthesizeSpeech

The W3C is a Consortium

SynthesizeSpeech 先套用的語彙如下所示:

  • 就第一個詞元,W3C 這個字修訂為「全球資訊網協會」。修訂文字如下所示:

    The World Wide Web Consortium is a Consortium
  • 第三個詞元中所定義的別名僅適用於「協會」這個字 (原始文字的一部分),產生以下文字:

    The World Wide Web Consortium is a Community.

您可以使用如下方式對 AWS CLI 其進行測試:

  1. 將語彙儲存為 example.pls

  2. 執行 put-lexicon 命令,以名稱 w3c 將語彙儲存在 us-east-2 區域中。

    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。如果您在 SynthesizeSpeech 呼叫中依順序 (w3c 在前, w3cAlternate 在後) 指定語彙,第一個語彙所定義的 W3C 別名優先於第二個。要測試語彙,請依下列步驟執行:

  1. 將語彙儲存在本機檔案 w3c.plsw3cAlternate.pls 中。

  2. 使用命令上傳這些詞典。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

  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 的其他程式碼範例