ラズパイ3倍美味しいブログ

ラズパイ3を美味しく食べるはずがinto the VR!!! Amazon echoのAlexaがトモダチ・・・ラズパイはおやつ。

openjtalkで現在時刻を喋ってもらう実験

ラズベリーパイ3に入れたメイさんの声で、現在時刻を喋ってもらいたくなった。

自分が長々と書いた文章じゃなくて、現在時刻をさくっと教えてほしいんだよ!

 

参考サイトはやはりからあげさん。

karaage.hatenadiary.jp


ミクの声で喋らせるのは、ちょっとこっちに置いといて、ラズベリーパイ3にOpenJTalk入れてメイさんの声では喋るし、メイさんの声で喋ってもらおう。

なので下ごしらえまでは完了しているということで進めていく。

頑張っておしゃべりさせるzo!


こちらの参考サイトも確認する。

qiita.com


参考サイトから類推するに、htsvoiceファイルの場所をちゃんと指定してやったら、その音声データで喋らせることができそう。

私の場合、メイさんの声は/home/pi/Voice_mei/mei_normal.htsvoiceというところにある。

以下のファイルをjtalkmei.pyという名前で作成し、/home/piに保存
++++++++++++++++++++++++++++++++++++++++++++++++++++
# -*- coding: utf-8 -*-
import subprocess
from datetime import datetime

def jtalk(t):
open_jtalk=['open_jtalk']
mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
htsvoice=['-m','/home/pi/Voice_mei/mei_normal.htsvoice']
speed=['-r','1.0']
outwav=['-ow','open_jtalk.wav']
cmd=open_jtalk+mech+htsvoice+speed+outwav
c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
c.stdin.write(t)
c.stdin.close()
c.wait()
aplay = ['aplay','-q','open_jtalk.wav']
wr = subprocess.Popen(aplay)

def say_datetime():
d = datetime.now()
text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
jtalk(text)

if __name__ == '__main__':
say_datetime()
++++++++++++++++++++++++++++++++++++++++++++++++++++

そして下記を実行。

$ python jtalkmei.py
ワンテンポ遅れて、喋ったー!

さて、ここからが実験です。時刻は喋って欲しいけどもう少し、喋る言葉を変えてみよう。下記の内容をテキストでjtalkmeit.pyというファイル作って、/home/piに保存。
++++++++++++++++++++++++++++++++++++++++++++++++++++
# -*- coding: utf-8 -*-
import subprocess
from datetime import datetime

def jtalk(t):
open_jtalk=['open_jtalk']
mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
htsvoice=['-m','/home/pi/Voice_mei/mei_normal.htsvoice']
speed=['-r','1.0']
outwav=['-ow','open_jtalk.wav']
cmd=open_jtalk+mech+htsvoice+speed+outwav
c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
c.stdin.write(t)
c.stdin.close()
c.wait()
aplay = ['aplay','-q','open_jtalk.wav']
wr = subprocess.Popen(aplay)

def say_datetime():
d = datetime.now()
text = 'ただいまの時刻は、%s時%s分です。' % (d.hour, d.minute)
jtalk(text)

if __name__ == '__main__':
say_datetime()
++++++++++++++++++++++++++++++++++++++++++++++++++++
どきどきしながら下記実行。
$ python jtalkmeit.py

喋ったー。ただいまのイントネーションがおかしいけど、しゃべった。
メイさんのイントネーションを矯正する方法ってあるんかなぁ。

 

さーて次は、天気予報も喋ってもらおう。