こちらの記事でAmazon PollyのGUIの使い方を紹介してあります。この記事に書いてあることを前提にして進めます。
Java、Node.js、.NET、PHP、Python、Ruby、Go、C++からAmazon PollyのAPIを使えますが、今回はPythonを使っていきたいと思います。
Pythonの場合、先にboto3はインストールしておく必要があります。
以下のスクリプトが、引数としてテキストデータ(日本語の文章)を渡して音声データを得るスクリプトです。
(本当は例外処理とかいろいろ入れたほうがいいとは思いますが、今回は使い方紹介ということでそこらへんは適当です)
#!/usr/bin/python3 import sys from boto3 import client argv = sys.argv polly = client("polly", region_name="us-east-1", aws_access_key_id="****", aws_secret_access_key="****") response = polly.synthesize_speech( Text = argv[1], OutputFormat = "mp3", VoiceId = "Mizuki") file = open("test.mp3", "wb") file.write(response["AudioStream"].read()) file.close()
aws_access_key_id,aws_secret_access_keyというのはIAMのアクセスキーIDとシークレットアクセスキーです。コンソールにログインするときのユーザー名、パスワードとはまた違うのでご注意を。
synthesize_speechで音声データを取得しています。
synthesize_speechに引数として与えられているVoiceIdは言語設定のようなものです。
このスクリプトは日本語にしか対応していませんが、他の言語を使いたい場合はここをみて変更してみてください。
なお、VoiceIdで設定した言語と、引数として渡した文章の言語が一致しない場合は、無音の音声データが作成されるようです。
こちらの記事で紹介されているSSMLを使う場合は、synthesize_speechの引数にTextTypeを追加します。
上のスクリプトをssml用に変える場合はpolly.synthesize_speechの部分を以下のように変更すればよいです。
response = polly.synthesize_speech( Text = argv[1], OutputFormat = "mp3", VoiceId = "Mizuki" TextType = "ssml")