[音声合成] 深層学習を駆使したテキスト読み上げサービスの Amazon Polly を AWS CLI で試してみた ~ AWS re:Invent Day2
ma2k8
こんにちは。同僚の sparkgene と共にre:invent 2016 に参加している ma2k8 です。
Keynote Day2 で発表されたPollyを早速 AWS CLI で試してみたので紹介したいと思います。
Amazon Pollyとは?
テキストを分析し、読み上げた音声データをMP3ストリームで提供してくれるテキストスピーチサービスです。
また、lexicon(発音辞書)で任意の読み上げ方を登録することが出来ます。
非常にインテリジェント(地名略称を正式名称にしたり)でレスポンスも非常によいとのこと。すでに24もの言語に対応しているようです。
事前準備
ここではMacOSでの手順を紹介しますが、他OSやSDKでも抑える点は同じです。
※バージョン、RegionがPolly対応しているか、IAMに権限はあるか。
AWS-CLIのupdate
[bash gutter="false"]
$ brew upgrade awscli
~略~
$ aws --version
aws-cli/1.11.23 Python/2.7.10 Darwin/15.6.0 botocore/1.4.80
[/bash]
aws configure
Pollyの現時点での対応リージョンは以下の通り
今回はバージニアリージョン(us-east-1
)を選択します。
[bash gutter="false"]
$ aws configure
AWS Access Key ID [********************]:
AWS Secret Access Key [********************]:
Default region name [us-east-1]:
Default output format [None]:
[/bash]
IAMにはpolly:SynthesizeSpeech
の権限が付与されていれば以降の手順は実行可能です。
実行してみる
[bash gutter="false"]
$ aws polly synthesize-speech --output-format=mp3 --text="こんにちは" --text-type=text --voice-id=Mizuki hello.mp3
{
"ContentType": "audio/mpeg",
"RequestCharacters": "5"
}
[/bash]
mp3で音声がダウンロードできました!
長めの文章で実行してみる
青空文庫から「吾輩は猫である」のテキストを持ってきてPollyに読んでもらいましょう。
[bash gutter="false"]
$ aws polly synthesize-speech --output-format=mp3 --text=nkf -u neko.txt
--text-type=text --voice-id=Mizuki neko.mp3
{
"ContentType": "audio/mpeg",
"RequestCharacters": "1107"
}
[/bash]
生成された音声データがこちら。
1000文字以上でも40〜50秒ほどで音声ファイルを取得できました。ストリーム再生であれば遅延なく再生できそうですね。読み上げもすごく自然です。
制限
AWS Console上ではPollyが読み上げられる文章は1000文字までに制限されていますが、実際は1500文字が上限になっているようです。
入力テキストのサイズは、最大 1500 課金対象文字 (合計 3000 文字) です。SSML タグは、課金対象文字としてカウントされません。入力テキストに適用する最大 5 個のレキシコンを指定できます。出力オーディオストリーム (合成) は 5 分に制限されます。その時間を過ぎると、残りの音声は切り取られます。
Amazon Polly の制限 - Amazon Polly
ちなみに上限値を超える文字列を送ると以下のメッセージが返ってきました。
[bash gutter="false"]
An error occurred (TextLengthExceededException) when calling the SynthesizeSpeech operation: None
[/bash]