AWS SDK for Python (boto3)でAmazon Pollyの声を使い分けてみる
はじめに
小ネタです。先日Amazon Pollyに待望の日本人男性声であるTakumiが追加されました。
なので、「男性と女性の会話の台本を作って、AWS SDK for Pythonを使ったPythonスクリプトに読み込ませて、MP3ファイルを作る」ということをやってみました。
やってみた
環境
Pythonスクリプトを動かしている環境は以下の通りです。
$ python --version Python 2.7.10 $ python -m pip freeze | grep boto3 boto3==1.4.4
データ
以下のようなCSVデータを作ります。最初の項目がフラグで、Mが男性、Fが女性です。
$ cat data.txt M, どうもー、タクミです。 F, ミズキです! M, 最近台風のニュースが多いね。 F, 多いわねー。天気は良いほうが好き!
スクリプト
こんな感じでスクリプトを作りました。
#!/usr/bin/env python # -*- coding: utf-8 -*- from boto3 import Session import os import csv import StringIO from contextlib import closing ## Sessionを作成 session = Session(profile_name="default") polly = session.client("polly") ## polly.mp3が存在した場合は削除 if os.path.isfile('polly.mp3'): os.remove ('polly.mp3') ## data.txtをCSVとして読み込む f = open('data.txt') reader = csv.reader(f) ## CSVを1行ずつ読み込む for line in reader: ## CSVの1つめの項目で男女を切り替え if line[0] == "M": voice="Takumi" elif line[0] == "F": voice="Mizuki" ## 音声データを作成 response = polly.synthesize_speech( Text = line[1].decode("utf-8"), OutputFormat = "mp3", VoiceId = voice) ## polly.mp3に追加書き込み if "AudioStream" in response: with closing(response["AudioStream"]) as stream: data = stream.read() fw = open("polly.mp3", "a+") fw.write(data) fw.close() f.close()
音声データ
出来上がったデータがこれです。
さいごに
ちょっとした会話音声を簡単に作れるのはAmazon Pollyの魅力だなと思います。