aws pollyの概要と使い方
概要
- AWS Pollyは、テキストを音声に変換するサービス
- GCPのText-to-Speechはストリーミングをサポートしていないが、AWS Pollyはストリーミングに対応している
必要なライブラリ
macOS
$ brew install portaudio
$ pip install pyaudio
具体例
import boto3
import pyaudio
import os
import wave
def stream_speech(text, voice_id='Tomoko', engine='neural'):
# Pollyクライアントの作成
polly_client = boto3.client('polly')
# 音声合成のリクエスト
response = polly_client.synthesize_speech(
Text=text,
OutputFormat='pcm',
VoiceId=voice_id,
Engine=engine
)
# ストリーミングオーディオの設定
audio_stream = response.get('AudioStream')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(width=2),
channels=1,
rate=16000,
output=True)
try:
while True:
data = audio_stream.read(1024)
if len(data) == 0:
break
stream.write(data)
finally:
stream.stop_stream()
stream.close()
p.terminate()
if __name__ == '__main__':
text = """ジョバンニはまっ赤になってうなずきました。
けれどもいつかジョバンニの眼のなかには涙がいっぱいになりました。
そうだ僕は知っていたのだ、もちろんカムパネルラも知っている、それはいつかカムパネルラのお父さんの博士のうちでカムパネルラといっしょに読んだ雑誌のなかにあったのだ。
それどこでなくカムパネルラは、その雑誌を読むと、すぐお父さんの書斎から巨おおきな本をもってきて、ぎんがというところをひろげ、まっ黒な頁ページいっぱいに白い点々のある美しい写真を二人でいつまでも見たのでした。
それをカムパネルラが忘れる筈はずもなかったのに、すぐに返事をしなかったのは、このごろぼくが、朝にも午后にも仕事がつらく、学校に出てももうみんなともはきはき遊ばず、カムパネルラともあんまり物を云わないようになったので、カムパネルラがそれを知って気の毒がってわざと返事をしなかったのだ、そう考えるとたまらないほど、じぶんもカムパネルラもあわれなような気がするのでした。
"""
stream_speech(text)