AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、AWSのAI音声合成サービス「Amazon Polly」をPythonで利用します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、AWSのAI音声合成サービス「Amazon Polly」をPythonで利用します。以下、Pollyに用意されているメソッドを概観し、幾つかの使い方を紹介します。
AWSには、事前トレーニング済みのAIを手軽に利用できる「AIサービス」が多数用意されており、その内容はコンピュータビジョンから言語、レコメンデーション、予測と多岐にわたります。
今回紹介するAmazon Polly(以下、Polly)は、テキストをリアルな音声スピーチに変換するAIクラウドサービスです。サポート言語は日本語や英語など、2021年2月の本稿執筆時点で28種類が提供されており、アメリカ英語やイギリス英語など、細分化されている言語もあります。
各言語を話す話者は音声IDで識別され、これは現在、62種類あります。多くのサポート言語では男性、女性の音声が提供されており、日本語では「Takumi」と「Mizuki」がそれに当たります。ちなみに「Polly」とは、英米でオウム(Parrot)によく付けられる名前です。
AWSの「AIサービス」はコンソール画面から利用できますが、開発を念頭に置かなくても、慣れてくれば今回のようにAPIを利用する方がより便利で効率的に感じてくるでしょう。本稿がそのように利用するきっかけになれば幸いです。
Pollyは従量課金制で、処理したテキストの文字数に応じて毎月課金されます。標準音声の料金は音声文字のリクエスト100万字に対して4.00ドル、より高品質なニューラル音声(日本語は未対応)は100万字に対して16.00ドルです。
なおPollyは、無料利用枠の対象になっており、標準音声は最初のリクエストから12カ月間は、1カ月当たり500万字まで、ニューラル音声は100万字まで、無料で利用できます(ただし、無料利用枠を超えた場合には従量課金が適用されます)。
本稿では読者の環境で下記要件が満たされていることを仮定しています。
なおこれは必須ではありませんが、以下のサンプルコードは「Jupyter Notebook」での実行を想定しています。
Pollyには下記のメソッドが用意されています。
メソッド名 | 機能 | 引数 | 戻り値 |
---|---|---|---|
describe_voice | 利用可能な音声一覧を返す | 言語コードなど | 辞書 |
synthesize_speech | テキストまたはSSMLを音声合成する | テキスト、言語コード、音声ID、出力形式など | 辞書 |
start_speech_synthesis_task | 非同期音声合成タスクを生成する | 上記に加え、書き出し先S3バケット名など | 辞書 |
list_speech_synthesis_tasks | 音声合成タスク情報一覧を返す | 最大値・タスクの状態 | 辞書 |
get_speech_synthesis_task | 特定の音声合成タスク情報を取得する | タスクID | 辞書 |
put_lexicon | レキシコンを保存する | レキシコン名とレキシコン | 辞書 |
list_lexicons | レキシコン一覧を返す | - | 辞書 |
get_lexicon | 特定のレキシコンの内容を返す | レキシコン名 | 辞書 |
delete_lexicon | 特定のレキシコンを削除する | レキシコン名 | 辞書 |
can_paginate | 各メソッドのページネーションの有無を調べる | メソッド名 | 真偽値 |
get_paginator | メソッドに関するページネータを生成する | メソッド名 | ページネータオブジェクト |
generate_presigned_url | 署名済みURLを返す | メソッドとその引数 | 署名済みURL |
Pollyでは3000文字以内の場合、「synthesize_speech」メソッドを用いて音声合成ができます。また、この戻り値はすぐに取得できます。一方で3000文字を超える場合(最大10万文字まで)は、「start_speech_synthesis_task」という非同期音声合成タスクを実行します。この場合、音声合成の結果は指定したS3バケットに保存されます。
SSMLとは音声合成マークアップ言語(Speech Synthesis Markup Language)の略称で、これを用いるとナレーションの声量や抑揚などを局所的に細かくコントロールできます。
レキシコンとは語彙(ごい)集のことです。これを登録することで、略字やPollyが誤読する単語について、利用者がPollyの発音を直接指定できます。
ここからはPollyのメソッドを用いて音声合成をしてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.