Raspberry Piに導入したOpenJTalkをPythonで実行してみたいと思います。
Pythonと組み合わせることで様々な処理と組み合わせることができそうです!
OpenJTalkの導入
OpenJTalkをまだラズパイに入れていない方は
Raspberry PiにOpenJTalkを入れて合成音声を喋らせてみたので参考にしてみてください。
Raspberry Piで合成音声OpenJTalkに喋ってもらう
今回はRaspberry PiにOpenJTalkという合成音声ライブラリを利用して喋らせてみました! 意外と手順が少ないので簡単に喋らせることができました! OpenJTalkとは OpenJTalkは名古屋工業大学で開発された文章を合成...
Pythonでの実行
OpenJTalkの導入が完了したらPythonでも実行できるようにしていきます。
ファイルには男性と女性の両方を出力できるようにコーディングしています。
このファイルをコピペして実行すれば文章が読み上げられます。
import subprocess
def speack_ojtalk(text, voice="f"):
open_jtalk = ['open_jtalk']
mecab_dict = ['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
if voice == "f":
# 女性音声
htsvoice = ['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
else:
# 男性音声
htsvoice = ['-m','/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice']
# 音声スピード
speed = ['-r','1.0']
outwav = ['-ow','test.wav']
cmd = open_jtalk+mecab_dict+htsvoice+speed+outwav
c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
c.stdin.write(text.encode('utf-8'))
c.stdin.close()
c.wait()
aplay = ['aplay','-q','test.wav','-Dhw:1,0']
wr = subprocess.Popen(aplay)
def main():
# 読み上げてほしい文章を入力
text = "ラバかロバかロバかラバか分からないので ラバとロバを比べたらロバかラバか分からなかった"
# voice=に男性か女性の音声を指定する
speack_ojtalk(text, voice="f")
if __name__ == '__main__':
main()
Pythonファイルを実行して、無事に指定した文章が読み上げられました。
非常に便利な機能ですが、カクカクした音声が気になりますね。
何かいいものはないか、、、