環境
- Python 3.6
コード
以下をjtalk.pyとして保存する
#coding: utf-8 import subprocess import tempfile def run(message, voice_path='voice.wav'): speed = 1.0 dic_path = "/usr/local/Cellar/open-jtalk/1.10_1/dic" model_path = "/usr/local/Cellar/open-jtalk/1.10_1/voice/mei/mei_normal.htsvoice" with tempfile.NamedTemporaryFile(mode='w+') as tmp: tmp.write(message) tmp.seek(0) command = 'open_jtalk -x {} -m {} -r {} -ow {} {}'.format(dic_path, model_path, speed, voice_path, tmp.name) print(command) proc = subprocess.run( command, shell = True, )
で、使いたいときは以下のようにimportして使う 適当にsample.pyとする
import jtalk from datetime import datetime d = datetime.now() text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second) jtalk.run(text)
実行
python sample.py
同ディレクトリにvoice.wavが生成されているはず
なんでtempfileつかうの
stdinだと一部文字列が入ったときに正常に動作しないことがあった