ラズパイ3 + Julius では音声出力は、用意しておいたwavファイルをaplayで出力していただけでしたが、この出力の部分に、音声合成エンジンのOpenJTalkを使ってみます。
日本語音声合成はOSS界隈ではいくつかあります(Merlin とか)。深層学習を使ったものもありますが、ここはひとつ安定のOpenJTalkということで。
準備
出力周りを確認します。
ラズパイの音声出力は2系統あります。
ステレオミニジャックとHDMIです。
USBスピーカーを使う場合はステレオミニジャックになります。
ただし、USBのスピーカーとマイク一体型(ヘッドセット)はこんな感じ
カード番号とデバイス番号を調べます。
$aplay -l
ステレオミニジャックのカード番号は1、デバイス番号は0です。
テストで以下が聞こえたらOK
$ aplay -Dhw:1,0 /usr/share/sounds/alsa/Front_Center.wav
注:
ミニジャックに接続したスピーカーから音が出ない場合
ここもチェック。
スピーカーアイコンを右クリック。
インストール
$ sudo apt-get update
$ sudo apt-get install open-jtalk
他の提案パッケージもインストールします。
$ sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
やってみます
$ echo “これはテストです” | 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 ./open_jtalk_tmp.wav
$ aplay open_jtalk_tmp.wav
使っている音響モデル
/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
辞書
/var/lib/mecab/dic/open-jtalk/naist-jdic
音響モデルを変えてみます。
***.htsvoiceファイルをダウンロードしたら
/home/pi/voiceというフォルダーを作って、そこに置いておきます。
で、やってみます。
$ echo “それはないわ” | open_jtalk -fm 0.55 -a 0.5 -jf 3.0 -r 1 -m /home/pi/voice/mei_happy.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow ./open_jtalk_mei.wav
$ aplay open_jtalk_mei.wav
声が気に入らなかったら触ってみるパラメーター
「a: all-pass constant」(オールパス値)
「b: postfiltering coefficient」(ポストフィルター係数)
「r: speech speed rate<strong」(スピーチ速度係数)
「fm :additional half-tone」(追加ハーフトーン)
「u: voiced/unvoiced threshold」(有声/無声境界値)
「jm: weight of GV for spectrum」(スペクトラム系列内変動の重み)
「jf: weight of GV for log F0」(F0系列内変動の重み)
Pythonのサンプルコードはこんな感じ。
wavファイルを作ってから出力する場合
【talk.py】
スピーカーの音量調整
$amixer set PCM n%
n ->60~100
この範囲でレベルを設定してチェックしてみます。
$aplay /usr/share/sounds/alsa/Front_Center.wav
最新版インストール
sudo apt-get install open-jtalkでインストールするとVer1.07が入ってしまいます。
1.07では音量オプション(-g)が使えない。
2019/02/17現在、最新版は1.11
1.07をインストール済みの場合は削除しておきます。
まず、hts_engine_APIをインストール(これが無いとOpenJTalkのMakefileが作成されない)
OpenJTalkを導入
Makefile作成
確認
1.07の辞書でもOKなので必須というわけではないですが…….
$ sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
こんな構成の場合
USBタイプのマイク・スピーカー一体型(ヘッドセット)
$aplay -l
で、[USB Audio]のカード番号とデバイス番号をチェック
例
カード番号=0、デバイス番号 = 0の場合
$ aplay -D plughw:0,0 xxx.wav
モノラル音源がいいかも…。
Appendex
複数のwavを連結する場合
soxを使います。
$sudo apt-get install sox
$sox s1.wav s2.wav …. out.wav
Pythonの場合
Leave a Reply