はじめに
- 我が家にGoogle Homeが4台ほどあるので活用したいので、とりあえずやってみる
結論ファースト
できた。
import pychromecast
from gtts import gTTS
import io
import base64
# テキストを音声に変換
message = "昔々、あるところにおじいさんとおばあさんがほにゃらら"
tts = gTTS(message, lang='ja')
# 音声をバイトストリームとして保存
audio_stream = io.BytesIO()
tts.write_to_fp(audio_stream)
audio_stream.seek(0)
# Google Nest Homeを探す
chromecasts, browser = pychromecast.get_chromecasts()
# とりあえず名前で探す
cast = next((cc for cc in chromecasts if cc.name == "1階Nest"), None)
if cast:
cast.wait()
mc = cast.media_controller
# 音声データをメモリ上で再生
mc.play_media("data:audio/mp3;base64," + base64.b64encode(audio_stream.getvalue()).decode(), 'audio/mp3')
mc.block_until_active()
else:
print("1階Nestという名前のデバイスが見つかりません")
備考
- 文字列を音声ファイルにしたものをアップロードして、その音声ファイルのURLを関数に渡すやり方があるみたいだけど、今回はストリームでやってるのがポイントです。