クイックノート

ちょっとした発見・アイデアから知識の発掘を

【R】文章の読み上げ音声を生成する【aws.polly】

動画にナレーションを入れる時に便利なのが、
音声合成の技術です。
文章を入力すると、それを読み上げたかのような
音声を生成してくれるというものですね。

音声合成ソフトには無料のものも多くありますが、
ここでは、Amazon が提供している
有料の音声合成サービス Amazon Polly を使って、
音声合成を行う方法を紹介します。

有料といっても、かなり料金が低く設定されており、
最初の12カ月間は無料枠が設けられているので、
かなり使いやすくなっています。

Amazon Polly では、API が提供されていて、
様々なプログラミング言語から呼び出すことができます。

ここでは、R から、Amazon Polly の API を呼び出して、
音声合成を行います。

準備

Amazon Polly は Amazon が提供している
ウェブサービスAWS の一つです。

そのため、Amazon Polly の利用を始めるには、
まず AWS のアカウントの作成が必要になります。

その後、Amazon Polly の利用を開始して、
API のアクセスに必要な情報を取得するという準備が必要になります。

それでは、順番に準備を進めていきましょう。

AWS アカウントを作成する

AWS は従量課金型のサービスになっていて、
使わなければ、料金はかかりませんが、
使ったものについては使った分だけ料金が発生するサービスです。

そのため、アカウント作成時にクレジットカードが必要になります。
また、本人確認のため、電話による認証も行う必要があるため、
電話を取れる状態でアカウント作成に臨みましょう。

アカウントの作成は下のサイトから行います。

aws.amazon.com

サイトにアクセスすると、下のようが表示が表れるので、
AWSアカウントを今すぐ無料で作成」をクリックします。

f:id:u874072e:20180925132357p:plain

後は画面の案内に従って、
住所、電話番号、クレジットカード番号などを入力し、
電話による認証を行います。

Amazon Polly の利用開始

先ほどと同様に、「Amazon Polly」のトップページにアクセスします。

すると、下のような画面が表示されるので、
Amazon Polly の仕様を開始する」をクリックします。

f:id:u874072e:20180925132637p:plain

すると、AWSへのログインが求められるので、
先ほど登録したメールアドレスとパスワードでログインします。

API のアクセス設定

準備の最後として API へのアクセス設定をしておきます。

AWS が提供しているどのサービスへのアクセスを
どのユーザーやグループに許可するのかを決める操作です。
使うのが「Amazon Polly」だけで、しかも自分だけという場合でも、
ちゃんと設定しないといけないので、順に進めていきましょう。

設定ページへのアクセス

API のアクセス設定は下のページから行います。
まずは、下のURLにアクセスしましょう。

https://console.aws.amazon.com/iam/home#/home

グループの作成

API へのアクセスはグループ単位で行います。
そのため、まずはグループを作成します。
利用するのが一人だけでもグループを作る必要があります。

設定ページの左側のメニューから「グループ」を選択して、
「新しいグループの作成」をクリックします。

f:id:u874072e:20180925133425p:plain

グループ名を設定した後に、
「ポリシーのアタッチ」を設定する画面が現れます。
ここで、API への利用許可を選択することになります。

今回は、Amazon Polly へのアクセス許可を設定したいので、
検索ウィンドウに「polly」と入力して、
表示されたポリシー名「AmazonPollyFullAccess」を選択します。

f:id:u874072e:20180925133627p:plain

これで、Amazon Polly へのアクセスが許可されたグループができました。

ユーザーの追加

グループが出来上がりましたが、このままだとグループが空っぽです。
このグループにユーザーを追加することで、
そのユーザーにAPIへのアクセス許可が与えられることになります。

グループを追加した時と同様に左側のメニューから「ユーザー」を選択し、
「新しいユーザーの作成」をクリックします。

画面に従って、ユーザー名を設定し、
アクセスの種類は「プログラムによるアクセス」を選択します。 f:id:u874072e:20180925134011p:plain

ユーザーを先ほど作成したグループに追加します。 f:id:u874072e:20180925134111p:plain

これで、Amazon Polly へのアクセスが許可されたユーザーが作成できました。

最後に、表示されるアクセスキーIDシークレットアクセスキーは、
API を利用する際に使うので保管しておきましょう。

R から音声合成を呼び出す

上の準備が完了したら、いよいよ音声合成を使ってみます。

R では、 Amazon Polly の API を利用するためのパッケージとして、
aws.polly があるので、こちらを使って音声合成を呼び出します。

パッケージのインストール

まずは、aws.polly をインストールしておきます。

install.packages("aws.polly")

ライブラリの読み込み

続いて、aws.polly と tuneR をロードしておきます。

library(aws.polly)
library(tuneR)

tuneR は音声を操作するためのパッケージです。

アクセス情報の設定

API アクセスの設定の際に取得した、
アクセスキーIDシークレットアクセスキーを設定しておきます。

Sys.setenv("AWS_ACCESS_KEY_ID" = "[アクセスキーID]",
           "AWS_SECRET_ACCESS_KEY" = "[シークレットアクセスキー",
           "AWS_DEFAULT_REGION" = "us-east-1",
           "AWS_SESSION_TOKEN" = "")

接続テスト

ここまで問題なく設定が進んでいれば、
次のコマンドで、利用可能な音声のリストが取得できます。

list_voices(language = "ja-JP")

Amazon Polly は音声合成を行った文字数に応じて課金されるので、
リストを取得するだけなら課金の対象外(のはず)です。
そのため、心置きなくAPIの接続テストに使えます。

音声合成

音声の合成は非常にシンプルで、
synthesize関数一発でできてしまいます。

res = synthesize("これはテスト音声です","Takumi")
writeWave(res,"tmp.wav")

synthesizeの引数は、読み上げる文章と、読み上げる声を指定します。
上のlist_voicesで表示された声の中から好きな声を選択することができます。

最後に、writeWaveで取得した音声データを保存しています。
もちろん取得したデータをそのまま R 上で編集することも可能です。

まとめ

R で Amazon Polly を使って音声合成を行う方法を紹介しました。

一度準備で設定してしまえば、
呼び出すときは、シンプルなので、かなり使いやすいですね。

無料枠も1カ月に500万文字と十分に余裕があるので、
色々と試せそうです。

プライバシーポリシー