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