python で GoogleHome に喋らせてみた
参考
階層
階層は下の通りです。
.
├── googlehome.py
├── voice.txt
└── extra
└── hoge.mp3
使い方
googlehome に喋らせるためのプログラムです。
実行すると入力を求められます。入力出来るのは下記の 3 種類になります。
- 文字列
- 入力された文字列を googlehome が喋ります。
- 空欄
- voice.txt に記載されている文字列を googlehome が喋ります。
- ファイル名
- extra/ 配下のファイル名を指定することで、その mp3 の内容を googlehome が喋ります。
コード
import os
import pychromecast
import socket
import subprocess
import time
from gtts import gTTS
device_name = "Google Home"
mp3_file_name = "voice.mp3"
ip = socket.gethostbyname(socket.gethostname())
port = 8888
# run server
proc = subprocess.Popen(f"python -m http.server {port}")
time.sleep(1)
# input text what you want googlehome to speak.
input = input("何て喋りましょうか?( extra 内のファイル名を指定するとその音声を使用します。)")
# get text from file if input was blank.
if not input:
with open("./voice.txt", encoding="utf-8") as f:
input = f.read()
# save as mp3 from input.
if input:
tts = gTTS(text=input, lang='ja')
tts.save(f'./{mp3_file_name}')
# use extra mp3 if input was file name.
file_name = f"./extra/{input}"
if os.path.isfile(file_name):
mp3_file_name = file_name
# get device instance.
chromecasts, browser = pychromecast.get_listed_chromecasts(friendly_names = [device_name])
cast = chromecasts[0]
cast.wait()
# send http request to local.
mc = cast.media_controller
mc.play_media(f'http://{ip}:{port}/sound.mp3', 'audio/mp3')
time.sleep(2)
mc.play_media(f'http://{ip}:{port}/{mp3_file_name}', 'audio/mp3')
mc.block_until_active()
# kill process.
proc.kill()
ディスカッション
コメント一覧
まだ、コメントがありません