連載
» 2021年03月02日 05時00分 公開

初学者向け「Amazon Polly」(音声合成サービス)をPythonで利用するにはAWSチートシート

AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、AWSのAI音声合成サービス「Amazon Polly」をPythonで利用します。

[金晟基,東京ITスクール]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、AWSのAI音声合成サービス「Amazon Polly」をPythonで利用します。以下、Pollyに用意されているメソッドを概観し、幾つかの使い方を紹介します。

「Amazon Polly」とは

 AWSには、事前トレーニング済みのAIを手軽に利用できる「AIサービス」が多数用意されており、その内容はコンピュータビジョンから言語、レコメンデーション、予測と多岐にわたります。

 今回紹介するAmazon Pollyは、テキストをリアルな音声スピーチに変換するAIクラウドサービスです。サポート言語は日本語や英語など、2021年2月の本稿執筆時点で28種類が提供されており、アメリカ英語やイギリス英語など、細分化されている言語もあります。

 各言語を話す話者は音声IDで識別され、これは現在、62種類あります。多くのサポート言語では男性、女性の音声が提供されており、日本語では「Takumi」と「Mizuki」がそれに当たります。ちなみに「Polly」とは、英米でオウム(Parrot)によく付けられる名前です。

AWSの「AIサービス」はコンソール画面から利用できますが、開発を念頭に置かなくても、慣れてくれば今回のようにAPIを利用する方がより便利で効率的に感じてくるでしょう。本稿がそのように利用するきっかけになれば幸いです。


利用料金

 Amazon Pollyは従量課金制で、処理したテキストの文字数に応じて毎月課金されます。標準音声の料金は音声文字のリクエスト100万字に対して4.00ドル、より高品質なニューラル音声(日本語は未対応)は100万字に対して16.00ドルです。

 なおAmazon Pollyは、無料利用枠の対象になっており、標準音声は最初のリクエストから12カ月間は、1カ月当たり500万字まで、ニューラル音声は100万字まで、無料で利用できます(ただし、無料利用枠を超えた場合には従量課金が適用されます)。

必要条件

 本稿では読者の環境で下記要件が満たされていることを仮定しています。

  1. AWSアカウントを有しており、「AWS Identity and Access Management」(IAM)ユーザーに必要な権限(今回であればPollyと「Amazon S3」関連)が付与されていること。ホームディレクトリにAPIを利用するための認証情報が保存されていること
  2. AWSが提供するPython用のSDK「Boto3」がインストールされていること

 なおこれは必須ではありませんが、以下のサンプルコードは「Jupyter Notebook」での実行を想定しています。

メソッド一覧

 Amazon 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

 Amazon 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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。