2016年11月22日火曜日

第10回:GOPIGOにスピーカをつけてみた(2)

今回は付け足しの投稿だ。
前回、音声合成ソフトウエアとして、Aquestalkを使った。Aquestalkは商用ソフトであるが、個人使用は無料という範疇のソフトである。
よくよく、ネットで調べてみると、どうやらOpenJTalkというソフトがオープンであり、主流の様だ。そこで、急遽、OpenJTalkについても試してみた。

いろいろと試していると、やっぱりスピーカがパッシブ型なので、音が小さい事が気になって来た。

OpenJTalkについては、これもやはりいろいろとブログに参考になる情報があふれている。このブログに従ってOpenJTalkにトライした。
プログラムのインストール等は、このブログの通りで、スムースにできた。Aquestalkで作ったテキストファイルを読まして比較したかったので、ブログにあるPYTHONのプログラムを多少変更して、テキストファイルから読み込む様にした。
#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','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','0.7']
    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__':
    f=open('shaberu.txt','r')
    k=f.read()
    jtalk(k)
変えたのは、メインルーチンで、shaberu.txtファイルを読む形に変えただけだ。あ、そういえば、少し発声を遅くするために、speed 設定を1.0から0.7に変えたことも書いておく。ブログを書かれたkkoba84さん、有用な情報を有り難うございます。関数を使わさせて頂いております。

Aquestalkと同じファイルを読まして比較して、OpenJTalkは、レスポンスが遅いことが気になった。声の調子などは、女性の明るい声に変えることで、OpenJTalkの方が良いと思うが、OpenJTalkは起動してから5秒程しずかなので、何か間違ったのかと思ってしまう。また、人との掛け合いの間が抜けてしまうかもしれない。遅くなる理由が何かあるとは思うが、他人のプログラムを活用させて頂いている関係で、よく理由がわからない。
Aquestalkは商用プログラムなので、応答性能は重視して開発しているだろうから、こういう差が出るのかもしれない。まあ、両方使いながら、実用性を比較して行こう。

kkoba84さんが、時間を読み上げるPYTHONプログラムを公開されているので、「今何時?」と聞けば、時間を答える、という時間応答ロボットをまず作ってみたらどうか?と思った。でもその為には、マイクをつけないといけないね。次はそれだね。

0 件のコメント:

コメントを投稿