2012年6月19日火曜日

ubuntuで、Open JTalkを使って、日本語テキストを読み上げさせてみた。(2)

さて、インストールは完了してので、さっそくpythonで Open JTalk を使ってみた。


pyaudioは、ここでダウンロードした。
オプションは、ここを参考にした。

まずまずの結果でした。

これを使えば、rrs読み上げソフトを作れそうだ。


import wave
import os
import pyaudio

if __name__ == "__main__":

    voice = '/usr/local/share/hts_voice/mei_normal'
    dic   = '/usr/lib/open_jtalk/dic/utf-8'
    text = "ウブンツで、日本語テキストを読み上げさせてみた。"
 
    opts = [
            "-x  " + dic + "/",
            "-td " + voice + "/tree-dur.inf",
            "-tm " + voice + "/tree-mgc.inf",
            "-tf " + voice + "/tree-lf0.inf",
            "-md " + voice + "/dur.pdf",
            "-mm " + voice + "/mgc.pdf",
            "-mf " + voice + "/lf0.pdf",
            "-dm " + voice + "/mgc.win1",
            "-dm " + voice + "/mgc.win2",
            "-dm " + voice + "/mgc.win3",
            "-df " + voice + "/lf0.win1",
            "-df " + voice + "/lf0.win2",
            "-df " + voice + "/lf0.win3",
            "-dl " +voice + "/lpf.win1",
            "-s   48000",
            "-p   240",  # 話速?
            "-a   0.55", # 声質?
            "-u   0.5",  # 有声化・無声化?
            "-jm  0.7",  # 大小?
            "-jf  0.5",  # 抑揚?
            "-jl  1.0",
            "-l",
            "-z   6000",
            "-ow " + "out.wav",
            "-em " + voice + "/tree-gv-mgc.inf",
            "-ef " + voice + "/tree-gv-lf0.inf",
            "-cm " + voice + "/gv-mgc.pdf",
            "-cf " + voice + "/gv-lf0.pdf",
            "-k  " + voice + "/gv-switch.inf",
            ]

    cmd = "open_jtalk "
    for row in opts:
        cmd += row + " "
    cmd += "in.txt"

    f = open("in.txt",'w')
    f.write(text)
    f.close()

    os.system(cmd)

    wf = wave.open("out.wav", "r")

    # ストリームを開く
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)

    # チャンク単位でストリームに出力し音声を再生
    chunk = 1024
    data = wf.readframes(chunk)
    while data != '':
        stream.write(data)
        data = wf.readframes(chunk)
    stream.close()
    p.terminate()


ubuntuで、Open JTalkを使って、日本語テキストを読み上げさせてみた。(1)

ubuntu で、日本語テキストを読み上げさせてみた。(忘れない程度に、いい加減なメモ)

音声合成は、Open JTalk を使えば簡単にできる。が、インストールが大変そう。

google先生にしつこく聞いてみると、ここで(OpenHRI)紹介されていた。


コマンドラインを使ったインストール、

sudo apt-add-repository ppa:openhri/ppa
sudo apt-get update
sudo apt-get install openhrivoice

Open JTalkは、openhrivoiceパッケージに含まれているので、これでインストール完了。



端末から、コマンドで、

open_jtalk

と入力し実行すれば簡単な使い方が表示される。
コマンドオプションが複雑なので、pythonを使って動かすことにした。



辞書は、

/usr/lib/open_jtalk/dic/utf-8/

HTSボイスは

/usr/lib/hts-voice/nitech-jp-atr503-m001/

にインストールされていた。



HTSボイスの「 nitech_jp_atr503_m001 」だけでは物足りないので、MMDAgentもインストールすることにした。(参考にしたページはここ


 MMDAgent - Toolkit for Building Voice Interaction Systems から、
     
    MMDAgent_Example-1.1.zip(MMDAgent のサンプルスクリプト)

をダウンロード。作業用ディレクトリに置いて展開し配置する。


unzip MMDAgent_Example-1.0.zip
sudo mv ./MMDAgent_Example-1.0/Voice/mei_normal /usr/local/share/hts_voice/mei_normal



これで、インストールは完了。


2018/2/9追記
上の情報は6年前で古い。open jtalkのインストールは簡単にできる。

#インストールします。
sudo apt-get install -y open-jtalk
sudo apt-get install -y open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

#wavファイルを作ってみます。
echo "はじめまして、こんにちは" > voice.txt
open_jtalk -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow test.wav voice.txt

2年ぶりに更新

 最後の記事が21年3月でしたので、27ヶ月ぶり。 2020年頃から始まったコロナ禍から在宅ワークがなくなり、通常運転に慣れてきた頃。 そろそろ新しい趣味を探していこうと思っています。 さて何するかな。。。