今回は付け足しの投稿だ。
前回、音声合成ソフトウエアとして、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 件のコメント:
コメントを投稿