概要
一般的に音声合成は簡単ではありません。 アプリケーションが文の各文字を読む場合、その出力が理解できるものだと考えてはいけません。テキスト読み上げアプリケーションに共通の課題として次のようなものがあります。
- 同じように書かれた言葉でも発音が違う。例えば、I live in Las Vegas と This presentation broadcasts live from Las Vegas を比較してください。
- テキストの正規化、つまり省略形、頭字語、単位の曖昧さをなくすこと。St. の原型は Street と Saint の場合があります。
- 複雑なマッピングを使用してテキストを言語の音素に変換する (英語での例: tough、through、though)。この例では、違う言葉の類似した部分が、言葉や文脈によって発音が異なる可能性があります。
- 外来語 (déjà vu)、正式名称 (François Hollande)、スラング (ASAP、LOL)。
Amazon Polly はこうした課題を克服した音声合成機能を提供しており、ユーザーは解釈の課題に対処する必要がなくなり、テキスト読み上げ機能を使用するアプリケーションの構築に集中できます。
Amazon Polly は、テキストを生き生きとした音声に変換します。Polly を使用すると、自然な会話機能を搭載したアプリケーションを作成し、音声に対応したまったく新しいカテゴリの製品を構築することが可能になります。Amazon AI サービスの Amazon Polly は高度な深層学習技術を使用して人間の声のような音声を合成します。Amazon Polly では何十種類ものリアルな音声を現在 20 以上の言語でサポートしているため、最適な音声を選択して、さまざまな国で音声対応アプリケーションを構築できます。
また、Amazon Polly は応答時間が短く、また安定しているため、リアルタイムの対話が実現できます。Polly の音声ファイルはキャッシュして保存できるため、オフライン再生や再配布が可能です(つまり、変換して保存したものは自分のものになります。この音声を使用するのにテキスト読み上げの料金は必要ありません)。 Polly は使用方法も簡単です。音声に変換したいテキストを Amazon Polly API に送信するだけでいいのです。すぐに Amazon Polly からオーディオストリームがアプリケーションに返され、アプリケーションでそれを直接再生することや、MP3 などの標準オーディオファイルとして保存することが可能です。
このラボでは、Amazon Polly を使用してテキストを音声に変換する基本的なサーバーレスアプリケーションを作成します。このアプリケーションには、さまざまな言語のテキストを受信して、ウェブブラウザで再生できる音声ファイルに変換する簡単なユーザーインターフェイスがあります。このラボではブログの投稿を利用していますが、どんな種類のテキストでも使用できます。例えば、このアプリケーションを使用すると、食事を用意する際にレシピを読むことができます。また車やバイクの運転中にニュース記事や本を読むこともできます。
アプリケーションのアーキテクチャ
サーバーレスアプリケーションを構築します。つまり、サーバーを操作する必要がないため、プロビジョニング、パッチ適用、スケーリングは必要ありません。これは AWS クラウドで自動的に管理されるため、ユーザーはアプリケーションに集中できます。
このアプリケーションは 2 つの機能を提供します。1 つは、新規投稿に関する情報を送信して MP3 ファイルに変換することで、もう 1 つは、その投稿に関する情報 (Amazon S3 バケットに保存される MP3 ファイルへのリンクを含む) を取得することです。どちらの機能も、Amazon API Gateway から RESTful ウェブサービスとして公開されます。
アプリケーションが新規投稿に関する情報を送信する場合:
1 この情報は、Amazon API Gateway で公開された RESTful ウェブサービスで受信されます。このウェブサービスは、Amazon Simple Storage Service (Amazon S3) でホストされる静的ウェブページから呼び出されます。
2 Amazon API Gateway によって AWS Lambda 関数 New Post がトリガーされます。この関数によって MP3 ファイル生成プロセスが初期化されます。
3 Lambda 関数によって投稿に関する情報が Amazon DynamoDB テーブルに挿入されます。投稿に関する情報はすべてこのテーブルに保存されます。
4 プロセス全体を非同期に実行する場合は、Amazon Simple Notification Service (Amazon SNS) を使用して、新規投稿に関する情報を受信するプロセスと音声変換を起動するプロセスを分離します。
5 もう一つの Lambda 関数 Convert to Audio は SNS トピックに登録されており、新しいメッセージが表示される (つまり、新規投稿が音声ファイルに変換される) 場合に必ずトリガーされます。
6_Convert to Audio_ Lambda 関数は Amazon Polly を使用してテキストを特定の言語 (テキストと同じ言語) の音声ファイルに変換します。
7 新しい MP3 ファイルは専用の S3 バケットに保存されます。
8 投稿に関する情報は DynamoDB テーブルで更新されます。S3 バケットに保存された音声ファイルへの URL は、その前に保存されたデータとともに保存されます。
アプリケーションが投稿に関する情報を取得する場合:
<span style=“ssb_maroon”>1 RESTful ウェブサービスは Amazon API Gateway を使用してデプロイされます。Amazon API Gateway では投稿に関する情報を取得するメソッドを公開しています。このメソッドには、その投稿のテキストと MP3 ファイルが保存されている S3 バケットへのリンクが含まれています。このウェブサービスは、Amazon S3 でホストされる静的ウェブページから呼び出されます。
2 Amazon API Gateway は Get Post Lambda 関数を起動して投稿データを取得するロジックをデプロイします。
3_Get Post_ Lambda 関数はその投稿に関する情報 (Amazon S3 へのリファレンスなど) を DynamoDB テーブルから取得して返します。
取り上げるトピック
このラボを修了すると、以下ができるようになります。
- データを保存する Amazon DynamoDB テーブルを作成する
- Amazon API Gateway RESTful API を作成する
- API Gateway によってトリガーされる AWS Lambda 関数を作成する
- AWS Lambda 関数を Amazon Simple Notification Service (SNS) に接続する
- Amazon Polly を使用してさまざまな言語や音声のスピーチを合成する
アイコンキー
このラボでは、さまざまな種類の手順と注記への注意を促すため、各種アイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- 実行する必要のあるコマンド
- コマンドまたは編集済みファイルの出力の検証に使用できるサンプル出力
- ヒントや重要なガイダンス
- 特記事項または重要な情報 (この情報を読み忘れても、機器やデータに問題が発生するというわけではありませんが、特定のステップを繰り返す必要が生じる可能性があります)
- 警告: 元に戻すことが不可能で、コマンドやプロセスの失敗に影響を与える可能性があるアクションです。中には、いったん実行すると元に戻せない設定への警告もあります。