Amazon Polly - 開発者ガイド - AWS Documentation

Amazon Polly
開発者ガイド
Amazon Polly 開発者ガイド
Amazon Polly 開発者ガイド
Amazon Polly: 開発者ガイド
Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any
manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other
trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to,
or sponsored by Amazon.
Amazon Polly 開発者ガイド
Table of Contents
Amazon Polly とは? ...................................................................................................................... 1
Amazon Polly を初めてお使いになる方向けの情報 ..................................................................... 2
仕組み ......................................................................................................................................... 3
次のステップ ........................................................................................................................ 3
はじめに ...................................................................................................................................... 4
ステップ 1: アカウントとユーザーを設定する ........................................................................... 4
ステップ 1.1: AWS にサインアップ ................................................................................. 4
ステップ 1.2: IAM ユーザーを作成する ............................................................................ 5
次のステップ ................................................................................................................ 6
ステップ 2: コンソールの使用開始 .......................................................................................... 6
実習 1: 音声合成クイックスタート (コンソール) ................................................................ 6
実習 2: 音声合成 (プレーンテキスト入力) ......................................................................... 6
次のステップ ................................................................................................................ 7
ステップ 3: AWS CLI の使用開始 ............................................................................................ 7
ステップ 3.1: AWS CLI をセットアップする ..................................................................... 7
ステップ 3.2: 「使用開始」実習 ...................................................................................... 9
次のステップ ...................................................................................................................... 11
Python のセットアップとサンプルのテスト ..................................................................... 11
SSML の使用 .............................................................................................................................. 13
コンソールを使用した SSML の使用 ...................................................................................... 13
Amazon Polly コンソールを使用した SSML の使用 .......................................................... 13
次のステップ .............................................................................................................. 14
AWS CLI での SSML の使用 ................................................................................................ 14
例 1: synthesize-speech コマンドを使用して SSML を渡す ............................................... 14
例 2: 完全な SSML ドキュメントの合成 ......................................................................... 15
例 3: 一般的な SSML タグの使用 .................................................................................. 15
例 4: 発音の制御 ......................................................................................................... 18
レキシコンの管理 ........................................................................................................................ 20
複数のレキシコンを適用する ................................................................................................. 20
コンソールを使用したレキシコンの管理 ................................................................................. 21
コンソールを使用したレキシコンのアップロード ............................................................. 22
コンソールを使用してレキシコンを適用する (音声合成) .................................................... 22
コンソールを使用してレキシコンのリストをフィルタリングする ....................................... 23
コンソールを使用したレキシコンのダウンロード ............................................................. 24
コンソールを使用してレキシコンを削除する ................................................................... 24
AWS CLI を使用してレキシコンを管理する ............................................................................ 24
PutLexicon ................................................................................................................. 25
GetLexicon ................................................................................................................. 30
ListLexicons ................................................................................................................ 32
DeleteLexicon ............................................................................................................. 33
アプリケーション例 ..................................................................................................................... 35
Python の例 ....................................................................................................................... 36
Python の例: index.html ................................................................................................ 37
Python の例: server.py ................................................................................................. 40
Android の例 ...................................................................................................................... 46
iOS の例 ............................................................................................................................ 48
制限 .......................................................................................................................................... 50
サポートされているリージョン ............................................................................................. 50
Throttling ............................................................................................................................ 50
発音レキシコン ................................................................................................................... 51
SynthesizeSpeech API オペレーション .................................................................................. 51
音声合成マークアップ言語 (SSML) ........................................................................................ 51
CloudTrail の統合 ........................................................................................................................ 52
CloudTrail 内の Amazon Polly 情報 ........................................................................................ 52
Amazon Polly ログファイルエントリの概要 ............................................................................ 53
iv
Amazon Polly 開発者ガイド
CloudWatch の統合 ..................................................................................................................... 55
CloudWatch メトリクスの取得 (コンソール) ............................................................................ 55
CloudWatch メトリクスの取得 (CLI) ...................................................................................... 55
Amazon Polly メトリクス ..................................................................................................... 56
Amazon Polly メトリクスのディメンション ............................................................................ 57
API リファレンス ........................................................................................................................ 58
Actions .............................................................................................................................. 58
DeleteLexicon ............................................................................................................. 59
DescribeVoices ........................................................................................................... 61
GetLexicon ................................................................................................................. 63
ListLexicons ................................................................................................................ 65
PutLexicon ................................................................................................................. 67
SynthesizeSpeech ....................................................................................................... 69
Data Types ........................................................................................................................ 71
Lexicon ...................................................................................................................... 72
LexiconAttributes ......................................................................................................... 73
LexiconDescription ...................................................................................................... 74
Voice ......................................................................................................................... 75
認証とアクセスコントロール ......................................................................................................... 76
認証 .................................................................................................................................. 76
アクセスコントロール .......................................................................................................... 77
アクセス管理の概要 ............................................................................................................. 78
Amazon Polly リソースおよびオペレーション ................................................................. 78
リソース所有権について ............................................................................................... 78
リソースへのアクセスの管理 ......................................................................................... 79
ポリシー要素の指定 : アクション、効果、プリンシパル .................................................... 80
ポリシーでの条件の指定 ............................................................................................... 81
アイデンティティベースのポリシー (IAM ポリシー) を使用する ................................................. 81
Amazon Polly コンソールを使用するために必要なアクセス権限 ......................................... 82
Amazon Polly の AWS 管理 (定義済み) ポリシー ............................................................. 83
お客様が管理するポリシーの例 ..................................................................................... 83
Amazon Polly API のアクセス権限の参照 ................................................................................ 85
ドキュメント履歴 ........................................................................................................................ 87
AWS の用語集 ............................................................................................................................ 88
v
Amazon Polly 開発者ガイド
Amazon Polly とは?
Amazon Polly はテキストをリアルなスピーチに変換するクラウドサービスです。Amazon Polly を使
用して、エンゲージメントやアクセス性を高めるアプリケーションを開発できます。Amazon Polly
では多様な言語がサポートされており、さまざまのリアルな音声が含まれています。そのため、お
客様に最適なボイスを使用して、さまざまな場所で機能する音声対応アプリケーションを構築できま
す。Amazon Polly は、合成したテキスト分のみお支払いいただくだけで利用可能です。また、追加コ
ストなしで、Amazon Polly が生成した音声をキャッシュして再生できます。
Amazon Polly の一般的なユースケースは、ニュースリーダー、ゲーム、e ラーニングプラットフォー
ム、視力が弱い方向けのアクセシビリティアプリケーション、および急速に成長している IoT 分野な
どですが、他にもいろいろあります。
Amazon Polly は、Payment Card Industry (PCI) Data Security Standard (DSS)、HIPAA (Health
Insurance Portability and Accountability Act of 1996)、または FedRAMP での使用には認定されていま
せん。
Amazon Polly を使用するメリットの例を次に示します。
• 高品質 – Amazon Polly はクラス最高のテキスト読み上げ (TTS) 技術を使用して、発音が非常に正確
で自然な音声を合成します (略語、頭字語の展開、日付/時刻の変換、同形異義語の読み分けなどを
含みます)。
• 低レイテンシー – Amazon Polly は応答時間が早いため、ダイアログシステムなどの低レイテンシー
なユースケースにおいても選択肢になります。
• 多数の言語とボイスのポートフォリオをサポート – Amazon Polly では、47 ボイスおよび 24 言語が
サポートされており、ほとんどの言語で男性と女性を選択できます。
• コスト効率が良い – Amazon Polly は従量課金制であり、セットアップコストはかかりません。小規
模で開始し、アプリケーションが大きくなるにつれてスケールアップできます。
• クラウドベースのソリューション – デバイス上のテキスト読み上げソリューションは、膨大なコ
ンピューティングリソース、特に CPU パワー、RAM、ディスク容量を必要とします。そのため、
開発コストが高くなり、またタブレットやスマートフォンなどのデバイスの電力消費も高くなりま
す。これに対して、クラウド上でテキスト読み上げ変換を実行すると、ローカルで必要なリソー
スが劇的に減ります。これにより、すべての利用可能な言語とボイスを可能な限りの最高品質でサ
1
Amazon Polly 開発者ガイド
Amazon Polly を初めてお使いになる方向けの情報
ポートできます。さらに、音声が改良されるとすぐにすべてのエンドユーザーが使用できるように
なり、デバイスで追加更新する必要がありません。
Amazon Polly を初めてお使いになる方向けの情
報
Amazon Polly サービスを初めて使用する方には、次のセクションを順を追って読むことをお勧めしま
す。
1. Amazon Polly: 仕組み (p. 3) – このセクションでは、エンドツーエンドエクスペリエンスを作成
するために使用できるさまざまな Amazon Polly の入力とオプションを紹介します。
2. Amazon Polly の使用開始 (p. 4) – このセクションでは、アカウントをセットアップして
Amazon Polly の音声合成をテストします。
3. アプリケーション例 (p. 35) – このセクションでは、Amazon Polly の学習に使用できるその他の
例を示します。
2
Amazon Polly 開発者ガイド
次のステップ
Amazon Polly: 仕組み
Amazon Polly は、テキスト入力をリアルな音声に変換します。SynthesizeSpeech メソッドを呼び
出して、合成するテキストを入力し、用意されているテキスト読み上げ (TTS) ボイスを選択して音声
出力形式を指定するだけです。Amazon Polly により、入力されたテキストが高品質のスピーチ音声ス
トリームに合成されます。
• 入力テキスト – 合成するテキストを入力します。Amazon Polly によって音声ストリームが返されま
す。プレーンテキストまたは音声合成マークアップ言語 (SSML) 形式で入力できます。SSML を使
用すると、発音、ボリューム、ピッチ、話す速度など、音声のさまざまな要素を制御できます。詳
細については、「SSML の使用 (p. 13)」を参照してください。
• 使用できるボイス – Amazon Polly には、多様な言語とボイスのポートフォリオが用意されていま
す。ほとんどの言語で、男女両方を含む複数の異なる音声から選択できます。SynthesizeSpeech
オペレーションをコールする際にボイス名を指定するだけで、サービスがそのボイスを使用してテ
キストを音声に変換します。Amazon Polly は翻訳サービスではありません。合成音声はテキストの
言語になります。数値を使用した数字 (たとえば、五十三ではなく 53) は、ボイスの言語で合成され
ます。
• 出力形式 – Amazon Polly は合成音声を複数の形式で提供できます。必要に応じて音声形式を選択で
きます。たとえば、ウェブやモバイルアプリケーション用に、MP3 や Ogg Vorbis 形式の音声をリ
クエストすることがあるかもしれません。または、AWS IoT デバイスやテレフォニーソリューショ
ン用に PCM 出力形式をリクエストする場合もあります。
次のステップ
初めて Amazon Polly を使用する場合は、以下のトピックを順番に参照することをお勧めします。
• Amazon Polly の使用開始 (p. 4)
• アプリケーション例 (p. 35)
• Amazon Polly の制限 (p. 50)
3
Amazon Polly 開発者ガイド
ステップ 1: アカウントとユーザーを設定する
Amazon Polly の使用開始
Amazon Polly には、既存のアプリケーションと簡単に統合できるシンプルな API オペレーションがあ
ります。サポートされているオペレーションのリストについては、「Actions (p. 58)」を参照して
ください。 次のオプションのいずれかを使用できます。
• AWS SDK – SDK を使用する際、Amazon Polly へのリクエストが自動的に署名され、指定した認証
情報を使用して認証されます。これは、アプリケーション構築に推奨される選択肢です。
• AWS CLI – AWS CLI を使用すると、コードを記述しなくてもあらゆる Amazon Polly 機能にアクセ
スできます。
以下のセクションでは、基本実習をセットアップして提供する方法について説明します。
トピック
• ステップ 1: AWS アカウントを設定してユーザーを作成する (p. 4)
• ステップ 2: コンソールの使用開始 (p. 6)
• ステップ 3: AWS CLI の使用開始 (p. 7)
• 次のステップ (p. 11)
ステップ 1: AWS アカウントを設定してユーザー
を作成する
Amazon Polly を初めて使用する場合は、事前に以下のタスクをすべて実行してください。
1. ステップ 1.1: AWS にサインアップ (p. 4)
2. ステップ 1.2: IAM ユーザーを作成する (p. 5)
ステップ 1.1: AWS にサインアップ
Amazon Web Services (AWS) にサインアップすると、Amazon Polly など AWS のすべてのサービス
に対して AWS アカウントが自動的にサインアップされます。料金が発生するのは、実際に使用した
サービスの分のみです。
4
Amazon Polly 開発者ガイド
ステップ 1.2: IAM ユーザーを作成する
Amazon Polly は、使用したリソース分のみお支払いいただくだけで利用可能です。AWS の新規のお
客様の場合、無料で Amazon Polly の使用を開始できます。詳細については、「AWS 無料利用枠」を
参照してください。
すでに AWS アカウントをお持ちの場合は次の手順に進んでください。AWS アカウントをお持ちでな
い場合は、次に説明する手順を実行してアカウントを作成してください。
AWS アカウントを作成するには
1.
https://aws.amazon.com/ を開き、[AWS アカウントの作成] を選択します。
2.
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
AWS アカウント ID は次のステップでも必要となるので、メモしておいてください。
ステップ 1.2: IAM ユーザーを作成する
AWS のサービス (Amazon Polly など) にアクセスするときは、認証情報を指定するように求められ
ます。それにより、サービスによって所有されるリソースにアクセスするための権限があるかどうか
が判定されます。コンソールを使用するにはパスワードが必要です。AWS アカウントによる AWS
CLI または API へのアクセス用にアクセスキーを作成できます。ただし、AWS アカウントの認証
情報を使用して AWS にアクセスすることはお勧めしません。代わりに AWS Identity and Access
Management (IAM) を使用することをお勧めします。IAM ユーザーを作成し、管理者アクセス権限を
持つ IAM グループにユーザーを追加したら、作成した IAM ユーザーに管理者アクセス権限を付与し
ます。その後、特別な URL とその IAM ユーザーの認証情報を使用して AWS にアクセスできます。
AWS にサインアップしても、IAM ユーザーをまだ作成していない場合は、IAM コンソールを使用し
て作成できます。
このガイドの「使用開始」実習では、管理者権限を持つユーザー (adminuser) が存在すること想定し
ています。手順に従ってアカウントに adminuser を作成します。
管理者ユーザーを作成し、コンソールにサインインするには
1.
AWS アカウントに adminuser という管理者ユーザーを作成します。手順については、IAM ユー
ザーガイドの最初の IAM ユーザーと管理者グループの作成を参照してください。
2.
ユーザーは、特殊な URL を使用して AWS マネジメントコンソール にサインインできます。詳
細については、IAM ユーザーガイドのユーザーがアカウントにサインインする方法を参照してく
ださい。
Important
「ご利用開始にあたって」の実習では、管理者ユーザー認証情報を使用します。セキュリ
ティを強化するため、本稼働アプリケーションを構築し、テストするときは、Amazon Polly
アクションのアクセス権限のみ持つサービス固有の管理者ユーザーを作成することをお勧め
します。Amazon Polly 固有のアクセス権限を付与するポリシーの例については、「例 1: すべ
ての Amazon Polly アクションを許可する (p. 83)」を参照してください。
IAM の詳細については、以下を参照してください。
• Identity and Access Management (IAM)
• はじめに
5
Amazon Polly 開発者ガイド
次のステップ
• IAM ユーザーガイド
次のステップ
ステップ 2: コンソールの使用開始 (p. 6)
ステップ 2: コンソールの使用開始
Amazon Polly コンソールは、Amazon Polly の音声合成のテストと使用を開始する最も簡単な方法で
す。Amazon Polly は、プレーンテキストまたは SSML 入力から音声合成をサポートしています。
トピック
• 実習 1: 音声合成クイックスタート (コンソール) (p. 6)
• 実習 2: 音声合成 (プレーンテキスト入力) (p. 6)
• 次のステップ (p. 7)
実習 1: 音声合成クイックスタート (コンソール)
クイックスタートを使用すると、スピーチ品質の Amazon Polly 音声合成のテストを手順に従って
すばやく行うことができます。[Text-to-Speech] タブを選択すると、テキストを入力するテキスト
フィールドにサンプルテキストがプリロードされるため、Amazon Polly をすばやく試すことができま
す。
Amazon Polly をすばやくテストするには
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
3.
4.
[Text-to-Speech] タブを選択します。
(オプション) [SSML] を選択します。
言語とリージョンを選択し、音声を選択します。
5.
[Listen to speech] を選択します。
詳細なテストについては、以下のトピックを参照してください。
• 実習 2: 音声合成 (プレーンテキスト入力) (p. 6)
• Amazon Polly コンソールを使用した SSML の使用 (p. 13)
• コンソールを使用してレキシコンを適用する (音声合成) (p. 22)
実習 2: 音声合成 (プレーンテキスト入力)
次の手順では、プレーンテキスト入力を使用して音声を合成します。「W3C」と「10/3」 (10 月 3 日)
がどのように合成されるかに注目してください。
プレーンテキスト入力を使用して音声を合成するには
1.
2.
Amazon Polly コンソールにログインした後、[Get started] を選択し、[Text-to-Speech] タブを選
択します。
[Plain text] タブを選択します。
3.
このテキストを入力ボックスに入力するか貼り付けます。
6
Amazon Polly 開発者ガイド
次のステップ
He was caught up in the game.
In the middle of the 10/3/2014 W3C meeting
he shouted, "Score!" quite loudly.
4.
5.
[Choose a language and region] で、[English US] を選択し、このテキストに使用する音声を選択
します。
音声をすぐに聞くには、[Listen to speech] を選択します。
6.
音声をファイルに保存するには、以下のいずれかを行います。
a.
b.
[Save speech to MP3] を選択します。
別のファイル形式に変更するには、[Change file format] を選択して目的のファイル形式を選
択し、[Change] を選択します。
詳細な例については、以下のトピックを参照してください。
• コンソールを使用してレキシコンを適用する (音声合成) (p. 22)
• Amazon Polly コンソールを使用した SSML の使用 (p. 13)
次のステップ
ステップ 3: AWS CLI の使用開始 (p. 7)
ステップ 3: AWS CLI の使用開始
AWS CLI を使用すると、Amazon Polly コンソールを使用して実行できるほぼすべての Amazon Polly
オペレーションを実行できます。AWS CLI を使用して合成された音声を聞くことはできません。代
わりに、ファイルに保存し、ファイルを再生できるアプリケーションでファイルを開く必要がありま
す。
トピック
• ステップ 3.1: AWS Command Line Interface (AWS CLI) を設定する (p. 7)
• ステップ 3.2: AWS CLI を使用した実習の開始 (p. 9)
ステップ 3.1: AWS Command Line Interface (AWS
CLI) を設定する
ステップに従って、AWS Command Line Interface (AWS CLI) をダウンロードして設定します。
Important
この「使用開始」実習のステップを実行するには、AWS CLI は必要ありません。ただし、こ
のガイドの一部の実習では AWS CLI を使用します。このステップをスキップして ステップ
3.2: AWS CLI を使用した実習の開始 (p. 9) に進み、後で必要になったときに AWS CLI を
セットアップできます。
AWS CLI をセットアップするには
1.
AWS CLI をダウンロードして設定します。手順については、AWS Command Line Interface ユー
ザーガイドの次のトピックを参照してください。
7
Amazon Polly 開発者ガイド
ステップ 3.1: AWS CLI をセットアップする
• AWS Command Line Interface のセットアップ
• AWS Command Line Interface の設定
2.
AWS CLI 設定ファイルで管理者ユーザー用の名前付きプロファイルを追加します。AWS CLI コ
マンドを実行するときに、このプロファイルを使用します。名前付きプロファイルの詳細につい
ては、AWS Command Line Interface ユーザーガイド の名前付きプロファイルを参照してくださ
い。
[profile adminuser]
aws_access_key_id = adminuser access key ID
aws_secret_access_key = adminuser secret access key
region = aws-region
利用可能な AWS リージョンと Amazon Polly によりサポートされるリージョンのリストについて
は、アマゾン ウェブ サービス全般のリファレンス の「Regions and Endpoints」を参照してくだ
さい。
AWS CLI を設定するときに Amazon Polly によりサポートされるリージョンのいずれかを指定し
た場合、AWS CLI コードの例から以下の行を省略できます。AWS CLI 設定で Amazon Polly によ
りサポートされないリージョンを指定した場合 (たとえば、Amazon Polly をサポートしていない
リージョンで他のサービスを使用している既存の AWS のお客様の場合)、次の行を含める必要が
あります。
--region polly-supported-aws-region
3.
コマンドプロンプトで以下のヘルプコマンドを入力して、セットアップを確認します。
aws help
有効な AWS コマンドのリストが AWS CLI ウィンドウに表示されます。
AWS CLI で Amazon Polly を有効にするには (オプション)
AWS CLI を以前にダウンロードして設定済みである場合、Amazon Polly を使用するには、AWS
CLI の再設定が必要になる場合があります。この手順では、この再設定が必要かどうかを確認
し、Amazon Polly が自動的に使用できない場合の手順を示します。
1.
コマンドプロンプトで以下のヘルプコマンドを入力して、Amazon Polly が使用できるかどうかを
確認します。
aws polly help
Amazon Polly の説明と有効なコマンドのリストが AWS CLI ウィンドウに表示されま
す。Amazon Polly が AWS CLI で有効になっていて、すぐに使用できる場合、この手順の残りは
スキップできます。これが表示されない場合は、ステップ 2 に進みます。
2.
次の 2 つのオプションのいずれかを使用して Amazon Polly を有効にします。
• AWS CLI をアンインストールして再インストールします。
手順については、AWS Command Line Interface ユーザーガイド のトピック「AWS Command
Line Interface のインストール」を参照してください。
または
8
Amazon Polly 開発者ガイド
ステップ 3.2: 「使用開始」実習
• Amazon Polly サービスを別個に AWS CLI に追加します。
a.
ファイル service-2.json をダウンロードします。
b.
コマンドプロンプトで、以下を実行します。
aws configure add-model --service-model file://service-2.json -service-name polly
<step>
再度 Amazon Polly が使用できるかどうかを確認します。
aws polly help
Amazon Polly の説明が表示されます。
</step>
次のステップ
ステップ 3.2: AWS CLI を使用した実習の開始 (p. 9)
ステップ 3.2: AWS CLI を使用した実習の開始
ここでは、Amazon Polly により提供されている音声合成をテストできます。この実習では、サンプル
テキストを渡すことにより SynthesizeSpeech オペレーションを呼び出します。生成された音声を
ファイルとして保存し、そのコンテンツを確認します。
AWS CLI を設定するときに Amazon Polly によりサポートされるリージョンのいずれかを指定した場
合、AWS CLI コードの例から以下の行を省略できます。AWS CLI 設定で Amazon Polly によりサポー
トされないリージョンを指定した場合 (たとえば、Amazon Polly をサポートしていないリージョンで
他のサービスを使用している既存の AWS のお客様の場合)、次の行を含める必要があります。
--region polly-supported-aws-region
1.
synthesize-speech AWS CLI コマンドを実行し、サンプルテキストを音声ファイル
(hello.mp3) に合成します。
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプ
ロンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows
連結文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--output-format mp3 \
--voice-id Joanna \
--text "Hello, my name is Joanna. I learned about the W3C on 10/3 of
last year." \
hello.mp3
synthesize-speech の呼び出しで、合成に使用するサンプルテキスト、使用する音声 (以下の
ステップ 3 で説明する音声 ID を提供することにより)、出力形式を指定します。このコマンド
は、生成された音声を hello.mp3 ファイルに保存します。
MP3 ファイルに加えて、上記のオペレーションは次の出力をコンソールに生成します。
9
Amazon Polly 開発者ガイド
ステップ 3.2: 「使用開始」実習
{
"ContentType": "audio/mpeg",
"RequestCharacters": "71"
}
2.
生成された hello.mp3 ファイルを再生して、合成された音声を確認します。
3.
DescribeVoices オペレーションを使用することにより、使用可能な音声のリストを取得できま
す。次の describe-voices AWS CLI コマンドを実行します。
aws polly describe-voices
これに応じて、Amazon Polly は使用可能なすべての音声のリストを返します。音声ごとに、各種
メタデータ (音声 ID、言語コード、言語名、音声の性別) がレスポンスに示されます。レスポンス
の例を次に示します。
{
"Voices": [
{
"Gender": "Female",
"Name": "Salli",
"LanguageName": "US English",
"Id": "Salli",
"LanguageCode": "en-US"
},
{
"Gender": "Female",
"Name": "Joanna",
"LanguageName": "US English",
"Id": "Kendra",
"LanguageCode": "en-US"
}
]
}
オプションで、言語コードを指定して、特定の言語の利用可能な音声を見つけることができま
す。Amazon Polly は、47 の音声がサポートしています。次の例では、ブラジルポルトガル語の
すべての音声がリストされます。
aws polly describe-voices \
--language-code pt-BR
言語コードのリストについては、「DescribeVoices (p. 61)」を参照してください。これらの言
語コードは、W3C 言語識別タグ (#### ISO 639 ###-ISO 3166 ####) です。たとえば、enUS (アメリカ英語)、en-GB (イギリス英語)、es-ES (スペイン語) などです。
さらに、AWS CLI で help オプションを使用して、言語コードのリストを取得することもできま
す。
aws polly describe-voices help
10
Amazon Polly 開発者ガイド
次のステップ
次のステップ
このガイドには、いくつかの例が用意されています。そのいくつかは、AWS SDK for Python (Boto)
を使用して Amazon Polly の API コールを行う Python コード例です。Python をセットアップし、次
のセクションに用意されているサンプルコードをテストすることをお勧めします。その他の例につい
ては、「アプリケーション例 (p. 35)」を参照してください。
Python のセットアップとサンプルのテスト
Python サンプルコードをテストするには、AWS SDK for Python (Boto) が必要です。手順について
は、「AWS SDK for Python (Boto3)」を参照してください。
サンプル Python コードをテストするには
次の Python コード例は、次のタスクを実行します。
• AWS SDK for Python (Boto) を使用し、SynthesizeSpeech リクエストを Amazon Polly に送信し
ます (サンプルテキストを入力として指定)。
• レスポンスで生成された音声ストリームにアクセスし、音声をローカルディスク上のファイルに保
存します (speech.mp3)。
• ローカルシステムのデフォルト音声プレイヤーを使用して音声ファイルを再生します。
コードをファイル (example.py) に保存して、実行します。
"""Getting Started Example for Python 2.7+/3.3+"""
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
from contextlib import closing
import os
import sys
import subprocess
from tempfile import gettempdir
# Create a client using the credentials and region defined in the [adminuser]
# section of the AWS credentials file (~/.aws/credentials).
session = Session(profile_name="adminuser")
polly = session.client("polly")
try:
# Request speech synthesis
response = polly.synthesize_speech(Text="Hello world!",
OutputFormat="mp3",
VoiceId="Joanna")
except (BotoCoreError, ClientError) as error:
# The service returned an error, exit gracefully
print(error)
sys.exit(-1)
# Access the audio stream from the response
if "AudioStream" in response:
# Note: Closing the stream is important as the service throttles on the
# number of parallel connections. Here we are using contextlib.closing to
# ensure the close method of the stream object will be called
automatically
# at the end of the with statement's scope.
with closing(response["AudioStream"]) as stream:
output = os.path.join(gettempdir(), "speech.mp3")
11
Amazon Polly 開発者ガイド
Python のセットアップとサンプルのテスト
try:
# Open a file for writing the output as a binary stream
with open(output, "wb") as file:
file.write(stream.read())
except IOError as error:
# Could not write to file, exit gracefully
print(error)
sys.exit(-1)
else:
# The response didn't contain audio data, exit gracefully
print("Could not stream audio")
sys.exit(-1)
# Play the audio using the platform's default player
if sys.platform == "win32":
os.startfile(output)
else:
# the following works on Mac and Linux. (Darwin = mac, xdg-open = linux).
opener = "open" if sys.platform == "darwin" else "xdg-open"
subprocess.call([opener, output])
サンプルアプリケーションなどの追加の例については、「アプリケーション例 (p. 35)」を参照して
ください。
12
Amazon Polly 開発者ガイド
コンソールを使用した SSML の使用
SSML の使用
Amazon Polly では、プレーンテキスト入力および SSML バージョン 1.1 に準拠した Speech
Synthesis Markup Language (SSML) ドキュメントの両方から音声を生成します。SSML タグを使用す
ると、発音、ボリューム、話す速度など、音声のさまざまな要素をカスタマイズして制御できます。
Amazon Polly では、以下の W3C 勧告で定義された SSML 1.1 がサポートされています。
• 音声合成マークアップ言語 (SSML) バージョン 1.1、W3C 勧告 2010 年 9 月 7 日
SSML W3C 勧告の一部の要素はサポートされていません。詳細については、「Amazon Polly の制
限 (p. 50)」を参照してください。
このセクションでは、音声出力を生成して制御できる SSML の簡単な例を説明します。この例では、
これらの例をテストする synthesize-speech AWS CLI コマンドも提供します。
Amazon Polly コンソールを使用した SSML の使
用
Amazon Polly では、W3C で定義されているバージョン 1.1 の SSML がサポートされています。この
セクションでは、Amazon Polly コンソールで音声合成用の SSML を入力する方法が説明されていま
す。
Amazon Polly コンソールを使用した SSML の使用
次の手順は SSML 入力を使用して音声を合成します。以下のステップ 3 と 4 を除いて、この例のス
テップは 実習 2: 音声合成 (プレーンテキスト入力) (p. 6) のステップと同じです。
Amazon Polly コンソールを使用して音声を合成するには (SSML 入力)
この例では、「W3C」を「World Wide Web Consortium」に置き換える SSML タグ付けを説明しま
す。この実習結果を、英語と別の言語の両方で「コンソールを使用してレキシコンを適用する (音声合
成) (p. 22)」の例と比較してみてください。
13
Amazon Polly 開発者ガイド
次のステップ
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
[Get started] を選択し、必要であれば [Text-to-Speech] タブを選択します。
3.
[SSML] タブを選択します。
4.
テキストボックスに次のテキストを入力するか貼り付けます。
<speak>He was caught up in the game.<break time="1s"/>
In the middle of the 10/3/2014 <sub alias="World Wide
Web
Consortium">W3C</sub> meeting
he shouted, "Score!" quite loudly.</speak>
SSML タグは Amazon Polly に対して、このテキストは指定された方法でレンダリングする必要
があることを通知します。
• <break time="1s"/> は、文章間で 1 秒間停止するように Amazon Polly に指示します。
• <sub alias="World Wide Web Consortium">W3C</sub> は、略語「W3C」を「World
Wide Web Consortium」に置き換えるように Amazon Polly に指示します。
SSML の詳細と例については、「AWS CLI での SSML の使用 (p. 14)」を参照してください。
5.
[Choose a language and region] で、[English US] を選択してから使用するボイスを選択します。
6.
音声をすぐに聞くには、[Listen to speech] を選択します。
7.
ファイルに音声を保存するには、[Save speech to MP3] を選択します。
別のファイル形式に変更するには、[Change file format] を選択して目的のファイル形式を選択
し、[Change] を選択します。
関連するコンソールの例
• 実習 2: 音声合成 (プレーンテキスト入力) (p. 6)
• コンソールを使用してレキシコンを適用する (音声合成) (p. 22)
次のステップ
コンソールを使用してレキシコンを適用する (音声合成) (p. 22)
AWS CLI での SSML の使用
以下のトピックでは、Amazon Polly の AWS CLI を使用した SSML 入力の使用方法を示します。
例 1: synthesize-speech コマンドを使用して SSML
を渡す
次の synthesize-speech コマンドでは、開始と終了の <speak></speak> タグのみが必要なシン
プルな SSML 文字列を指定します (オプションで、ドキュメントヘッダー全文も指定できます)。プ
レーンテキストがデフォルトであるため、コマンドでは入力テキストが SSML であることを示す -text-type パラメーターを指定しています。SSML 文字列で必要な要素は、入力テキスト (生成され
たスピーチの対象となる)、output-format および voice-id のみです。
14
Amazon Polly 開発者ガイド
例 2: 完全な SSML ドキュメントの合成
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロン
プトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結文字
のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak>Hello world</speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
生成された speech.mp3 ファイルを再生して、合成された音声を確認します。
例 2: 完全な SSML ドキュメントの合成
この例では、ファイルに SSML の内容を保存し、synthesize-speech コマンドでそのファイル名を
指定します。この例では次の SSML を使用しています。
<?xml version="1.0"?>
<speak version="1.1"
xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://
www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="en-US">Hello World</speak>
xml:lang 属性で入力テキストの言語として en-US (米国英語) が指定されていることに注意してくだ
さい。入力テキストの言語と選択ボイスの言語が SynthesizeSpeech オペレーションに与える影響
については、「<speak> 要素の xml:lang 属性の使用 (p. 18)」を参照してください。
SSML をテストするには
1.
SSML をファイル (example.xml) に保存します。
2.
XML ファイルが保存されているパスから次の synthesize-speech コマンドを実行し、入力に
SSML を指定します。
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプ
ロンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows
連結文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text file://example.xml \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
3.
speech.mp3 ファイルを再生して、合成された音声を確認します。
例 3: 一般的な SSML タグの使用
このセクションでは、特定の結果を得るための一般的な SSML タグの一部の使用方法を説明します。
そのほかの例については、Speech Synthesis Markup Language (SSML) Version 1.1 を参照してくださ
い。
15
Amazon Polly 開発者ガイド
例 3: 一般的な SSML タグの使用
synthesize-speech コマンドを使用して、このセクションの例をテストできます。
<break> 要素の使用
次の synthesize-speech コマンドは、<break> 要素を使用して、生成される音声の「Hello」と
「World」の間に 300 ミリ秒のディレイを追加します。
"<speak>Hello <break time='300ms'/> World</speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロン
プトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結文字
のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak>Hello <break time='300ms'/> World</speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
生成された speech.mp3 ファイルを再生して、合成された音声を確認します。
<prosody> 要素の使用
この要素を使用して、音声のピッチ、話す速度、ボリュームを制御できます。
• 次の SSML は <prosody> 要素を使用してボリュームを制御します。
"<speak><prosody volume='+20dB'>Hello world</prosody></speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロ
ンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結
文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak><prosody volume='+20dB'>Hello world</prosody></speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
• 次の SSML <prosody> 要素を使用してピッチを制御します。
"<speak><prosody pitch='x-high'>Hello world</prosody></speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロ
ンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結
文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak><prosody pitch='x-high'>Hello world</prosody></speak>" \
--output-format mp3 \
16
Amazon Polly 開発者ガイド
例 3: 一般的な SSML タグの使用
--voice-id Joanna \
speech.mp3
• 次の SSML は <prosody> 要素を使用して話す速度を指定します。
"<speak><prosody rate='x-fast'>Hello world</prosody></speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロ
ンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結
文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak><prosody rate='x-fast'>Hello world</prosody></speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
• 次の例に示すように、<prosody> 要素に複数の属性を指定できます。
"<speak><prosody volume='x-loud' pitch='x-high' rate='x-fast'>Hello world</
prosody></speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロ
ンプトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結
文字のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak><prosody volume='x-loud' pitch='x-high' rate='x-fast'>Hello
world</prosody></speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
生成された speech.mp3 ファイルを再生して、合成された音声を確認します。
<emphasis> 要素の使用
この要素を使用して、特定の単語または語句を話すときにストレスやプロミネンスを適用するように
指定できます。
"<speak><emphasis level='strong'>Hello</emphasis> world how are you?</speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロン
プトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結文字
のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak><emphasis level='strong'>Hello</emphasis> world how are you?</
speak>" \
--output-format mp3 \
--voice-id Joanna \
17
Amazon Polly 開発者ガイド
例 4: 発音の制御
speech.mp3
生成された speech.mp3 ファイルを再生して、合成された音声を確認します。
例 4: 発音の制御
この例では、発音を制御するために使用できる一般的な SSML タグの一部を説明します。
<say-as> 要素の使用
この要素を使用して、要素内のテキストのタイプに関する情報を提供できます。次の SSML で
は、<say-as> はテキスト 4/6 を日/月形式の日付値として扱う必要があることを示します。
"<speak>Today is <say-as interpret-as='date' format='dm' >4/6</say-as></
speak>"
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロン
プトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結文字
のキャレット (^) に置き換えてください。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak>Today is <say-as interpret-as='date' format='dm' >4/6</sayas></speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
生成される音声では「Today is June 4th」と発声されます。<say-as> タグは、interpret-as 属性
で追加コンテキストを指定することで、そのテキストをどのように解釈するかを説明します。
生成された speech.mp3 ファイルを再生して、合成された音声を確認します。
<speak> 要素の xml:lang 属性の使用
<speak> 要素の xml:lang 属性を使用して対象言語を指定することで、入力テキスト言語に
とって外国語である単語の発音を向上させることができます。これは、TTS エンジンで対象言
語固有の単語に対し異なる発音ルールを強制的に適用するものです。次の例では、入力テキス
トおよび synthesize-speech コールで指定できるボイスで異なる言語が組み合わされていま
す。synthesize-speech コマンドを使用してこれらの例をテストし、結果を確認できます。
この例では、選択ボイスは米国英語のボイスです。Amazon Polly では、入力テキストは選択ボイス
と同じ言語であることを前提としています。特定の単語をスペイン語で発音させるには、対象の単語
を、スペイン語であるとマーキングする必要があります。
aws polly synthesize-speech \
--text-type ssml \
--text "<speak>That restaurant is terrific. <xml:lang=\"es-ES\">Mucho gusto</
xml:lang>!</speak>" \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
入力テキストの言語が指定されているため、Amazon Polly は生成されたスペイン語音素を音響距離
がもっとも小さい英語音素にマッピングします。その結果、Salli は米国のネイティブスピーカーとし
て、スペイン語での正しい発音を知っているうえで米国英語のアクセントでテキストを読みます。
18
Amazon Polly 開発者ガイド
例 4: 発音の制御
Note
このような処理は、Amazon Polly の言語ポートフォリオにある言語のペアに限定されます。
言語の音韻構造によっては、他のペアよりうまく機能する言語ペアもあります。
生成された speech.mp3 ファイルを再生して、合成された音声を聞きます。
19
Amazon Polly 開発者ガイド
複数のレキシコンを適用する
レキシコンの管理
発音レキシコンで、単語の発音をカスタマイズできます。Amazon Polly は、AWS リージョンに
レキシコンを保存するために使用できる API オペレーションを提供します。これらのレキシコ
ンは、その特定のリージョンに固有です。SynthesizeSpeech オペレーションを使用してテキ
ストを合成するとき、そのリージョンから 1 つ以上のレキシコンを使用できます。これにより、
合成が始まる前に、入力テキストに指定されたレキシコンが適用されます。詳細については、
「SynthesizeSpeech (p. 69)」を参照してください。
Note
これらのレキシコンは、Pronunciation Lexicon Specification (PLS) の W3C 推奨事項に準
拠する必要があります。詳細については、W3C ウェブサイトの「Pronunciation Lexicon
Specification (PLS) バージョン 1.0」を参照してください。
以下は、音声合成エンジンでレキシコンを使用する方法の例です。
• 一般的な単語は、「g3t sm4rt」 (get smart) のように文字を数字に置き換えたスタイルで書かれる
場合があります。人間はこれらの単語を正しく読むことができます。ただし、テキスト読み上げ機
能 (TTS) エンジンでは文字をそのまま読み上げ、名前をスペルどおりに発音します。このような場
合、Amazon Polly でレキシコンを活用し、合成された音声をカスタマイズできます。この例では、
レキシコンで「g3t sm4rt」という単語に「get smart」というエイリアスを指定できます。
• テキスト内に W3C などの頭文字が使用されている場合があります。レキシコンを使用して W3C の
エイリアスを定義すると、W3C は完全な形の「World Wide Web Consortium」に置き換えられて読
み上げられます。
レキシコンにより、選択した言語で一般的でない単語を Amazon Polly が発音する方法をさらにコン
トロールできます。たとえば、音声記号を使用して発音を指定できます。詳細については、W3C ウェ
ブサイトの「Pronunciation Lexicon Specification (PLS) バージョン 1.0」を参照してください。
トピック
• 複数のレキシコンを適用する (p. 20)
• Amazon Polly コンソールを使用したレキシコンの管理 (p. 21)
• AWS CLI を使用してレキシコンを管理する (p. 24)
複数のレキシコンを適用する
テキストに最大 5 つのレキシコンを適用できます。テキストに適用する複数のレキシコンに同じ書記
素がある場合、適用順序により音声の結果が異なります。たとえば、「Hello, my name is Bob.」とい
20
Amazon Polly 開発者ガイド
コンソールを使用したレキシコンの管理
うテキストがあるとします。そして、異なるレキシコンで 2 つの語彙素が同じ書記素 Bob を使用して
いるとします。
LexA
<lexeme>
<grapheme>Bob</grapheme>
<alias>Robert</alias>
</lexeme>
LexB
<lexeme>
<grapheme>Bob</grapheme>
<alias>Bobby</alias>
</lexeme>
レキシコンが LexA の後に LexB という順番になっている場合、合成された音声は、「Hello, my
name is Robert.」となります。LexB の後に LexA という順番になっている場合、合成された音声は、
「Hello, my name is Bobby.」となります。
Example – LexB の前に LexA を適用する
aws polly synthesize-speech \
--lexicon-names LexA LexB \
--output-format mp3 \
--text "Hello, my name is Bob" \
--voice-id Justin \
bobAB.mp3
音声出力: 「Hello, my name is Robert.」
Example – LexA の前に LexB を適用する
aws polly synthesize-speech \
--lexicon-names LexB LexA \
--output-format mp3 \
--text "Hello, my name is Bob" \
--voice-id Justin \
bobBA.mp3
音声出力: 「Hello, my name is Bobby.」
Amazon Polly コンソールを使用したレキシコンの適用の詳細については、コンソールを使用してレキ
シコンを適用する (音声合成) (p. 22) を参照してください。
Amazon Polly コンソールを使用したレキシコン
の管理
Amazon Polly コンソールを使用して、レキシコンのアップロード、ダウンロード、適用、フィルタリ
ング、および削除ができます。以下の手順で、これらの各プロセスを示します。
21
Amazon Polly 開発者ガイド
コンソールを使用したレキシコンのアップロード
コンソールを使用したレキシコンのアップロード
発音レキシコンを使用するには、最初にアップロードする必要があります。コンソールにはレキシコ
ンをアップロードできる場所が 2 つあります。[Text-to-Speech] タブ、および [Lexicons] タブです。
以下のプロセスでは、選択した言語で一般的でない語句がどのように発音されるかをカスタマイズす
るのに使用できるレキシコンを追加する方法を説明します。
レキシコンを [Lexicons] タブから追加するには
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
[Lexicons] タブを選択します。
3.
[Upload] を選択します。
4.
アップロードするレキシコンを見つけます。.pls および .xml の拡張子を使用する PLS ファイル
のみ使用できます。
5.
[Open] を選択します。同じ名前でレキシコンが (.pls または .xml ファイルにかかわりなく) すで
に存在する場合、レキシコンをアップロードすると既存のレキシコンは上書きされます。
レキシコンを [Text-to-Speech] タブから追加するには
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
[Text-to-Speech] タブを選択します。
3.
[Customize pronunciation of words or phrases using lexicons] を選択し、次に [Upload lexicon] を
選択します。
4.
アップロードするレキシコンを見つけます。.pls および .xml の拡張子を使用する PLS ファイル
のみ使用できます。
5.
[Open] を選択します。同じ名前のレキシコンが (.pls または .xml ファイルにかかわりなく) すで
に存在する場合、レキシコンをアップロードすると既存のレキシコンは上書きされます。
コンソールを使用してレキシコンを適用する (音声
合成)
次の手順では、「W3C」を「World Wide Web Consortium」に置き換える W3c.pls レキシコンを適
用することで、入力テキストにレキシコンを適用する方法を示します。テキストに複数のレキシコン
を適用する場合、最初の一致が後の一致より優先する上から下の順序で適用されます。レキシコンで
指定した言語が選択した言語と同じ場合、レキシコンはテキストにのみ適用されます。
レキシコンはプレーンテキストまたは SSML 入力に適用できます。
22
Amazon Polly 開発者ガイド
コンソールを使用してレキシコ
ンのリストをフィルタリングする
Example – W3C.pls レキシコンを適用する
この演習に必要なレキシコンを作成するには、PutLexicon オペレーションの使用 (p. 25) を参照し
てください。トピックの一番上に示されている W3C.pls レキシコンを作成するには、空のテキスト
ファイルを使用します。このファイルを保存する場所を忘れないでください。
W3C.pls レキシコンを入力に適用するには
この例では、「W3C」を「World Wide Web Consortium」に置き換えるレキシコンを説明しま
す。この実習結果を、英語と別の言語の両方で「Amazon Polly コンソールを使用した SSML の使
用 (p. 13)」の例と比較してみてください。
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
次のいずれかを行ってください。
• [Plain text] タブを選択し、テキスト入力ボックスにこのテキストを入力するか貼り付けます。
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>
3.
4.
5.
[Choose a language and region] のリストから English US を選択し、このテキストに使用する音
声を選択します。
[Customize pronunciation of words or phrases using lexicons] を選択します。
レキシコンのリストから、W3C (English, US) を選択します。
W3C (English, US) レキシコンがリストにない場合、[Upload lexicon] を選択してアップロード
し、リストから選択します。
6.
7.
音声をすぐに聞くには、[Listen to speech] を選択します。
音声をファイルに保存するには、
a.
[Save speech to MP3] を選択します。
b.
別のファイル形式に変更するには、[Change file format] を選択して目的のファイル形式を選
択し、[Change] を選択します。
前の手順を繰り返しますが、異なる言語を選択し、出力の違いを確認してください。
コンソールを使用してレキシコンのリストをフィル
タリングする
次の手順では、選択した言語のレキシコンのみが表示されるようにレキシコンのリストをフィルタリ
ングする方法を説明します。
言語ごとにリスト表示されるレキシコンをフィルタリングするには
1.
2.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
[Lexicons] タブを選択します。
23
Amazon Polly 開発者ガイド
コンソールを使用したレキシコンのダウンロード
3.
[Filter] を選択します。
4.
言語のリストから、フィルタリングする言語を選択します。
選択した言語のレキシコンのみがリストに表示されます。
コンソールを使用したレキシコンのダウンロード
以下のプロセスでは、1 つ以上のレキシコンをダウンロードする方法を説明します。ファイルにある
レキシコンのエントリの追加、削除、または変更をし、レキシコンを最新の状態に保つために再度
アップロードします。
1 つ以上のレキシコンをダウンロードするには
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
[Lexicons] タブを選択します。
3.
ダウンロードするレキシコンを 1 つ、または複数選択します。
a.
1 つのレキシコンをダウンロードするには、リストから名前を選択します。
b.
単一の圧縮アーカイブファイルとして複数のレキシコンをダウンロードするには、リストに
あるダウンロードする各エントリの横にあるチェックボックスを選択します。
4.
[Download] を選択します。
5.
レキシコンをダウンロードするフォルダを開きます。
6.
[Save] を選択します。
コンソールを使用してレキシコンを削除する
レキシコンを削除するには
以下のプロセスでは、レキシコンを削除する方法を説明します。レキシコンを削除した後は、もう
一度レキシコンを使用する前に再度追加する必要があります。個々のレキシコンの横にあるチェック
ボックスを選択して、1 つ以上のレキシコンを同時に削除できます。
1.
AWS マネジメントコンソールにサインインして、Amazon Polly コンソール (https://
console.aws.amazon.com/polly/) を開きます。
2.
[Lexicons] タブを選択します。
3.
削除するレキシコンをリストから 1 つ以上選択します。
4.
[Delete] を選択します。
5.
リージョンからレキシコンを削除するには [Delete] を、そのままにするには [Cancel] を選択しま
す。
AWS CLI を使用してレキシコンを管理する
以下のトピックでは、発音レキシコンを管理するのに必要な AWS CLI コマンドを取り上げます。
トピック
• PutLexicon オペレーションの使用 (p. 25)
• GetLexicon オペレーションの使用 (p. 30)
• ListLexicons オペレーションの使用 (p. 32)
• DeleteLexicon オペレーションの使用 (p. 33)
24
Amazon Polly 開発者ガイド
PutLexicon
PutLexicon オペレーションの使用
Amazon Polly では、PutLexicon (p. 67) を使用してアカウントの AWS リージョンに発
音レキシコンを保存できます。次に、サービスがテキストを合成し始める前に適用する
SynthesizeSpeech (p. 69) リクエストに保存した 1 つ以上のレキシコンを指定できます。詳細につ
いては、「レキシコンの管理 (p. 20)」を参照してください。
このセクションでは、レキシコンの例、および保存とテストの手順を説明します。
Note
これらのレキシコンは、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 はこの例のレキシコンを使用できます。
Note
音声に関連付けられている言語コードを探すため、DescribeVoices オペレーションを
使用できます。
• alphabet 属性は IPA を指定します。つまり、国際音声記号 (IPA) のアルファベットが発音に使
用されます。IPA は発音を書くためのアルファベットの 1 つです。また、Amazon Polly は 拡張
SAM 音声記号 (X-SAMPA) もサポートしています。
• <lexeme> 要素は、<grapheme>(単語のテキスト表記) と <alias> の間のマッピングを説明しま
す。
このレキシコンをテストするには、以下を実行します。
25
Amazon Polly 開発者ガイド
PutLexicon
1.
レキシコンを example.pls として保存します。
2.
us-east-1 リージョンに (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>
26
Amazon Polly 開発者ガイド
PutLexicon
<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 という単語は WWW Consortium に変更されます。変更したテキストは次
のように表示されます。
The WWW Consortium is a Consortium
• 3 番目の語彙素で定義したエイリアスは、元のテキストの一部にある Consortium という単語にのみ
適用され、以下のテキストの結果となります。
The World Wide Web Consortium is a Community.
AWS CLI を使用してこれを以下のようにテストできます。
1.
レキシコンを example.pls として保存します。
2.
us-east-1 リージョンに w3c の名前でレキシコンを保存するため put-lexicon コマンドを実行
します。
aws polly put-lexicon \
--name w3c \
--content file://example.pls
3.
w3c レキシコンは返されたレキシコンのリストにあることを確認するために、list-lexicons
コマンドを実行します。
aws polly list-lexicons
27
Amazon Polly 開発者ガイド
PutLexicon
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 としてそれぞれ保存するとしま
す。SynthesizeSpeech 呼び出しでレキシコンの順序を指定 (w3c の次に w3cAlternate) すると、
28
Amazon Polly 開発者ガイド
PutLexicon
最初のレキシコンで指定した W3C のエイリアスは 2 番目より優先されます。レキシコンをテストす
るには、以下を実行します。
1.
レキシコンを w3c.pls および w3cAlternate という名前でローカルにファイルとして保存しま
す。
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
例 4: PutLexicon の Python コード
次の Python コードの例では、レキシコンを保存するのに AWS SDK for Python (Boto) を使用しま
す。次の点に注意してください。
• ローカルのレキシコンファイル名と保存済みのレキシコンの名前を指定してコードを更新する必要
があります。
• 例では、pls というサブディレクトリで作成したレキシコンファイルがあると想定しています。必
要に応じてパスを更新する必要があります。
次のコード例では、AWS SDK の設定ファイルに保存してあるデフォルトの認証情報を使用します。
設定ファイルを作成する方法については、「ステップ 3.1: AWS Command Line Interface (AWS CLI)
を設定する (p. 7)」を参照してください。
from argparse import ArgumentParser
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
29
Amazon Polly 開発者ガイド
GetLexicon
# Define and parse the command line arguments
cli = ArgumentParser(description="PutLexicon example")
cli.add_argument("path", type=str, metavar="FILE_PATH")
cli.add_argument("-n", "--name", type=str, required=True,
metavar="LEXICON_NAME", dest="name")
arguments = cli.parse_args()
# Create a client using the credentials and region defined in the adminuser
# section of the AWS credentials and configuration files
session = Session(profile_name="adminuser")
polly = session.client("polly")
# Open the PLS lexicon file for reading
try:
with open(arguments.path, "r") as lexicon_file:
# Read the pls file contents
lexicon_data = lexicon_file.read()
# Store the PLS lexicon on the service.
# If a lexicon with that name already exists,
# its contents will be updated
response = polly.put_lexicon(Name=arguments.name,
Content=lexicon_data)
except (IOError, BotoCoreError, ClientError) as error:
# Could not open/read the file or the service returned an error,
# exit gracefully
cli.error(error)
print(u"The \"{0}\" lexicon is now available for
use.".format(arguments.name))
GetLexicon オペレーションの使用
Amazon Polly は、特定のリージョンのアカウントに保存した発音レキシコンのコンテンツを取得する
ために、GetLexicon (p. 63) API オペレーションを提供します。
次の get-lexicon AWS CLI コマンドは、example レキシコンのコンテンツを取得します。
aws polly get-lexicon \
--name example
まだアカウントに保存したレキシコンがないなら、PutLexicon オペレーションを使用してレキシコ
ンを保存できます。詳細については、「PutLexicon オペレーションの使用 (p. 25)」を参照してく
ださい。
レスポンスの例を次に示します。レキシコンのコンテンツに加えて、レスポンスでは、レキシコン
が適用される言語コード、レキシコンで定義されている語彙素の数、リソースの Amazon リソース
ネーム (ARN)、レキシコンのサイズ (バイト単位) などのメタデータを返します。LastModified 値
は、Unix タイムスタンプです。
{
"Lexicon": {
"Content": "lexicon content in plain text PLS format",
"Name": "example"
30
Amazon Polly 開発者ガイド
GetLexicon
},
"LexiconAttributes": {
"LanguageCode": "en-US",
"LastModified": 1474222543.989,
"Alphabet": "ipa",
"LexemesCount": 1,
"LexiconArn": "arn:aws:polly:us-east-1:account-id:lexicon/example",
"Size": 495
}
}
次の Python コードでは、AWS SDK for Python (Boto) を使用して AWS リージョンに保存しているす
べてのレキシコンを取得します。例では、レキシコン名をコマンドラインのパラメーターとして受け
入れて、そのレキシコンのみを取得し、ローカルに保存された場所の tmp パスを印刷します。
次のコード例では、AWS SDK の設定ファイルに保存してあるデフォルトの認証情報を使用します。
設定ファイルを作成する方法については、「ステップ 3.1: AWS Command Line Interface (AWS CLI)
を設定する (p. 7)」を参照してください。
from argparse import ArgumentParser
from os import path
from tempfile import gettempdir
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
# Define and parse the command line arguments
cli = ArgumentParser(description="GetLexicon example")
cli.add_argument("name", type=str, metavar="LEXICON_NAME")
arguments = cli.parse_args()
# Create a client using the credentials and region defined in the adminuser
# section of the AWS credentials and configuration files
session = Session(profile_name="adminuser")
polly = session.client("polly")
print(u"Fetching {0}...".format(arguments.name))
try:
# Fetch lexicon by name
response = polly.get_lexicon(Name=arguments.name)
except (BotoCoreError, ClientError) as error:
# The service returned an error, exit gracefully
cli.error(error)
# Get the lexicon data from the response
lexicon = response.get("Lexicon", {})
# Access the lexicon's content
if "Content" in lexicon:
output = path.join(gettempdir(), u"%s.pls" % arguments.name)
print(u"Saving to %s..." % output)
try:
# Save the lexicon contents to a local file
with open(output, "w") as pls_file:
pls_file.write(lexicon["Content"])
except IOError as error:
31
Amazon Polly 開発者ガイド
ListLexicons
# Could not write to file, exit gracefully
cli.error(error)
else:
# The response didn't contain lexicon data, exit gracefully
cli.error("Could not fetch lexicons contents")
print("Done.")
ListLexicons オペレーションの使用
Amazon Polly は、特定の AWS リージョンのアカウントの発音レキシコンのリストを取得するのに使
用できる ListLexicons (p. 65) API オペレーションを提供します。次の AWS CLI 呼び出しでは、useast-1 リージョンのアカウントのレキシコンをリスト表示します。
aws polly list-lexicons
次はレスポンスの例で、w3c と tomato という 2 つのレキシコンを表示しています。各レキシコン
で、レスポンスは、レキシコンが適用される言語コード、レキシコンで定義されている語彙素の数、
バイト単位のサイズなどのメタデータを返します。言語コードは、レキシコンで定義されている語彙
素が適用される言語およびロケールを示します。
{
"Lexicons": [
{
"Attributes": {
"LanguageCode": "en-US",
"LastModified": 1474222543.989,
"Alphabet": "ipa",
"LexemesCount": 1,
"LexiconArn": "arn:aws:polly:aws-region:account-id:lexicon/
w3c",
"Size": 495
},
"Name": "w3c"
},
{
"Attributes": {
"LanguageCode": "en-US",
"LastModified": 1473099290.858,
"Alphabet": "ipa",
"LexemesCount": 1,
"LexiconArn": "arn:aws:polly:aws-region:account-id:lexicon/
tomato",
"Size": 645
},
"Name": "tomato"
}
]
}
次の Python コード例では、AWS SDK for Python (Boto) for Python (Boto) を使用して、ローカルの
AWS 設定で指定したリージョンのアカウントのレキシコンをリスト表示します。設定ファイルを作成
する方法については、「ステップ 3.1: AWS Command Line Interface (AWS CLI) を設定する (p. 7)」を
参照してください。
32
Amazon Polly 開発者ガイド
DeleteLexicon
import sys
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
# Create a client using the credentials and region defined in the adminuser
# section of the AWS credentials and configuration files
session = Session(profile_name="adminuser")
polly = session.client("polly")
try:
# Request the list of available lexicons
response = polly.list_lexicons()
except (BotoCoreError, ClientError) as error:
# The service returned an error, exit gracefully
print(error)
sys.exit(-1)
# Get the list of lexicons in the response
lexicons = response.get("Lexicons", [])
print("{0} lexicon(s) found".format(len(lexicons)))
# Output a formatted list of lexicons with some of the attributes
for lexicon in lexicons:
print((u" - {Name} ({Attributes[LanguageCode]}), "
"{Attributes[LexemesCount]} lexeme(s)").format(**lexicon))
DeleteLexicon オペレーションの使用
Amazon Polly は、DeleteLexicon (p. 59) アカウントの特定の AWS リージョンから発音レキシコン
を削除するために API オペレーションを提供します。以下の AWS CLI は指定したレキシコンを削除
します。
次の AWS CLI の例は、Unix、Linux、OS X 用の形式です。このサンプルを Windows コマンドプロン
プトで実行するには、各行の末尾にある Unix 連結文字のバックスラッシュ (\) を Windows 連結文字
のキャレット (^) に置き換えてください。
aws polly delete-lexicon \
--name example
次の Python コード例は、ローカルの AWS 設定で指定したリージョンのレキシコンを削除するのに
AWS SDK for Python (Boto) を使用します。例では、指定したレキシコンのみを削除します。実際に
レキシコンを削除する前に、処理を進めることを確認するよう求めます。
次のコード例では、AWS SDK の設定ファイルに保存してあるデフォルトの認証情報を使用します。
設定ファイルを作成する方法については、「ステップ 3.1: AWS Command Line Interface (AWS CLI)
を設定する (p. 7)」を参照してください。
from argparse import ArgumentParser
from sys import version_info
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
33
Amazon Polly 開発者ガイド
DeleteLexicon
# Define and parse the command line arguments
cli = ArgumentParser(description="DeleteLexicon example")
cli.add_argument("name", type=str, metavar="LEXICON_NAME")
arguments = cli.parse_args()
# Create a client using the credentials and region defined in the adminuser
# section of the AWS credentials and configuration files
session = Session(profile_name="adminuser")
polly = session.client("polly")
# Request confirmation
prompt = input if version_info >= (3, 0) else raw_input
proceed = prompt((u"This will delete the \"{0}\" lexicon,"
" do you want to proceed? [y,n]: ").format(arguments.name))
if proceed in ("y", "Y"):
print(u"Deleting {0}...".format(arguments.name))
try:
# Request deletion of a lexicon by name
response = polly.delete_lexicon(Name=arguments.name)
except (BotoCoreError, ClientError) as error:
# The service returned an error, exit gracefully
cli.error(error)
print("Done.")
else:
print("Cancelled.")
34
Amazon Polly 開発者ガイド
アプリケーション例
このセクションでは、Amazon Polly の学習に使用できるその他の例を示します。これらの例を使用し
始める前に、まず「Amazon Polly: 仕組み (p. 3)」を読んで「Amazon Polly の使用開始 (p. 4)」で説明
されているステップに従うことをお勧めします。
トピック
• Python の例 (HTML5 クライアントおよび Python サーバー) (p. 36)
• Android の例 (p. 46)
• iOS の例 (p. 48)
35
Amazon Polly 開発者ガイド
Python の例
Python の例 (HTML5 クライアントおよび Python
サーバー)
このサンプルアプリケーションは、以下の内容で構成されています。
• HTTP チャンク転送コードを使用する HTTP 1.1 サーバー (「Chunked Transfer Coding」を参照)
• HTTP 1.1 サーバーとやり取りするシンプルな HTML5 ユーザーインターフェイス (以下を参照):
この例の目的は、Amazon Polly を使用してブラウザベースの HTML5 アプリケーションから音声をス
トリーミングする方法を示すことです。テキストの合成と同時に Amazon Polly により生成された音
声ストリームを使用する方法は、応答性が重要な要素であるユースケース (ダイアログシステムやスク
リーンリーダーなど) に推奨されるアプローチです
このサンプルアプリケーションを実行するには、以下のものが必要です。
• HTML5 および EcmaScript5 標準に準拠したウェブブラウザ (Chrome 23.0 以上、Firefox 21.0 以
上、Internet Explorer 9.0 以上など)
• Python バージョン 3.0 以上
アプリケーションをテストするには
1.
2.
3.
サーバーコードを server.py として保存します。コードについては、「Python の例: Python
サーバーコード (server.py) (p. 40)」を参照してください。
HTML5 クライアントコードを index.html として保存します。コードについては、「Python の
例: HTML5 ユーザーインターフェイス (index.html) (p. 37)」を参照してください。
server.py を保存したパスから次のコマンドを実行し、アプリケーションを起動します (システム
によっては、コマンドの実行時に python ではなく python3 を使用する必要があります)。
$ python
server.py
アプリケーションが起動すると、URL がターミナルに表示されます。
36
Amazon Polly 開発者ガイド
Python の例: index.html
4.
5.
6.
ターミナルに表示された URL をウェブブラウザで開きます。
アプリケーションサーバーのアドレスとポートを渡して、server.py のパラメーターとして使用
することができます。詳細については、python server.py -h を実行してください。
音声を聞くには、リストから音声を選択してテキストを入力し、[Read] を選択します。Amazon
Polly が使用可能な最初の音声データチャンクを転送するとすぐに、音声の再生が始まります。
アプリケーションのテストが終わって Python サーバーを停止するには、サーバーが実行されて
いるターミナルで Ctrl+C (Windows では Ctrl+Z) を押します。
Note
サーバーにより、AWS SDK for Python (Boto) を使用して Boto3 が作成されます。クライア
ントは、コンピュータ上の AWS Config ファイルに保存された認証情報を使用して、Amazon
Polly へのリクエストを署名および認証します。AWS Config ファイルを作成して認証情
報を保存する方法の詳細については、AWS Command Line Interface ユーザーガイド の
「Configuring the AWS Command Line Interface」を参照してください。
Python の例: HTML5 ユーザーインターフェイス
(index.html)
このセクションでは、「Python の例 (HTML5 クライアントおよび Python サーバー) (p. 36)」で説
明されている HTML5 クライアントのコードを示します。
<html>
<head>
<title>Text-to-Speech Example Application</title>
<script>
/*
* This sample code requires a web browser with support for both the
* HTML5 and ECMAScript 5 standards; the following is a noncomprehensive
* list of compliant browsers and their minimum version:
*
* - Chrome 23.0+
* - Firefox 21.0+
* - Internet Explorer 9.0+
* - Edge 12.0+
* - Opera 15.0+
* - Safari 6.1+
* - Android (stock web browser) 4.4+
* - Chrome for Android 51.0+
* - Firefox for Android 48.0+
* - Opera Mobile 37.0+
* - iOS (Safari Mobile and Chrome) 3.2+
* - Internet Explorer Mobile 10.0+
* - Blackberry Browser 10.0+
*/
// Mapping of the OutputFormat parameter of the SynthesizeSpeech API
// and the audio format strings understood by the browser
var AUDIO_FORMATS = {
'ogg_vorbis': 'audio/ogg',
'mp3': 'audio/mpeg',
'pcm': 'audio/wave; codecs=1'
37
Amazon Polly 開発者ガイド
Python の例: index.html
};
/**
* Handles fetching JSON over HTTP
*/
function fetchJSON(method, url, onSuccess, onError) {
var request = new XMLHttpRequest();
request.open(method, url, true);
request.onload = function () {
// If loading is complete
if (request.readyState === 4) {
// if the request was successful
if (request.status === 200) {
var data;
// Parse the JSON in the response
try {
data = JSON.parse(request.responseText);
} catch (error) {
onError(request.status, error.toString());
}
onSuccess(data);
} else {
onError(request.status, request.responseText)
}
}
};
request.send();
}
/**
* Returns a list of audio formats supported by the browser
*/
function getSupportedAudioFormats(player) {
return Object.keys(AUDIO_FORMATS)
.filter(function (format) {
var supported =
player.canPlayType(AUDIO_FORMATS[format]);
return supported === 'probably' || supported === 'maybe';
});
}
// Initialize the application when the DOM is loaded and ready to be
// manipulated
document.addEventListener("DOMContentLoaded", function () {
var input = document.getElementById('input'),
voiceMenu = document.getElementById('voice'),
text = document.getElementById('text'),
player = document.getElementById('player'),
submit = document.getElementById('submit'),
supportedFormats = getSupportedAudioFormats(player);
// Display a message and don't allow submitting the form if the
// browser doesn't support any of the available audio formats
if (supportedFormats.length === 0) {
submit.disabled = true;
alert('The web browser in use does not support any of the' +
38
Amazon Polly 開発者ガイド
Python の例: index.html
' available audio formats. Please try with a different'
+
' one.');
}
// Play the audio stream when the form is submitted successfully
input.addEventListener('submit', function (event) {
// Validate the fields in the form, display a message if
// unexpected values are encountered
if (voiceMenu.selectedIndex <= 0 || text.value.length === 0)
{
alert('Please fill in all the fields.');
} else {
var selectedVoice = voiceMenu
.options[voiceMenu.selectedIndex]
.value;
// Point the player to the streaming server
player.src = '/read?voiceId=' +
encodeURIComponent(selectedVoice) +
'&text=' + encodeURIComponent(text.value) +
'&outputFormat=' + supportedFormats[0];
player.play();
}
// Stop the form from submitting,
// Submitting the form is allowed only if the browser doesn't
// support Javascript to ensure functionality in such a case
event.preventDefault();
});
// Load the list of available voices and display them in a menu
fetchJSON('GET', '/voices',
// If the request succeeds
function (voices) {
var container = document.createDocumentFragment();
// Build the list of options for the menu
voices.forEach(function (voice) {
var option = document.createElement('option');
option.value = voice['Id'];
option.innerHTML = voice['Name'] + ' (' +
voice['Gender'] + ', ' +
voice['LanguageName'] + ')';
container.appendChild(option);
});
// Add the options to the menu and enable the form field
voiceMenu.appendChild(container);
voiceMenu.disabled = false;
},
// If the request fails
function (status, response) {
// Display a message in case loading data from the server
// fails
alert(status + ' - ' + response);
});
});
39
Amazon Polly 開発者ガイド
Python の例: server.py
</script>
<style>
#input {
min-width: 100px;
max-width: 600px;
margin: 0 auto;
padding: 50px;
}
#input div {
margin-bottom: 20px;
}
#text {
width: 100%;
height: 200px;
display: block;
}
#submit {
width: 100%;
}
</style>
</head>
<body>
<form id="input" method="GET" action="/read">
<div>
<label for="voice">Select a voice:</label>
<select id="voice" name="voiceId" disabled>
<option value="">Choose a voice...</option>
</select>
</div>
<div>
<label for="text">Text to read:</label>
<textarea id="text" maxlength="1000" minlength="1" name="text"
placeholder="Type some text here..."></textarea>
</div>
<input type="submit" value="Read" id="submit" />
</form>
<audio id="player"></audio>
</body>
</html>
Python の例: Python サーバーコード (server.py)
このセクションでは、「Python の例 (HTML5 クライアントおよび Python サーバー) (p. 36)」で説
明されている Python サーバーのコードを示します。
"""
Example Python 2.7+/3.3+ Application
This application consists of a HTTP 1.1 server using the HTTP chunked
transfer
coding (https://tools.ietf.org/html/rfc2616#section-3.6.1) and a minimal
HTML5
user interface that interacts with it.
40
Amazon Polly 開発者ガイド
Python の例: server.py
The goal of this example is to start streaming the speech to the client (the
HTML5 web UI) as soon as the first consumable chunk of speech is returned in
order to start playing the audio as soon as possible.
For use cases where low latency and responsiveness are strong requirements,
this is the recommended approach.
The service documentation contains examples for non-streaming use cases where
waiting for the speech synthesis to complete and fetching the whole audio
stream
at once are an option.
To test the application, run 'python server.py' and then open the URL
displayed in the terminal in a web browser (see index.html for a list of
supported browsers). The address and port for the server can be passed as
parameters to server.py. For more information, run: 'python server.py -h'
"""
from argparse import ArgumentParser
from collections import namedtuple
from contextlib import closing
from io import BytesIO
from json import dumps as json_encode
import os
import sys
if sys.version_info >= (3, 0):
from http.server import BaseHTTPRequestHandler, HTTPServer
from socketserver import ThreadingMixIn
from urllib.parse import parse_qs
else:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from SocketServer import ThreadingMixIn
from urlparse import parse_qs
from boto3 import Session
from botocore.exceptions import BotoCoreError, ClientError
ResponseStatus = namedtuple("HTTPStatus",
["code", "message"])
ResponseData = namedtuple("ResponseData",
["status", "content_type", "data_stream"])
# Mapping the output format used in the client to the content type for the
# response
AUDIO_FORMATS = {"ogg_vorbis": "audio/ogg",
"mp3": "audio/mpeg",
"pcm": "audio/wave; codecs=1"}
CHUNK_SIZE = 1024
HTTP_STATUS = {"OK": ResponseStatus(code=200, message="OK"),
"BAD_REQUEST": ResponseStatus(code=400, message="Bad
request"),
"NOT_FOUND": ResponseStatus(code=404, message="Not found"),
"INTERNAL_SERVER_ERROR": ResponseStatus(code=500,
message="Internal server error")}
PROTOCOL = "http"
ROUTE_INDEX = "/index.html"
ROUTE_VOICES = "/voices"
ROUTE_READ = "/read"
41
Amazon Polly 開発者ガイド
Python の例: server.py
# Create a client using the credentials and region defined in the adminuser
# section of the AWS credentials and configuration files
session = Session(profile_name="adminuser")
polly = session.client("polly")
class HTTPStatusError(Exception):
"""Exception wrapping a value from http.server.HTTPStatus"""
def __init__(self, status, description=None):
"""
Constructs an error instance from a tuple of
(code, message, description), see http.server.HTTPStatus
"""
super(HTTPStatusError, self).__init__()
self.code = status.code
self.message = status.message
self.explain = description
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""An HTTP Server that handle each request in a new thread"""
daemon_threads = True
class ChunkedHTTPRequestHandler(BaseHTTPRequestHandler):
""""HTTP 1.1 Chunked encoding request handler"""
# Use HTTP 1.1 as 1.0 doesn't support chunked encoding
protocol_version = "HTTP/1.1"
def query_get(self, queryData, key, default=""):
"""Helper for getting values from a pre-parsed query string"""
return queryData.get(key, [default])[0]
def do_GET(self):
"""Handles GET requests"""
# Extract values from the query string
path, _, query_string = self.path.partition('?')
query = parse_qs(query_string)
response = None
print(u"[START]: Received GET for %s with query: %s" % (path, query))
try:
# Handle the possible request paths
if path == ROUTE_INDEX:
response = self.route_index(path, query)
elif path == ROUTE_VOICES:
response = self.route_voices(path, query)
elif path == ROUTE_READ:
response = self.route_read(path, query)
else:
response = self.route_not_found(path, query)
self.send_headers(response.status, response.content_type)
42
Amazon Polly 開発者ガイド
Python の例: server.py
self.stream_data(response.data_stream)
except HTTPStatusError as err:
# Respond with an error and log debug
# information
if sys.version_info >= (3, 0):
self.send_error(err.code, err.message, err.explain)
else:
self.send_error(err.code, err.message)
self.log_error(u"%s %s %s - [%d] %s", self.client_address[0],
self.command, self.path, err.code, err.explain)
print("[END]")
def route_not_found(self, path, query):
"""Handles routing for unexpected paths"""
raise HTTPStatusError(HTTP_STATUS["NOT_FOUND"], "Page not found")
def route_index(self, path, query):
"""Handles routing for the application's entry point'"""
try:
return ResponseData(status=HTTP_STATUS["OK"],
content_type="text_html",
# Open a binary stream for reading the index
# HTML file
data_stream=open(os.path.join(sys.path[0],
path[1:]),
"rb"))
except IOError as err:
# Couldn't open the stream
raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"],
str(err))
def route_voices(self, path, query):
"""Handles routing for listing available voices"""
params = {}
voices = []
while True:
try:
# Request list of available voices, if a continuation token
# was returned by the previous call then use it to continue
# listing
response = polly.describe_voices(**params)
except (BotoCoreError, ClientError) as err:
# The service returned an error
raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"],
str(err))
# Collect all the voices
voices.extend(response.get("Voices", []))
# If a continuation token was returned continue, stop iterating
# otherwise
if "NextToken" in response:
params = {"NextToken": response["NextToken"]}
else:
break
43
Amazon Polly 開発者ガイド
Python の例: server.py
json_data = json_encode(voices)
bytes_data = bytes(json_data, "utf-8") if sys.version_info >= (3, 0)
\
else bytes(json_data)
return ResponseData(status=HTTP_STATUS["OK"],
content_type="application/json",
# Create a binary stream for the JSON data
data_stream=BytesIO(bytes_data))
def route_read(self, path, query):
"""Handles routing for reading text (speech synthesis)"""
# Get the parameters from the query string
text = self.query_get(query, "text")
voiceId = self.query_get(query, "voiceId")
outputFormat = self.query_get(query, "outputFormat")
# Validate the parameters, set error flag in case of unexpected
# values
if len(text) == 0 or len(voiceId) == 0 or \
outputFormat not in AUDIO_FORMATS:
raise HTTPStatusError(HTTP_STATUS["BAD_REQUEST"],
"Wrong parameters")
else:
try:
# Request speech synthesis
response = polly.synthesize_speech(Text=text,
VoiceId=voiceId,
OutputFormat=outputFormat)
except (BotoCoreError, ClientError) as err:
# The service returned an error
raise HTTPStatusError(HTTP_STATUS["INTERNAL_SERVER_ERROR"],
str(err))
return ResponseData(status=HTTP_STATUS["OK"],
content_type=AUDIO_FORMATS[outputFormat],
# Access the audio stream in the response
data_stream=response.get("AudioStream"))
def send_headers(self, status, content_type):
"""Send out the group of headers for a successful request"""
# Send HTTP headers
self.send_response(status.code, status.message)
self.send_header('Content-type', content_type)
self.send_header('Transfer-Encoding', 'chunked')
self.send_header('Connection', 'close')
self.end_headers()
def stream_data(self, stream):
"""Consumes a stream in chunks to produce the response's output'"""
print("Streaming started...")
if stream:
# Note: Closing the stream is important as the service throttles
on
# the number of parallel connections. Here we are using
44
Amazon Polly 開発者ガイド
Python の例: server.py
# contextlib.closing to ensure the close method of the stream
object
# will be called automatically at the end of the with statement's
# scope.
with closing(stream) as managed_stream:
# Push out the stream's content in chunks
while True:
data = managed_stream.read(CHUNK_SIZE)
self.wfile.write(b"%X\r\n%s\r\n" % (len(data), data))
# If there's no more data to read, stop streaming
if not data:
break
# Ensure any buffered output has been transmitted and close
the
# stream
self.wfile.flush()
print("Streaming completed.")
else:
# The stream passed in is empty
self.wfile.write(b"0\r\n\r\n")
print("Nothing to stream.")
# Define and parse the command line arguments
cli = ArgumentParser(description='Example Python Application')
cli.add_argument(
"-p", "--port", type=int, metavar="PORT", dest="port", default=8000)
cli.add_argument(
"--host", type=str, metavar="HOST", dest="host", default="localhost")
arguments = cli.parse_args()
# If the module is invoked directly, initialize the application
if __name__ == '__main__':
# Create and configure the HTTP server instance
server = ThreadedHTTPServer((arguments.host, arguments.port),
ChunkedHTTPRequestHandler)
print("Starting server, use <Ctrl-C> to stop...")
print(u"Open {0}://{1}:{2}{3} in a web browser.".format(PROTOCOL,
arguments.host,
arguments.port,
ROUTE_INDEX))
try:
# Listen for requests indefinitely
server.serve_forever()
except KeyboardInterrupt:
# A request to terminate has been received, stop the server
print("\nShutting down...")
server.socket.close()
45
Amazon Polly 開発者ガイド
Android の例
Android の例
次の例では、Android SDK for Amazon Polly を使用して、音声のリストから選択された音声で指定さ
れたテキストを読み上げます。
ここに示すコードは、主要なタスクを実行するものであり、エラーは処理しません。完全なコードに
ついては、AWS SDK for Android Amazon Polly のデモを参照してください。
Initialize
// Cognito pool ID. Pool needs to be unauthenticated pool with
// Amazon Polly permissions.
String COGNITO_POOL_ID = "YourCognitoIdentityPoolId";
// Region of Amazon Polly.
Regions MY_REGION = Regions.US_EAST_1;
// Initialize the Amazon Cognito credentials provider.
CognitoCachingCredentialsProvider credentialsProvider = new
CognitoCachingCredentialsProvider(
getApplicationContext(),
COGNITO_POOL_ID,
MY_REGION
);
// Create a client that supports generation of presigned URLs.
AmazonPollyPresigningClient client = new
AmazonPollyPresigningClient(credentialsProvider);
使用可能な音声のリストの取得
// Create describe voices request.
DescribeVoicesRequest describeVoicesRequest = new DescribeVoicesRequest();
// Synchronously ask Amazon Polly to describe available TTS voices.
DescribeVoicesResult describeVoicesResult =
client.describeVoices(describeVoicesRequest);
List<Voice> voices = describeVoicesResult.getVoices();
音声ストリームの URL の取得
// Create speech synthesis request.
SynthesizeSpeechPresignRequest synthesizeSpeechPresignRequest =
new SynthesizeSpeechPresignRequest()
// Set the text to synthesize.
.withText("Hello world!")
// Select voice for synthesis.
.withVoiceId(voices.get(0).getId()) // "Joanna"
// Set format to MP3.
.withOutputFormat(OutputFormat.Mp3);
// Get the presigned URL for synthesized speech audio stream.
URL presignedSynthesizeSpeechUrl =
46
Amazon Polly 開発者ガイド
Android の例
client.getPresignedSynthesizeSpeechUrl(synthesizeSpeechPresignRequest);
合成された音声の再生
// Use MediaPlayer: https://developer.android.com/guide/topics/media/
mediaplayer.html
// Create a media player to play the synthesized audio stream.
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
// Set media player's data source to previously obtained URL.
mediaPlayer.setDataSource(presignedSynthesizeSpeechUrl.toString());
} catch (IOException e) {
Log.e(TAG, "Unable to set data source for the media player! " +
e.getMessage());
}
// Prepare the MediaPlayer asynchronously (since the data source is a network
stream).
mediaPlayer.prepareAsync();
// Set the callback to start the MediaPlayer when it's prepared.
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
// Set the callback to release the MediaPlayer after playback is completed.
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
47
Amazon Polly 開発者ガイド
iOS の例
iOS の例
次の例では、iOS SDK for Amazon Polly を使用して、音声のリストから選択された音声で指定された
テキストを読み上げます。
ここに示すコードは、主要なタスクを実行するものであり、エラーは処理しません。完全なコードに
ついては、AWS SDK for iOS Amazon Polly のデモを参照してください。
Initialize
// Region of Amazon Polly.
let AwsRegion = AWSRegionType.usEast1
// Cognito pool ID. Pool needs to be unauthenticated pool with
// Amazon Polly permissions.
let CognitoIdentityPoolId = "YourCognitoIdentityPoolId"
// Initialize the Amazon Cognito credentials provider.
let credentialProvider = AWSCognitoCredentialsProvider(regionType: AwsRegion,
identityPoolId: CognitoIdentityPoolId)
// Create an audio player
var audioPlayer = AVPlayer()
使用可能な音声のリストの取得
// Use the configuration as default
AWSServiceManager.default().defaultServiceConfiguration = configuration
// Get all the voices (no parameters specified in input) from Amazon Polly
// This creates an async task.
let task = AWSPolly.default().describeVoices(AWSPollyDescribeVoicesInput())
// When the request is done, asynchronously do the following block
// (we ignore all the errors, but in a real-world scenario they need
// to be handled)
task.continue(successBlock: { (awsTask: AWSTask) -> Any? in
// awsTask.result is an instance of AWSPollyDescribeVoicesOutput in
// case of the "describeVoices" method
let voices = (awsTask.result! as AWSPollyDescribeVoicesOutput).voices
return nil
})
音声の合成
// First, Amazon Polly requires an input, which we need to prepare.
// Again, we ignore the errors, however this should be handled in
// real applications. Here we are using the URL Builder Request,
// since in order to make the synthesis quicker we will pass the
// presigned URL to the system audio player.
let input = AWSPollySynthesizeSpeechURLBuilderRequest()
// Text to synthesize
48
Amazon Polly 開発者ガイド
iOS の例
input.text = “Sample text”
// We expect the output in MP3 format
input.outputFormat = AWSPollyOutputFormat.mp3
// Choose the voice ID
input.voiceId = AWSPollyVoiceId.joanna
// Create an task to synthesize speech using the given synthesis input
let builder =
AWSPollySynthesizeSpeechURLBuilder.default().getPreSignedURL(input)
// Request the URL for synthesis result
builder.continue(successBlock: { (awsTask: AWSTask<NSURL>) -> Any? in
// The result of getPresignedURL task is NSURL.
// Again, we ignore the errors in the example.
let url = awsTask.result!
// Try playing the data using the system AVAudioPlayer
self.audioPlayer.replaceCurrentItem(with: AVPlayerItem(url: url as URL))
self.audioPlayer.play()
return nil
})
49
Amazon Polly 開発者ガイド
サポートされているリージョン
Amazon Polly の制限
Amazon Polly を使用する際に注意すべき制限を以下に示します。
サポートされているリージョン
Amazon Polly が使用可能な AWS リージョンのリストについては、アマゾン ウェブ サービス全般の
リファレンス の「AWS のリージョンとエンドポイント」を参照してください。
Throttling
• IP アドレスあたりのスロットルレート: 20 リクエスト/秒 (rps) で、バースト制限は 40 rps。
• アカウントごとのスロットルレート: 10 リクエスト/秒 (rps) で、バースト制限は 20 rps。
アカウントあたりの同時接続: 30
• オペレーションあたりのスロットルレート:
オペレーション
制限
レキシコン
DeleteLexicon
これらのオペレーションによる 2 リクエスト/秒 (rps) はすべて
結合されます。
PutLexicon
最大許容バーストは 4 rps です。
GetLexicon
ListLexicons
音声
DescribeVoices
10 rps で、バースト制限は 20 rps
SynthesizeSpeech
10 rps で、バースト制限は 20 rps
50
Amazon Polly 開発者ガイド
発音レキシコン
発音レキシコン
• アカウントにつき最大 100 個のレキシコンを保存できます。
• レキシコン名は、長さが最大 20 文字の英数字文字列です。
• 各レキシコンのサイズは最大 4,000 文字です。
• レキシコンの <phoneme> または <alias> は最大 100 文字と置き換えることができます。
レキシコンの使用については、「レキシコンの管理 (p. 20)」を参照してください。
SynthesizeSpeech API オペレーション
SynthesizeSpeech API オペレーションの使用には、以下の制限が関連している点に注意してくださ
い。
• 入力テキストのサイズは、最大 1500 課金対象文字 (合計 3000 文字) です。SSML タグは、課金対
象文字としてカウントされません。
• 入力テキストに適用する最大 5 個のレキシコンを指定できます。
• 出力オーディオストリーム (合成) は 5 分に制限されます。その時間を過ぎると、残りの音声は切り
取られます。
詳細については、「SynthesizeSpeech (p. 69)」を参照してください。
音声合成マークアップ言語 (SSML)
SSML の使用には、以下の制限が関連している点に注意してください。
• <audio>、<lexicon>、<lookup>、および <voice> タグは、サポートされていません。
• <break> エレメントは、それぞれ最大 10 秒の時間を指定できます。
• <prosody> タグでは、-80% より小さいレート属性値はサポートされていません。
詳細については、「SSML の使用 (p. 13)」を参照してください。
51
Amazon Polly 開発者ガイド
CloudTrail 内の Amazon Polly 情報
AWS CloudTrail を使用した
Amazon Polly API 呼び出しのログ
記録
Amazon Polly は、すべての Amazon Polly API 呼び出しを収集し、指定した Amazon S3 バケットに
ログファイルを送信する CloudTrail サービスと統合されます。CloudTrail は、Amazon Polly コンソー
ルまたはコードから Amazon Polly API に対して実行された API 呼び出しを収集します。CloudTrail に
よって収集された情報を使用して、リクエストの作成元のソース IP アドレス、リクエストの実行者、
リクエストの実行日時など、Amazon Polly に対してどのようなリクエストが行われたかを判断するこ
とができます。
CloudTrail の詳細 (設定する方法や有効にする方法など) については、AWS CloudTrail User Guide を
参照してください。
CloudTrail 内の Amazon Polly 情報
AWS アカウントで CloudTrail ログ記録が有効になっている場合、Amazon Polly アクションに対して
行われた API コールは、CloudTrail ログファイルで追跡され、他の AWS サービスレコードとともに
書き込まれます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して
書き込むかを決定します。
すべての Amazon Polly アクションは CloudTrail が記録します。これらのアクションは「Amazon
Polly API リファレンス (p. 58)」で説明されています。以下のアクションがサポートされていま
す。
• DeleteLexicon (p. 59)
• DescribeVoices (p. 61)
• GetLexicon (p. 63)
• ListLexicons (p. 65)
• PutLexicon (p. 67)
• SynthesizeSpeech (p. 69)
各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログエントリのユー
ザー ID 情報は、次のことを確認するのに役立ちます。
52
Amazon Polly 開発者ガイド
Amazon Polly ログファイルエントリの概要
• リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか
• リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を
使用して送信されたか
• リクエストが、別の AWS サービスによって送信されたかどうか
詳細については、「CloudTrail userIdentity 要素」を参照してください。
必要な場合はログファイルを自身の Amazon S3 バケットに保管できますが、ログファイルを自動的
にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできま
す。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化さ
れます。
ログファイルの配信時に通知を受け取る場合、新しいログファイルの配信時に Amazon SNS 通
知が発行されるように CloudTrail を設定できます。詳細については、「Configuring Amazon SNS
Notifications for CloudTrail」を参照してください。
また、複数の AWS リージョンと複数の AWS アカウントからの Amazon Polly ログファイルを 1 つの
Amazon S3 バケットに集約することもできます。
詳細は、「Receiving CloudTrail Log Files from Multiple Regions」と「Receiving CloudTrail Log Files
from Multiple Accounts」を参照してください。
Amazon Polly ログファイルエントリの概要
CloudTrail ログファイルには、1 つ以上のログエントリを含めることができます。各エントリには、
複数の JSON 形式のイベントがリストされます。ログエントリは任意の送信元からの単一のリクエス
トを表し、リクエストされたアクション、アクションの日時、リクエストのパラメーターなどに関す
る情報が含まれます。ログエントリは、パブリック API 呼び出しの順序付けられたスタックトレース
ではないため、特定の順序では表示されません。
潜在的な機密性の問題のため、ログエントリには合成されたテキストは含まれません。代わりに、加
工されたテキストがログエントリに挿入されます。
次の例は、SynthesizeSpeech を示す CloudTrail ログエントリを示しています。
{
"Records": [
{
"awsRegion": "us-east-1",
"eventID": "19bd70f7-5e60-4cdc-9825-936c552278ae",
"eventName": "SynthesizeSpeech",
"eventSource": "tts.amazonaws.com",
"eventTime": "2016-11-02T03:49:39Z",
"eventType": "AwsApiCall",
"eventVersion": "1.05",
"recipientAccountId": "123456789012",
"requestID": "414288c2-a1af-11e6-b17f-d7cfc06cb461",
"requestParameters": {
"lexiconNames": [
"SampleLexicon"
],
"outputFormat": "mp3",
"sampleRate": "22050",
"text": "**********",
"textType": "text",
"voiceId": "Kendra"
53
Amazon Polly 開発者ガイド
Amazon Polly ログファイルエントリの概要
},
"responseElements": {
"contentType": "audio/mpeg",
"requestCharacters": 25
},
"sourceIPAddress": "1.2.3.4",
"userAgent": "Amazon CLI/Polly 1.10 API 2016-06-10",
"userIdentity": {
"accessKeyId": "EXAMPLE_KEY_ID",
"accountId": "123456789012",
"arn": "arn:aws:iam::123456789012:user/Alice",
"principalId": "EX_PRINCIPAL_ID",
"type": "IAMUser",
"userName": "Alice"
}
}
]
}
eventName 要素は発生したアクションを特定します。"SynthesizeSpeech20161128" のように日
付やバージョン情報が含まれている場合がありますが、同じパブリック API を示しています。
54
Amazon Polly 開発者ガイド
CloudWatch メトリクスの取得 (コンソール)
CloudWatch と Amazon Polly の統
合
Amazon Polly を操作するときに、次のメトリックスとディメンションを、毎分 CloudWatch に送信し
ます。以下の手順を使用して、Amazon Polly のメトリクスを表示できます。
CloudWatch を使用して Amazon Polly をモニタリングすることで、Amazon Polly から未加工データ
を収集し、リアルタイムに近い読み取り可能なメトリクスに加工することができます。これらの統計
は 2 週間記録されるため、historical information にアクセスしてウェブアプリケーションまた
はサービスの動作をより的確に把握することができます。デフォルトでは、Amazon Polly メトリッ
クスデータは 1 分間隔で CloudWatch に送信されます。詳細については、CloudWatch ユーザーガイ
ドの「Amazon CloudWatch とは」を参照してください。
CloudWatch メトリクスの取得 (コンソール)
1.
https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。
2.
ナビゲーションペインで メトリクスを選択します。
3.
[CloudWatch Metrics by Category] ペインの Amazon Polly のメトリクスカテゴリで、メトリクス
カテゴリを選択したら、上のペインで下にスクロールして、メトリクスのリスト全体を確認でき
ます。
CloudWatch メトリクスの取得 (CLI)
次のコードは、Amazon Polly のメトリクスを表示します。
aws cloudwatch list-metrics --namespace "AWS/Polly"
上記のコマンドは、次のような Amazon Polly メトリックスのリストを返します。MetricName エレ
メントは、メトリクスの内容を識別します。
{
"Metrics": [
{
55
Amazon Polly 開発者ガイド
Amazon Polly メトリクス
"Namespace": "AWS/Polly",
"Dimensions": [
{
"Name": "Operation",
"Value": "SynthesizeSpeech"
}
],
"MetricName": "ResponseLatency"
},
{
"Namespace": "AWS/Polly",
"Dimensions": [
{
"Name": "Operation",
"Value": "SynthesizeSpeech"
}
],
"MetricName": "RequestCharacters"
}
詳細については、Amazon CloudWatch API リファレンス の「GetMetricStatistics」を参照してくださ
い。
Amazon Polly メトリクス
Amazon Polly は、リクエストごとに次のメトリクスを生成します。これらのメトリクスは集約さ
れ、1 分間隔で CloudWatch に送信されて利用されます。
メトリクス
説明
RequestCharacters
リクエスト内の文字数。これは請求可能な文字のみ
で、SSML のタグは含まれません。
有効なディメンション: オペレーション
有効な統計:
Minimum、Maximum、Average、SampleCount、Sum
単位: 個
ResponseLatency
リクエストの作成時からストリーミングレスポンスの
開始時までのレイテンシー。
有効なディメンション: オペレーション
有効な統計:
Minimum、Maximum、Average、SampleCount
単位: ミリ秒
2XXCount
正常なレスポンスに応じて返される HTTP 200 レベル
コード。
有効なディメンション: オペレーション
有効な統計: Average、SampleCount、Sum
単位: 個
56
Amazon Polly 開発者ガイド
Amazon Polly メトリクスのディメンション
メトリクス
説明
4XXCount
エラーに応じて返される HTTP 400 レベルエラーコー
ド。正常な応答ごとに、ゼロ (0) が出力されます。
有効なディメンション: オペレーション
有効な統計: Average、SampleCount、Sum
単位: 個
5XXCount
エラーに応じて返される HTTP 500 レベルエラーコー
ド。正常な応答ごとに、ゼロ (0) が出力されます。
有効なディメンション: オペレーション
有効な統計: Average、SampleCount、Sum
単位: 個
Amazon Polly メトリクスのディメンション
Amazon Polly メトリクスは、AWS/Polly 名前空間を使用し、以下のディメンションのメトリクスを提
供します。
ディメンション
説明
Operation
メトリクスは、参照先の API メソッド
別にグループ化されます。想定される値
は、SynthesizeSpeech、PutLexicon、DescribeVoices
などです。
57
Amazon Polly 開発者ガイド
Actions
Amazon Polly API リファレンス
このセクションには、Amazon Polly API リファレンスが含まれています。
Note
認証済み API コールは、署名バージョン 4 の署名プロセスを使用して署名される必要があり
ます。詳細については、アマゾン ウェブ サービス全般のリファレンスの AWS API リクエス
トの署名を参照してください。
トピック
• Actions (p. 58)
• Data Types (p. 71)
Actions
The following actions are supported:
• DeleteLexicon (p. 59)
• DescribeVoices (p. 61)
• GetLexicon (p. 63)
• ListLexicons (p. 65)
• PutLexicon (p. 67)
• SynthesizeSpeech (p. 69)
58
Amazon Polly 開発者ガイド
DeleteLexicon
DeleteLexicon
Deletes the specified pronunciation lexicon stored in an AWS Region. A lexicon which has been
deleted is not available for speech synthesis, nor is it possible to retrieve it using either the
GetLexicon or ListLexicon APIs.
For more information, see Managing Lexicons.
Request Syntax
DELETE /v1/lexicons/LexiconName HTTP/1.1
URI Request Parameters
The request requires the following URI parameters.
Name (p. 59)
The name of the lexicon to delete. Must be an existing lexicon in the region.
Pattern: [0-9A-Za-z]{1,20}
Request Body
The request does not have a request body.
Response Syntax
HTTP/1.1 200
Response Elements
If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.
Errors
LexiconNotFoundException
Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its
name is misspelled or specifying a lexicon that is in a different region.
Verify that the lexicon exists, is in the region (see ListLexicons (p. 65)) and that you spelled its
name is spelled correctly. Then try again.
HTTP Status Code: 404
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
59
Amazon Polly 開発者ガイド
DeleteLexicon
• AWS SDK for Java
•
•
•
•
AWS SDK for JavaScript
AWS SDK for PHP V3
AWS SDK for Python
AWS SDK for Ruby V2
60
Amazon Polly 開発者ガイド
DescribeVoices
DescribeVoices
Returns the list of voices that are available for use when requesting speech synthesis. Each voice
speaks a specified language, is either male or female, and is identified by an ID, which is the ASCII
version of the voice name.
When synthesizing speech ( SynthesizeSpeech ), you provide the voice ID for the voice you want
from the list of voices returned by DescribeVoices.
For example, you want your news reader application to read news in a specific language, but giving a
user the option to choose the voice. Using the DescribeVoices operation you can provide the user
with a list of available voices to select from.
You can optionally specify a language code to filter the available voices. For example, if you specify
en-US, the operation returns a list of all available US English voices.
This operation requires permissions to perform the polly:DescribeVoices action.
Request Syntax
GET /v1/voices?LanguageCode=LanguageCode&NextToken=NextToken HTTP/1.1
URI Request Parameters
The request requires the following URI parameters.
LanguageCode (p. 61)
The language identification tag (ISO 639 code for the language name-ISO 3166 country code) for
filtering the list of voices returned. If you don't specify this optional parameter, all available voices
are returned.
Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL
| pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR
NextToken (p. 61)
An opaque pagination token returned from the previous DescribeVoices operation. If present,
this indicates where to continue the listing.
Request Body
The request does not have a request body.
Response Syntax
HTTP/1.1 200
Content-type: application/json
{
"NextToken": "string",
"Voices": [
{
"Gender": "string",
"Id": "string",
"LanguageCode": "string",
"LanguageName": "string",
"Name": "string"
}
]
}
61
Amazon Polly 開発者ガイド
DescribeVoices
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
NextToken (p. 61)
The pagination token to use in the next request to continue the listing of voices. NextToken is
returned only if the response is truncated.
Type: String
Voices (p. 61)
A list of voices with their properties.
Type: array of Voice (p. 75) objects
Errors
InvalidNextTokenException
The NextToken is invalid. Verify that it's spelled correctly, and then try again.
HTTP Status Code: 400
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for JavaScript
• AWS SDK for PHP V3
• AWS SDK for Python
• AWS SDK for Ruby V2
62
Amazon Polly 開発者ガイド
GetLexicon
GetLexicon
Returns the content of the specified pronunciation lexicon stored in an AWS Region. For more
information, see Managing Lexicons.
Request Syntax
GET /v1/lexicons/LexiconName HTTP/1.1
URI Request Parameters
The request requires the following URI parameters.
Name (p. 63)
Name of the lexicon.
Pattern: [0-9A-Za-z]{1,20}
Request Body
The request does not have a request body.
Response Syntax
HTTP/1.1 200
Content-type: application/json
{
"Lexicon": {
"Content": "string",
"Name": "string"
},
"LexiconAttributes": {
"Alphabet": "string",
"LanguageCode": "string",
"LastModified": number,
"LexemesCount": number,
"LexiconArn": "string",
"Size": number
}
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
Lexicon (p. 63)
Lexicon object that provides name and the string content of the lexicon.
Type: Lexicon (p. 72) object
LexiconAttributes (p. 63)
Metadata of the lexicon, including phonetic alphabetic used, language code, lexicon ARN, number
of lexemes defined in the lexicon, and size of lexicon in bytes.
Type: LexiconAttributes (p. 73) object
63
Amazon Polly 開発者ガイド
GetLexicon
Errors
LexiconNotFoundException
Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its
name is misspelled or specifying a lexicon that is in a different region.
Verify that the lexicon exists, is in the region (see ListLexicons (p. 65)) and that you spelled its
name is spelled correctly. Then try again.
HTTP Status Code: 404
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for JavaScript
• AWS SDK for PHP V3
• AWS SDK for Python
• AWS SDK for Ruby V2
64
Amazon Polly 開発者ガイド
ListLexicons
ListLexicons
Returns a list of pronunciation lexicons stored in an AWS Region. For more information, see Managing
Lexicons.
Request Syntax
GET /v1/lexicons?NextToken=NextToken HTTP/1.1
URI Request Parameters
The request requires the following URI parameters.
NextToken (p. 65)
An opaque pagination token returned from previous ListLexicons operation. If present,
indicates where to continue the list of lexicons.
Request Body
The request does not have a request body.
Response Syntax
HTTP/1.1 200
Content-type: application/json
{
"Lexicons": [
{
"Attributes": {
"Alphabet": "string",
"LanguageCode": "string",
"LastModified": number,
"LexemesCount": number,
"LexiconArn": "string",
"Size": number
},
"Name": "string"
}
],
"NextToken": "string"
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
Lexicons (p. 65)
A list of lexicon names and attributes.
Type: array of LexiconDescription (p. 74) objects
NextToken (p. 65)
The pagination token to use in the next request to continue the listing of lexicons. NextToken is
returned only if the response is truncated.
Type: String
65
Amazon Polly 開発者ガイド
ListLexicons
Errors
InvalidNextTokenException
The NextToken is invalid. Verify that it's spelled correctly, and then try again.
HTTP Status Code: 400
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for JavaScript
• AWS SDK for PHP V3
• AWS SDK for Python
• AWS SDK for Ruby V2
66
Amazon Polly 開発者ガイド
PutLexicon
PutLexicon
Stores a pronunciation lexicon in an AWS Region. If a lexicon with the same name already exists in the
region, it is overwritten by the new lexicon. Lexicon operations have eventual consistency, therefore, it
might take some time before the lexicon is available to the SynthesizeSpeech operation.
For more information, see Managing Lexicons.
Request Syntax
PUT /v1/lexicons/LexiconName HTTP/1.1
Content-type: application/json
{
"Content": "string"
}
URI Request Parameters
The request requires the following URI parameters.
Name (p. 67)
Name of the lexicon. The name must follow the regular express format [0-9A-Za-z]{1,20}. That is,
the name is a case-sensitive alphanumeric string up to 20 characters long.
Pattern: [0-9A-Za-z]{1,20}
Request Body
The request accepts the following data in JSON format.
Content (p. 67)
Content of the PLS lexicon as string data.
Type: String
Required: Yes
Response Syntax
HTTP/1.1 200
Response Elements
If the action is successful, the service sends back an HTTP 200 response with an empty HTTP body.
Errors
InvalidLexiconException
Amazon Polly can't find the specified lexicon. Verify that the lexicon's name is spelled correctly,
and then try again.
HTTP Status Code: 400
LexiconSizeExceededException
The maximum size of the specified lexicon would be exceeded by this operation.
HTTP Status Code: 400
MaxLexemeLengthExceededException
The maximum size of the lexeme would be exceeded by this operation.
67
Amazon Polly 開発者ガイド
PutLexicon
HTTP Status Code: 400
MaxLexiconsNumberExceededException
The maximum number of lexicons would be exceeded by this operation.
HTTP Status Code: 400
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
UnsupportedPlsAlphabetException
The alphabet specified by the lexicon is not a supported alphabet. Valid values are x-sampa and
ipa.
HTTP Status Code: 400
UnsupportedPlsLanguageException
The language specified in the lexicon is unsupported. For a list of supported languages, see
Lexicon Attributes.
HTTP Status Code: 400
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for JavaScript
• AWS SDK for PHP V3
• AWS SDK for Python
• AWS SDK for Ruby V2
68
Amazon Polly 開発者ガイド
SynthesizeSpeech
SynthesizeSpeech
Synthesizes UTF-8 input, plain text or SSML, to a stream of bytes. SSML input must be valid, wellformed SSML. Some alphabets might not be available with all the voices (for example, Cyrillic might
not be read at all by English voices) unless phoneme mapping is used. For more information, see How
it Works.
Request Syntax
POST /v1/speech HTTP/1.1
Content-type: application/json
{
"LexiconNames": [ "string" ],
"OutputFormat": "string",
"SampleRate": "string",
"Text": "string",
"TextType": "string",
"VoiceId": "string"
}
URI Request Parameters
The request does not use any URI parameters.
Request Body
The request accepts the following data in JSON format.
LexiconNames (p. 69)
List of one or more pronunciation lexicon names you want the service to apply during synthesis.
Lexicons are applied only if the language of the lexicon is the same as the language of the voice.
For information about storing lexicons, see PutLexicon.
Type: array of Strings
Array Members: Maximum number of 5 items.
Pattern: [0-9A-Za-z]{1,20}
Required: No
OutputFormat (p. 69)
The audio format in which the resulting stream will be encoded.
Type: String
Valid Values: mp3 | ogg_vorbis | pcm
Required: Yes
SampleRate (p. 69)
The audio frequency specified in Hz.
The valid values for mp3 and ogg_vorbis are "8000", "16000", and "22050". The default value is
"22050".
Valid values for pcm are "8000" and "16000" The default value is "16000".
Type: String
Required: No
Text (p. 69)
Input text to synthesize. If you specify ssml as the TextType, follow the SSML format for the input
text.
Type: String
Required: Yes
69
Amazon Polly 開発者ガイド
SynthesizeSpeech
TextType (p. 69)
Specifies whether the input text is plain text or SSML. The default value is plain text. For more
information, see Using SSML.
Type: String
Valid Values: ssml | text
Required: No
VoiceId (p. 69)
Voice ID to use for the synthesis. You can get a list of available voice IDs by calling the
DescribeVoices operation.
Type: String
Valid Values: Geraint | Gwyneth | Mads | Naja | Hans | Marlene | Nicole |
Russell | Amy | Brian | Emma | Raveena | Ivy | Joanna | Joey | Justin
| Kendra | Kimberly | Salli | Conchita | Enrique | Miguel | Penelope |
Chantal | Celine | Mathieu | Dora | Karl | Carla | Giorgio | Mizuki | Liv
| Lotte | Ruben | Ewa | Jacek | Jan | Maja | Ricardo | Vitoria | Cristiano
| Ines | Carmen | Maxim | Tatyana | Astrid | Filiz
Required: Yes
Response Syntax
HTTP/1.1 200
Content-Type: ContentType
x-amzn-RequestCharacters: RequestCharacters
AudioStream
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The response returns the following HTTP headers.
ContentType (p. 70)
Specifies the type audio stream. This should reflect the OutputFormat parameter in your request.
• If you request mp3 as the OutputFormat, the ContentType returned is audio/mpeg.
• If you request ogg_vorbis as the OutputFormat, the ContentType returned is audio/ogg.
• If you request pcm as the OutputFormat, the ContentType returned is audio/pcm in a signed
16-bit, 1 channel (mono), little-endian format.
RequestCharacters (p. 70)
Number of characters synthesized.
The response returns the following as the HTTP body.
<varlistentry> AudioStream (p. 70)
Stream containing the synthesized speech.
</varlistentry>
Errors
InvalidSampleRateException
The specified sample rate is not valid.
HTTP Status Code: 400
70
Amazon Polly 開発者ガイド
Data Types
InvalidSsmlException
The SSML you provided is invalid. Verify the SSML syntax, spelling of tags and values, and then
try again.
HTTP Status Code: 400
LexiconNotFoundException
Amazon Polly can't find the specified lexicon. This could be caused by a lexicon that is missing, its
name is misspelled or specifying a lexicon that is in a different region.
Verify that the lexicon exists, is in the region (see ListLexicons (p. 65)) and that you spelled its
name is spelled correctly. Then try again.
HTTP Status Code: 404
ServiceFailureException
An unknown condition has caused a service failure.
HTTP Status Code: 500
TextLengthExceededException
The value of the "Text" parameter is longer than the accepted limits. The limit for input text is a
maximum of 3000 characters total, of which no more than 1500 can be billed characters. SSML
tags are not counted as billed characters.
HTTP Status Code: 400
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS Command Line Interface
• AWS SDK for .NET
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for JavaScript
• AWS SDK for PHP V3
• AWS SDK for Python
• AWS SDK for Ruby V2
Data Types
The following data types are supported:
• Lexicon (p. 72)
• LexiconAttributes (p. 73)
• LexiconDescription (p. 74)
• Voice (p. 75)
71
Amazon Polly 開発者ガイド
Lexicon
Lexicon
Provides lexicon name and lexicon content in string format. For more information, see Pronunciation
Lexicon Specification (PLS) Version 1.0.
Contents
Content
Lexicon content in string format. The content of a lexicon must be in PLS format.
Type: String
Required: No
Name
Name of the lexicon.
Type: String
Pattern: [0-9A-Za-z]{1,20}
Required: No
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for Ruby V2
72
Amazon Polly 開発者ガイド
LexiconAttributes
LexiconAttributes
Contains metadata describing the lexicon such as the number of lexemes, language code, and so on.
For more information, see Managing Lexicons.
Contents
Alphabet
Phonetic alphabet used in the lexicon. Valid values are ipa and x-sampa.
Type: String
Required: No
LanguageCode
Language code that the lexicon applies to. A lexicon with a language code such as "en" would be
applied to all English languages (en-GB, en-US, en-AUS, en-WLS, and so on.
Type: String
Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL
| pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR
Required: No
LastModified
Date lexicon was last modified (a timestamp value).
Type: Timestamp
Required: No
LexemesCount
Number of lexemes in the lexicon.
Type: Integer
Required: No
LexiconArn
Amazon Resource Name (ARN) of the lexicon.
Type: String
Required: No
Size
Total size of the lexicon, in characters.
Type: Integer
Required: No
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for Ruby V2
73
Amazon Polly 開発者ガイド
LexiconDescription
LexiconDescription
Describes the content of the lexicon.
Contents
Attributes
Provides lexicon metadata.
Type: LexiconAttributes (p. 73) object
Required: No
Name
Name of the lexicon.
Type: String
Pattern: [0-9A-Za-z]{1,20}
Required: No
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
• AWS SDK for C++
• AWS SDK for Go
• AWS SDK for Java
• AWS SDK for Ruby V2
74
Amazon Polly 開発者ガイド
Voice
Voice
Description of the voice.
Contents
Gender
Gender of the voice.
Type: String
Valid Values: Female | Male
Required: No
Id
Amazon Polly assigned voice ID. This is the ID that you specify when calling the
SynthesizeSpeech operation.
Type: String
Valid Values: Geraint | Gwyneth | Mads | Naja | Hans | Marlene | Nicole |
Russell | Amy | Brian | Emma | Raveena | Ivy | Joanna | Joey | Justin
| Kendra | Kimberly | Salli | Conchita | Enrique | Miguel | Penelope |
Chantal | Celine | Mathieu | Dora | Karl | Carla | Giorgio | Mizuki | Liv
| Lotte | Ruben | Ewa | Jacek | Jan | Maja | Ricardo | Vitoria | Cristiano
| Ines | Carmen | Maxim | Tatyana | Astrid | Filiz
Required: No
LanguageCode
Language code of the voice.
Type: String
Valid Values: cy-GB | da-DK | de-DE | en-AU | en-GB | en-GB-WLS | en-IN | enUS | es-ES | es-US | fr-CA | fr-FR | is-IS | it-IT | ja-JP | nb-NO | nl-NL
| pl-PL | pt-BR | pt-PT | ro-RO | ru-RU | sv-SE | tr-TR
Required: No
LanguageName
Human readable name of the language in English.
Type: String
Required: No
Name
Name of the voice (for example, Salli, Kendra, etc.). This provides a human readable voice name
that you might display in your application.
Type: String
Required: No
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the
following:
•
•
•
•
AWS SDK for C++
AWS SDK for Go
AWS SDK for Java
AWS SDK for Ruby V2
75
Amazon Polly 開発者ガイド
認証
Amazon Polly に対する認証とアク
セスコントロール
Amazon Polly へのアクセスには、認証情報が必要です。これらの認証情報には、Amazon Polly
lexicon や Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなどの AWS リソースに対
するアクセス権限が含まれている必要があります。次のセクションでは、AWS Identity and Access
Management (IAM) と Amazon Polly を使用して、リソースへのアクセスをセキュリティで保護する方
法について詳しく説明します。
• 認証 (p. 76)
• アクセスコントロール (p. 77)
認証
AWS には、次のタイプのアイデンティティでアクセスできます。
• AWS アカウントのルートユーザー – AWS にサインアップするときは、AWS アカウントに関連付
けられた E メールアドレスとパスワードを指定します。これらは ルート認証情報であり、これらの
情報を使用すると、すべての AWS リソースへの完全なアクセスが可能になります。
Important
セキュリティ上の理由から、AWS アカウントへの完全なアクセス権限を持つ管理者ユー
ザー (IAM ユーザー) を作成するためにのみ、ルート認証情報を使用することをお勧めし
ます。その後、この管理者ユーザーを使用して、制限されたアクセス権限を持つ他の IAM
ユーザーとロールを作成できます。詳細については、『IAM ユーザーガイド』の「IAM の
ベストプラクティス」および「管理者のユーザーおよびグループの作成」を参照してくだ
さい。
• IAM ユーザー – IAM ユーザーは、特定のカスタム権限 (たとえば、Amazon Polly で a lexicon を作
成するアクセス権限) を持つ AWS アカウント内のアイデンティティです。IAM のユーザー名とパ
スワードを使用して、AWS マネジメントコンソール、AWS ディスカッションフォーラム、AWS
Support Center などのセキュリティ保護された AWS ウェブページにサインインできます。
ユーザー名とパスワードに加えて、各ユーザーのアクセスキーを生成することもできます。いくつ
かの SDK の 1 つまたは AWS Command Line Interface (CLI) を使ってプログラムで AWS サービス
にアクセスするときに、これらのキーを使用します。SDK と CLI ツールでは、アクセスキーを使用
してリクエストが暗号で署名されます。AWS ツールを使用しない場合は、リクエストを自分で署名
76
Amazon Polly 開発者ガイド
アクセスコントロール
する必要があります。Amazon Polly supports では、署名バージョン 4 がサポートされています。こ
れは、インバウンド API リクエストを認証するためのプロトコルです。リクエストの認証の詳細に
ついては、『AWS General Reference』の「署名バージョン 4 の署名プロセス」を参照してくださ
い。
• IAM ロール – IAM ロールは、特定のアクセス権限を持ち、アカウントで作成できるもう 1 つの IAM
アイデンティティです。これは IAM ユーザーに似ていますが、特定のユーザーに関連付けられてい
ません。IAM ロールでは、AWS サービスおよびリソースにアクセスするために使用できる一時的な
アクセスキーを取得することができます。IAM ロールと一時的な認証情報は、次の状況で役立ちま
す。
• フェデレーティッドユーザーアクセス – IAM ユーザーを作成するのではなく、AWS Directory
Service、エンタープライズユーザーディレクトリ、またはウェブアイデンティティプロバイダー
の既存のユーザーアイデンティティを使用することもできます。このようなユーザーはフェデ
レーティッドユーザーと呼ばれます。AWS では、アイデンティティプロバイダーを通じてアク
セスがリクエストされたときに、フェデレーティッドユーザーにロールを割り当てます。フェデ
レーティッドユーザーの詳細については、『IAM ユーザーガイド』の「フェデレーティッドユー
ザーとロール」を参照してください。
• クロスアカウントアクセス – アカウントで IAM ロールを使って、お客様のアカウントのリソース
へのアクセス権を別の AWS アカウントに付与できます。この例については、『IAM ユーザーガ
イド』の「チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任」を参照
してください。
• AWS サービスアカウント – アカウントで IAM ロールを使って、お客様のアカウントのリソース
にアクセスする AWS サービスのアクセス権限を付与できます。たとえば、Amazon Redshift が
お客様に代わって Amazon S3 バケットにアクセスし、バケットに保存されたデータを Amazon
Redshift クラスターにロードすることを許可するロールを作成できます。 詳細については、
『IAM ユーザーガイド』の「AWS ユーザーにアクセス権限を委任するロールの作成」を参照して
ください。
• Amazon EC2 で実行されるアプリケーション – インスタンスで実行し、AWS API リクエストを
作成するアプリケーションで使用されるアクセスキーを EC2 インスタンス内に保存する代わり
に、IAM ロールを使用して、これらのアプリケーション用の一時認証情報を管理できます。AWS
ロールを EC2 インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにする
には、インスタンスにアタッチされたインスタンスプロファイルを作成できます。インスタンス
プロファイルにはロールが含まれ、EC2 インスタンスで実行されるプログラムは一時認証情報を
取得することができます。詳細については、『IAM ユーザーガイド』の「Amazon EC2 上のアプ
リケーションに対するロールの使用」を参照してください。
アクセスコントロール
有効な認証情報があればリクエストを認証できますが、許可を持っていないかぎり Amazon Polly リ
ソースの作成やアクセスはできません。たとえば、Amazon Polly lexicon を作成するためのアクセス
権限が必要です。
以下のセクションでは、Amazon Polly のアクセス権限を管理する方法について説明します。最初に概
要のセクションを読むことをお勧めします。
77
Amazon Polly 開発者ガイド
アクセス管理の概要
• Amazon Polly リソースへのアクセス権限の管理の概要 (p. 78)
• Amazon Polly でアイデンティティベースのポリシー (IAM ポリシー) を使用する (p. 81)
• Amazon Polly API アクセス権限: アクション、アクセス権限、およびリソースの参照 (p. 85)
Amazon Polly リソースへのアクセス権限の管理
の概要
すべての AWS リソースは AWS アカウントによって所有され、となり、リソースの作成またはアク
セスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、アクセス権限ポリ
シーを IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。一部のサービス
(AWS Lambda など) では、アクセス権限ポリシーをリソースにアタッチすることもできます。
Note
アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細につい
ては、IAM ユーザーガイド の「IAM のベストプラクティス」を参照してください。
アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象とな
るリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。
トピック
• Amazon Polly リソースおよびオペレーション (p. 78)
• リソース所有権について (p. 78)
• リソースへのアクセスの管理 (p. 79)
• ポリシー要素の指定 : アクション、効果、プリンシパル (p. 80)
• ポリシーでの条件の指定 (p. 81)
Amazon Polly リソースおよびオペレーション
Amazon Polly では、プライマリリソースは a lexicon です。ポリシーで Amazon リソースネーム
(ARN) を使用して、ポリシーを適用するリソースを識別します。
これらのリソースとサブリソースには、次の表に示すとおり、一意の Amazon リソースネーム (ARN)
が関連付けられています。
リソースタイプ
ARN 形式
レキシコン
arn:aws:polly:region:account-id:lexicon/LexiconName
Amazon Polly には、Amazon Polly リソースを操作するための一連のオペレーションが用意されて
います。可能なオペレーションのリストについては、「Amazon Polly Amazon Polly API リファレン
ス (p. 58)」を参照してください。
リソース所有権について
AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所
有します。 具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエン
ティティ (ルートアカウント、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例
では、このしくみを示しています。
78
Amazon Polly 開発者ガイド
リソースへのアクセスの管理
• AWS アカウントのルートアカウント認証情報を使用して a lexicon を作成する場合、この AWS ア
カウントがリソースの所有者です (Amazon Polly では、リソースは a lexicon です)。
• AWS アカウントに IAM ユーザーを作成し、そのユーザーに a lexicon を作成するためのアクセス権
限を付与する場合、そのユーザーは a lexicon リソースを作成できます。ただし、ユーザーが属する
AWS アカウントは lexicon リソースを所有しています。
• a lexicon リソースを作成するためのアクセス権限を持つ AWS アカウントに IAM ロールを作成する
場合は、ロールを引き受けることのできるいずれのユーザーも a lexicon を作成できます。ユーザー
が属する AWS アカウントは lexicon リソースを所有しています。
リソースへのアクセスの管理
アクセスポリシーでは、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権
限のポリシーを作成するために使用可能なオプションについて説明します。
Note
このセクションでは、Amazon Polly のコンテキストでの IAM の使用について説明します。こ
れは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについて
は、「IAM とは?」 (IAM ユーザーガイド ) を参照してください。IAM ポリシー構文の詳細お
よび説明については、IAM ユーザーガイド の「AWS IAM ポリシーリファレンス」を参照して
ください。
IAM アイデンティティにアタッチされたポリシーはアイデンティティベースのポリシー (IAM ポ
リシー) と呼ばれ、リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれま
す。Amazon Polly は、アイデンティティベースのポリシーをサポートしています。
トピック
• アイデンティティベースのポリシー (IAM ポリシー) (p. 79)
• リソースベースのポリシー (p. 80)
アイデンティティベースのポリシー (IAM ポリシー)
ポリシーを IAM アイデンティティにアタッチできます。たとえば、次の操作を実行できます。
• アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする – a lexicon などの
Amazon Polly リソースを作成するアクセス権限を付与するために、ユーザーが所属するユーザーま
たはグループにアクセス許可のポリシーをアタッチできます。
• アクセス権限ポリシーをロールにアタッチする (クロスアカウントのアクセス権限を付与) – アイデ
ンティティベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントのアク
セス権限を付与することができます。たとえば、アカウント A の管理者は、次のように他のまたは
AWS にクロスアカウントのアクセス権限を別の AWS アカウント (アカウント B) または AWS サー
ビスに付与するロールを作成することができます。
1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに権限を付与する
ロールに権限ポリシーをアタッチします。
2. アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別する
ロールに、信頼ポリシーをアタッチします。
3. アカウント B の管理者は、アカウント B のユーザーにロールを引き受ける権限を委任できるよう
になります。これにより、アカウント B のユーザーにアカウント A のリソースの作成とアクセス
が許可されます。AWS サービスのアクセス権限を付与してロールを引き受けさせたい場合は、
信頼ポリシー内のプリンシパルも、AWS サービスのプリンシパルとなることができます。
IAM を使用したアクセス権限の委任の詳細については、「アクセス管理」 (IAM ユーザーガイド) を
参照してください。
79
Amazon Polly 開発者ガイド
ポリシー要素の指定 : アクション、効果、プリンシパル
レキシコンを配置および取得するアクセス権限と現在使用可能なレキスコンを一覧表示するアクセス
権限を付与するポリシーの例を以下に示します。
Amazon Polly は、アクションのアイデンティティベースのポリシーをリソースレベルでサポートし
ています。このため、Resource 値は ARN により示されます。たとえば、Resource 値としての
arn:aws:polly:us-east-1:account-id:lexicon/* は、us-east-1 リージョン内の所有する
すべてのレキシコンに対するアクセス権限を指定します。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowPut-Get-ListActions",
"Effect": "Allow",
"Action": [
"polly:PutLexicon",
"polly:GetLexicon",
"polly:ListLexicons"],
"Resource": "arn:aws:polly:us-east-1:account-id:lexicon/*"
}
]
}
Amazon Polly でアイデンティティベースのポリシーを使用する詳細については、「Amazon Polly で
アイデンティティベースのポリシー (IAM ポリシー) を使用する (p. 81)」を参照してください。
ユーザー、グループ、ロール、アクセス権限の詳細については、「アイデンティティ (ユーザー、グ
ループ、ロール)」 (IAM ユーザーガイド) を参照してください。
リソースベースのポリシー
Amazon S3 などの他のサービスでは、リソースベースのアクセス権限ポリシーもサポートされていま
す。たとえば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス権限を管理
できます。Amazon Polly では、リソースベースのポリシーはサポートされていません。
ポリシー要素の指定 : アクション、効果、プリンシ
パル
Amazon Polly リソースの種類ごとに、このサービスは、一連の API オペレーションを定義します。
これらの API オペレーションのアクセス権限を付与するために、Amazon Polly は、ポリシー内に指
定できる一連のアクションを定義します。一部の API オペレーションは、API オペレーションを実行
するために複数のアクションに対するアクセス許可を要求できます。 リソースおよび API オペレー
ションに関する詳細については、「Amazon Polly リソースおよびオペレーション (p. 78)」および
「Amazon Polly API リファレンス (p. 58)」を参照してください。
以下は、最も基本的なポリシーの要素です。
• リソース – Amazon リソースネーム (ARN) を使用して、アイデンティティベースのポリシーを適
用するリソースを識別します。詳細については、「Amazon Polly リソースおよびオペレーショ
ン (p. 78)」を参照してください。
• アクション – アクションのキーワードを使用して、許可または拒否するリソースオペレーションを
識別します。たとえば、polly:PutLexicon を使用してレキシコンをリージョンを追加すること
ができます。
• 効果 – ユーザーが特定のアクションをリクエストする際の効果を指定します。許可または拒否のい
ずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒
否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセス
が許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。
80
Amazon Polly 開発者ガイド
ポリシーでの条件の指定
• プリンシパル – アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされて
いるユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限 (リソース
ベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエ
ンティティを指定します。Amazon Polly では、リソースベースのポリシーはサポートされていませ
ん。
IAM ポリシーの構文と説明についての詳細については、IAM ユーザーガイド の「AWS IAM ポリシー
の参照」を参照してください。
すべての Amazon Polly API オペレーションとそれらが適用されるリソースのリストについては、
「Amazon Polly API アクセス権限: アクション、アクセス権限、およびリソースの参照 (p. 85)」を
参照してください。
ポリシーでの条件の指定
アクセス権限を付与するとき、アクセスポリシー言語を使用して、ポリシーが有効になる必要がある
条件を指定できます。たとえば、特定の日付の後にのみ適用されるポリシーが必要になる場合があり
ます。ポリシー言語での条件の指定の詳細については、IAM ユーザーガイド の「条件」を参照してく
ださい。
条件を表すには、あらかじめ定義された条件キーを使用します。Amazon Polly に固有の条件キーはあ
りません。ただし、AWS 全体の条件キーがあり、必要に応じて使用できます。AWS 全体を対象とす
るすべてのキーのリストについては、IAM ユーザーガイド の「条件に利用可能なキー」を参照してく
ださい。
Amazon Polly でアイデンティティベースのポリ
シー (IAM ポリシー) を使用する
このトピックでは、アカウント管理者が IAM アイデンティティ (ユーザー、グループ、ロール) にアク
セス権限ポリシーをアタッチし、それによって Amazon Polly リソースでオペレーションを実行する
アクセス権限を付与する方法を示すアイデンティティベースのポリシーの例を示します。
Important
初めに、Amazon Polly リソースへのアクセスを管理するための基本概念と使用可能なオ
プションについて説明する概要トピックを読むことをお勧めします。詳細については、
「Amazon Polly リソースへのアクセス権限の管理の概要 (p. 78)」を参照してください。
トピック
• Amazon Polly コンソールを使用するために必要なアクセス権限 (p. 82)
• Amazon Polly の AWS 管理 (定義済み) ポリシー (p. 83)
• お客様が管理するポリシーの例 (p. 83)
以下に示しているのは、アクセス権限ポリシーの例です。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowGet-Delete-ListActions",
"Effect": "Allow",
81
Amazon Polly 開発者ガイド
Amazon Polly コンソールを使用
するために必要なアクセス権限
"Action": [
"polly:GetLexicon",
"polly:DeleteLexicon",
"polly:ListLexicons"],
"Resource": "*"
}
],
"Statement": [{
"Sid": "NoOverrideMyLexicons",
"Effect": "Deny",
"Action": [
"polly:PutLexicon"],
"Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/my*"
}
]
}
このポリシーには以下の 2 つのステートメントがあります。
• 1 つ目のステートメントは、3 つの Polly アクション
(polly:GetLexicon、polly:DeleteLexicon、polly:ListLexicons) のアクセス権限をあら
ゆるレキシコンに付与します。ワイルドカード文字 (*) をリソースとして使用すると、すべてのリー
ジョンとこのアカウントが所有するレキシコンにおけるこれらのアクションの共通アクセス権限が
付与されます。
• 2 つ目のステートメントは、1 つの Polly アクション (polly:PutLexicon) のアクセス権限を明示
的に拒否します。リソースとして表示された ARN は、リージョン us-east-1 の文字「my」で始
まるすべてのレキシコンにこのアクセス権限を明確に適用します。
すべての Amazon Polly API オペレーションとそれらが適用されるリソースの表については、
「Amazon Polly API アクセス権限: アクション、アクセス権限、およびリソースの参照 (p. 85)」を
参照してください。
Amazon Polly コンソールを使用するために必要な
アクセス権限
Amazon Polly コンソールを使用して作業するユーザーの場合、そのユーザーは、Amazon Polly リ
ソースを AWS アカウントで記述できる、最小限のアクセス権限を持っている必要があります。
これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM
ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。
AWS CLI または Amazon Polly API のみを呼び出すユーザーには、最小限のコンソールアクセス権限
を付与する必要はありません。
Amazon Polly コンソールを使用するには、すべての Amazon Polly API へのアクセス権限を付与する
必要があります。必要な追加のアクセス権限はありません。Amazon Polly コンソールを使用するに
は、以下のアクセス権以外必要ありません。
}
"Version": "2012-10-17",
"Statement": [{
"Sid": "Console-AllowAllPollyActions",
"Effect": "Allow",
"Action": [
"polly:*"],
"Resource": "*"
82
Amazon Polly 開発者ガイド
Amazon Polly の AWS 管理 (定義済み) ポリシー
}
]
}
Amazon Polly の AWS 管理 (定義済み) ポリシー
AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的
ユースケースに対応します。これらの AWS 管理ポリシーは、一般的ユースケースに必要なアクセス
権限を付与することで、どの権限が必要なのかをユーザーが調査する必要をなくすことができます。
詳細については、IAM ユーザーガイド の「AWS 管理ポリシー」を参照してください。
アカウントのユーザーにアタッチ可能な以下の AWS 管理ポリシーは、Amazon Polly に固有のもので
す。
• AmazonPollyReadOnlyAccess - リソースに読み取り専用でアクセスできます。レキシコンの表示、
レキシコンの取得、使用可能なボイスの表示および音声合成 (レキシコンを音声合成に適用すること
も含みます) を許可します。
• AmazonPollyFullAccess – リソースおよびサポートされているすべての操作にフルアクセスできま
す。
Note
IAM コンソールにサインインし、特定のポリシーを検索することで、これらのアクセス権限
ポリシーを確認することができます。
独自のカスタム IAM ポリシーを作成して、Amazon Polly アクションとリソースのための権限を許可
することもできます。これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーま
たはグループにアタッチできます。
お客様が管理するポリシーの例
このセクションでは、さまざまな Amazon Polly アクションのアクセス権限を付与するユーザーポリ
シー例を示しています。これらのポリシーは、AWS SDK または AWS CLI を使用しているときに機
能します。コンソールを使用している場合、すべての Amazon Polly API にアクセス権限を付与する
必要があります。これについては、「Amazon Polly コンソールを使用するために必要なアクセス権
限 (p. 82)」を参照してください。
Note
すべての例で、us-east-1 リージョンを使用し、架空のアカウント ID を含めています。
例
• 例 1: すべての Amazon Polly アクションを許可する (p. 83)
• 例 2: DeleteLexicon を除くすべての Polly アクションを許可する (p. 84)
• 例 3: DeleteLexicon を許可する (p. 84)
• 例 4: 指定されたリージョンでレキシコンの削除を許可する (p. 85)
• 例 5: 指定されたレキシコンの DeleteLexicon を許可する (p. 85)
例 1: すべての Amazon Polly アクションを許可する
サインアップ後 (「ステップ 1.1: AWS にサインアップ (p. 4)」を参照)、ユーザーの作成やアクセス権
限の管理など、アカウントを管理するための管理者ユーザーを作成します。
83
Amazon Polly 開発者ガイド
お客様が管理するポリシーの例
Amazon Polly を使用するためのすべての Amazon Polly アクションに対するアクセス権限を持つユー
ザーを作成することを選択することもできます (このユーザーをサービス固有の管理者と見なしま
す)。このユーザーに以下のアクセス権限をアタッチできます。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowAllPollyActions",
"Effect": "Allow",
"Action": [
"polly:*"],
"Resource": "*"
}
]
}
例 2: DeleteLexicon を除くすべての Polly アクションを許可す
る
以下のアクセス権限ポリシーは、DeleteLexicon を除くすべてのアクションを実行するアクセス権
限をユーザーに付与します (削除権限がすべてのリージョンで明示的に拒否されます)。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowAllActions-DenyDelete",
"Effect": "Allow",
"Action": [
"polly:DescribeVoices",
"polly:GetLexicon",
"polly:PutLexicon",
"polly:SynthesizeSpeech",
"polly:ListLexicons"],
"Resource": "*"
}
{
"Sid": "DenyDeleteLexicon",
"Effect": "Deny",
"Action": [
"polly:DeleteLexicon"],
"Resource": "*"
}
]
}
例 3: DeleteLexicon を許可する
以下のアクセス権限ポリシーは、プロジェクトまたはプロジェクトが所在するリージョンにかかわら
ず所有するレキシコンを削除するアクセス権限をユーザーに付与します。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowDeleteLexicon",
"Effect": "Allow",
"Action": [
84
Amazon Polly 開発者ガイド
Amazon Polly API のアクセス権限の参照
"polly:DeleteLexicon"],
"Resource": "*"
}
]
}
例 4: 指定されたリージョンでレキシコンの削除を許可する
以下のアクセス権限ポリシーは、単一のリージョン (この場合は us-east-1) に所在する所有するすべ
てのプロジェクトのレキシコンを削除するアクセス権限をユーザーに付与します。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowDeleteSpecifiedRegion",
"Effect": "Allow",
"Action": [
"polly:DeleteLexicon"],
"Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/*"
}
]
}
例 5: 指定されたレキシコンの DeleteLexicon を許可する
以下のアクセス権限ポリシーは、特定のリージョン内 (この場合は us-east-1) の所有する特定のレキ
シコン (この場合は myLexicon) を削除するアクセス権限をユーザーに付与します。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowDeleteForSpecifiedLexicon",
"Effect": "Allow",
"Action": [
"polly:DeleteLexicon"],
"Resource": "arn:aws:polly:us-east-1:123456789012:lexicon/myLexicon"
}
]
}
Amazon Polly API アクセス権限: アクション、ア
クセス権限、およびリソースの参照
アクセスコントロール (p. 77) をセットアップし、IAM アイデンティティにアタッチできるアク
セス権限ポリシー (アイデンティティベースのポリシー) を作成するときは、以下のリストをリファ
レンスとして使用できます。 リストには各 Amazon Polly API オペレーション、アクションを実行
するためのアクセス権限を付与できる対応するアクション、およびアクセス権限を付与できる AWS
リソースが掲載されています。ポリシーの Action フィールドでアクションを指定し、ポリシーの
Resource フィールドでリソースの値を指定します。
Amazon Polly ポリシーで AWS 全体の条件キーを使用して、条件を表現することができます。AWS
全体を対象とするすべてのキーのリストについては、IAM ユーザーガイド の「利用可能なキー」を参
照してください。
85
Amazon Polly 開発者ガイド
Amazon Polly API のアクセス権限の参照
Note
アクションを指定するには、API オペレーション名 (polly:GetLexicon など) の前に
polly プレフィックスを使用します。
Amazon Polly は、アクションのアイデンティティベースのポリシーをリソースレベルでサポートし
ています。このため、Resource 値は ARN により示されます。たとえば、Resource 値としての
arn:aws:polly:us-east-1:account-id:lexicon/* は、us-east-1 リージョン内の所有する
すべてのレキシコンに対するアクセス権限を指定します。
Amazon Polly は、リソースレベルのアクションのアクセス権限をサポートしていないため、ほとんど
のポリシーは Resource 値としてワイルドカード文字 (*) を指定します。ただし、特定のリージョン
へのアクセス権限を制限する必要がある場合、このワイルドカード文字は適切な ARN に置き換えら
れます。arn:aws:polly:region:account-id:lexicon/*.
Amazon Polly API とアクションで必要なアクセス権限
API オペレーション: DeleteLexicon (p. 59)
必要なアクセス権限 (API アクション): polly:DeleteLexicon
リソース: arn:aws:polly:region:account-id:lexicon/LexiconName
API オペレーション: DescribeVoices (p. 61)
必要なアクセス権限 (API アクション): polly:DescribeVoices
リソース: arn:aws:polly:region:account-id:lexicon/voice-name
API オペレーション: GetLexicon (p. 63)
必要なアクセス権限 (API アクション): polly:GetLexicon
リソース: arn:aws:polly:region:account-id:lexicon/voice-name
API オペレーション: ListLexicons (p. 65)
必要なアクセス権限 (API アクション): polly:ListLexicons
リソース: arn:aws:polly:region:account-id:lexicon/*
API アクション: PutLexicon (p. 67)
必要なアクセス権限 (API アクション): polly:ListLexicons
リソース: *
API オペレーション: SynthesizeSpeech (p. 69)
必要なアクセス権限 (API アクション): polly:SynthesizeSpeech
リソース: *
86
Amazon Polly 開発者ガイド
Amazon Polly のドキュメント履歴
次の表は、Amazon Polly の今回のリリースの内容をまとめたものです。
• ドキュメントの最新更新日: 2016 年 11 月 30 日
変更
説明
変更
新しいサービスとガイド
これは AWS のテキスト読み
2016 年 11 月 30 日
上げサービスである Amazon
Polly および Amazon Polly 開発
者ガイドの初回リリースです。
87
Amazon Polly 開発者ガイド
AWS の用語集
最新の AWS の用語については、『AWS General Reference』の「AWS の用語集」を参照してくださ
い。
88