動画にナレーションを入れる時に便利なのが、
音声合成の技術です。
文章を入力すると、それを読み上げたかのような
音声を生成してくれるというものですね。
音声合成ソフトには無料のものも多くありますが、
ここでは、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 Polly の利用開始
先ほどと同様に、「Amazon Polly」のトップページにアクセスします。
すると、下のような画面が表示されるので、
「Amazon Polly の仕様を開始する」をクリックします。
すると、AWSへのログインが求められるので、
先ほど登録したメールアドレスとパスワードでログインします。
API のアクセス設定
準備の最後として API へのアクセス設定をしておきます。
AWS が提供しているどのサービスへのアクセスを
どのユーザーやグループに許可するのかを決める操作です。
使うのが「Amazon Polly」だけで、しかも自分だけという場合でも、
ちゃんと設定しないといけないので、順に進めていきましょう。
設定ページへのアクセス
API のアクセス設定は下のページから行います。
まずは、下のURLにアクセスしましょう。
https://console.aws.amazon.com/iam/home#/home
グループの作成
API へのアクセスはグループ単位で行います。
そのため、まずはグループを作成します。
利用するのが一人だけでもグループを作る必要があります。
設定ページの左側のメニューから「グループ」を選択して、
「新しいグループの作成」をクリックします。
グループ名を設定した後に、
「ポリシーのアタッチ」を設定する画面が現れます。
ここで、API への利用許可を選択することになります。
今回は、Amazon Polly へのアクセス許可を設定したいので、
検索ウィンドウに「polly」と入力して、
表示されたポリシー名「AmazonPollyFullAccess」を選択します。
これで、Amazon Polly へのアクセスが許可されたグループができました。
ユーザーの追加
グループが出来上がりましたが、このままだとグループが空っぽです。
このグループにユーザーを追加することで、
そのユーザーにAPIへのアクセス許可が与えられることになります。
グループを追加した時と同様に左側のメニューから「ユーザー」を選択し、
「新しいユーザーの作成」をクリックします。
画面に従って、ユーザー名を設定し、
アクセスの種類は「プログラムによるアクセス」を選択します。
ユーザーを先ほど作成したグループに追加します。
これで、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万文字と十分に余裕があるので、
色々と試せそうです。