この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
小ネタです。先日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の魅力だなと思います。