Amazon Polly
開発者ガイド

PutLexicon オペレーションの使用

Amazon Polly では、PutLexicon を使用してアカウントの AWS リージョンに発音レキシコンを保存できます。次に、サービスがテキストを合成し始める前に適用する SynthesizeSpeech リクエストに保存した 1 つ以上のレキシコンを指定できます。詳細については、「レキシコンの管理」を参照してください。

このセクションでは、レキシコンの例、および保存とテストの手順を説明します。

注記

これらのレキシコンは、Pronunciation Lexicon Specification (PLS) の W3C 推奨事項に準拠する必要があります。詳細については、W3C ウェブサイトの「Pronunciation Lexicon Specification (PLS) バージョン 1.0」を参照してください。

例 1: 語彙素が 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> 要素で指定された 2 つの属性:

    • xml:lang 属性はレキシコンが適用される言語コード、en-US を指定します。SynthesizeSpeech 呼び出しで指定する音声が同じ言語コード (en-US) である場合、Amazon Polly はこの例のレキシコンを使用できます。

      注記

      音声に関連付けられている言語コードを探すため、DescribeVoices オペレーションを使用できます。

       

    • alphabet 属性は IPA を指定します。つまり、国際音声記号 (IPA) のアルファベットが発音に使用されます。IPA は発音を書くためのアルファベットの 1 つです。また、Amazon Polly は 拡張 SAM 音声記号 (X-SAMPA) もサポートしています。

       

  • <lexeme> 要素は、<grapheme>(単語のテキスト表記) と <alias> の間のマッピングを説明します。

このレキシコンをテストするには、以下を実行します。

  1. example.pls という名前でレキシコンを保存します。

  2. us-east-2 リージョンに (w3c の名前で) レキシコンを保存するため put-lexicon AWS CLI コマンドを実行します。

    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 という単語が World Wide Web Consortium に置き換わっていることを確認します。

前の例のレキシコンでは、エイリアスを使用します。レキシコンで説明されている 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>

レキシコンが 3 つの語彙素を指定し、そのうち 2 つは書記素 W3C のエイリアスを次のとおり定義します。

  • 最初の <lexeme> 要素はエイリアス (World Wide Web Consortium) を定義します。

  • 2 つめの <lexeme> は、代替エイリアス (WWW Consortium) を定義します。

Amazon Polly は、レキシコンにあるどの書記素にも最初の置き換えを使用します。

3 つめの <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
  • 3 番目の語彙素で定義したエイリアスは、元のテキストの一部にある Consortium という単語にのみ適用され、以下のテキストの結果となります。

    The World Wide Web Consortium is a Community.

AWS CLI を使用してこれを以下のようにテストできます。

  1. example.pls という名前でレキシコンを保存します。

  2. us-east-2 リージョンに w3c の名前でレキシコンを保存するため put-lexicon コマンドを実行します。

    aws polly put-lexicon \ --name w3c \ --content file://example.pls
  3. w3c レキシコンは返されたレキシコンのリストにあることを確認するために、list-lexicons コマンドを実行します。

    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 への呼び出しでは、複数のレキシコンを指定できます。この場合、最初に指定したレキシコン (左から右の順序) により、他のすべてのレキシコンがオーバーライドされます。

次の 2 つのレキシコンを考えます。各レキシコンは、同じ書記素 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 としてそれぞれ保存するとします。w3c 呼び出しでレキシコンの順序を指定 (w3cAlternate の次に SynthesizeSpeech) すると、最初のレキシコンで指定した W3C のエイリアスは 2 番目より優先されます。レキシコンをテストするには、以下を実行します。

  1. レキシコンを w3c.pls および w3cAlternate.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 の追加コードサンプル