ラベル 音声合成 の投稿を表示しています。 すべての投稿を表示
ラベル 音声合成 の投稿を表示しています。 すべての投稿を表示

2016年8月9日火曜日

Raspberry Pi 2+RaspbianでOpen JTalk Ver.1.09をコンパイルしインストール

前回Raspberry Pi 2+Raspbianをお話できるようにしましたにて 、Open JTalk Ver.1.07をインストールしました。
しかし、この バージョンでは音量オプション -gが使えません。

そこで、今回は最新版であるOpen JTalk Ver.1.09をコンパイル・インストールして使えるようにしてみたいと思います。
hts_engine APIをコンパイル
Open JTalkhts_engine API を使っています。
Open JTalkコンパイルに先立って、まずコレをコンパイルします。
ディレクトリをホームに戻します。
$ cd
ソースコードをダウンロードします。
$ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.10.tar.gz
そして、これを解凍します。
$ tar zxvf hts_engine_API-1.10.tar.gz
解凍が終わったら解凍したディレクトリに移動します。
$ cd hts_engine_API-1.10
コンパイルのための設定ファイルを作ります。
$ ./configure
できたらコンパイルします。
$ make
完了すると/home/pi/hts_engine_API-1.10に実行日の日付で新たなファイルが 追加されたりします。
作業が完了したら、次の作業のためにcd⏎でホームディレクトリに戻しておいてください。
Open JTalk Ver.1.09をコンパイル
Open JTalkのサイトからVer.1.09のソースファイルをダウンロードします。
$ wget http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.09.tar.gz
解凍します。
$ tar zxvf open_jtalk-1.09.tar.gz
解凍先 のディレクトリに移動します。
$ cd open_jtalk-1.09
コンパイルのための設定ファイルを作ります。
下記コマンドは改行せず1行で入力してください。
もし、長すぎて改行したい場合は\(バックスラッシュ)を区切る行末に入れるとできます。
$ ./configure --with-charset=UTF-8 --with-hts-engine-header-path=/home/pi/hts_engine_API-1.10/include --with-hts-engine-library-path=/home/pi/hts_engine_API-1.10/lib
できたらコンパイルします。
$ make
動くかどうか確認してみます。正常な場合はVer.1.09の確認が出来ます。
$ ./bin/open_jtalk
root権限でインストールします。
$ sudo make install
動くかどうか確認してみます。 パスが通っていれば下記コマンドのみで実行可能なはずです。
通ってない場合はフルパス/usr/local/bin/open_jtalkで実行してみてください。
正常な場合はVer.1.09の確認が出来ます。
$ open_jtalk
作業が完了したら、次の作業のためにcd⏎でホームディレクトリに戻しておいてください。
Open JTalk 辞書ファイルをコピーする
Ver.1.07の辞書ファイルをそのまま使う事も可能ですが、Ver.1.09の辞書ファイルは若干容量が増えているので何らかの追加がされてるようです。
そこで、最新の辞書ファイルをコピーします。
Open JTalkのサイトからVer.1.09の辞書ファイルをダウンロードします。
$ wget http://tenet.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.09/open_jtalk_dic_utf_8-1.09.tar.gz
解凍します。
$ tar zxvf open_jtalk_dic_utf_8-1.09.tar.gz
root権限でコピーします。
$ sudo cp -r open_jtalk_dic_utf_8-1.09 /var/lib/mecab/dic
前回Raspberry Pi 2+Raspbianをお話できるようにしましたにて作成したjsayを書き換えます。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open_jtalk_dic_utf_8-1.09 -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
実行出来るかどうか確認してみます。
$ jsay 本日は晴天なり
特段これといった変化はないのですが、動作確認 の意味でやってみてください。
音量を変えてみる
Ver1.09で追加された音量オプション -gを試してみます。
jsayスクリプトに オプションを追加します。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -g $2 -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open_jtalk_dic_utf_8-1.09 -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
音量が変わるかどうか確認してみます。
音量が小さくなっていれば 成功です。
$ jsay 本日は晴天なり -20
音量は+数字で音量が大きくなり、-数字で小さくなります。
オマケでマスターボリュームの 変え方
マスターボリュームの変え方は2種類あります。
視覚的に変更する場合はこのコマンドで出来ます。
矢印キー↑↓で上げ下げできます。
$ alsamixer
次に、コマンドラインのみで直接変える方法です。
%の所の数字を大きくすると音量も大きくなり、小さくすると音量も小さくなります。
$ amixer cset numid=1 90%
なお、現在の 音量を確認したい場合は、%の数字を書かずに実行すると valuesの数字で確認できます。
表示になるminとmaxは%指定では なく数字で指定した場合の有効範囲です。
最後に
Open JTalkをRaspberry Pi+Raspbianにインストールする方法を解説した記事は他にもあります。
今回あえて執筆した理由は、バージョンアップによって音声定義 ファイルが.htsvoiceに変更になり、やり方が変わったため最新の手順ということで書きました。
ネット上には古いタイプの音声定義ファイルも残っていてそのままでは使用できません。
もし試してみたい場合は、.htsvoiceに変換する必要があります。
その手順に ついては、既存の記事で対応出来るようなので探して みてください。

2016年8月5日金曜日

Raspberry Pi 2+Raspbianをお話できるようにしました

Raspberry Piの処理結果を得る方法は色々考えられます。
その中から今回は音声合成を使った音の出力をしたいと思います。
準備
今回はRaspberry Pi 2を使います。
Raspberry Pi 2は、音声出力の方法としてHDMIとステレオミニジャックの2種類あります。
スピーカー内蔵モニタならHDMIを、音声のみならステレオミニジャックにスピーカーを接続すると良いでしょう。

ステレオミニジャックを使う場合、出力レベル(音量)がとても低く、イヤホンを使ってやっと聞ける程度です。
大きい音を出したい場合は、相応のスピーカーとアンプが別途必要になります。
接続したのは、100円ショップで購入したモノラルスピーカーx2台でステレオ化したモノとヘッドホンアンプ FiiO E5です。
家にあったものを流用しただけなので、新たに購入されるならアンプ内蔵のモノが安く売られてるのでそちらのほうが良いでしょう。
音声合成ソフト Open JTalk Ver.1.07をインストール
OSは標準的なRaspbianを使っています。
Open JTalkは、入力された文字を元に音声ファイル(wavファイル)を作る音声合成ソフトです。
インストールするパッケージ3つ
  • open-jtalk(Open JTalk本体)
  • open-jtalk-mecab-naist-jdic(辞書)
  • hts-voice-nitech-jp-atr503-m001(音声データ)
コマンドラインから下記をコピペしてインストールします。
$ sudo apt-get install open-jtalk 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 test.wav
すると、実行した直下にtest.wavというファイルが出来ているはずです。
出来たファイルをパソコンで再生しても良いですし、Raspberry Piで再生する場合は下記のようにすると再生できます。
$ aplay test.wav
もし、再生した音量が小さい場合は調整してみてください。
$ amixer cset numid=1 100%
100%の部分を減らすと音量が下がり、増やすと音量が上がります。
視覚的に調整したい場合は下記コマンドでも出来ます
$ alsamixer
音声合成ファイル作成と再生をするシェルスクリプトを作る
コマンドラインで任意のテキストをお話させるシェルスクリプトを作ります。
スクリプト名はなんでも良いのですが、便宜上jsayとします。 エディタを起動します。
$ nano jsay
起動できたら下記のコードをコピペします。
#!/bin/bash
tempfile=`tempfile`
echo "$1" | 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 $tempfile
aplay -q $tempfile
rm $tempfile
コピペできたら、CTRL+X→Yで保存終了。
出来たシェルスクリプトに実行パーミッションを付加します。
$ chmod +x jsay
できたら試しに実行してみます。
$ jsay 本日は晴天なり
もし、お話させる文字列にスペースが入っていたりする場合はダブルコーテーション(")で括ってあげれば渡す事が出来ます。
女性の声に変えてみる
今度は女性の声で喋らせてみたいと思います。
MMDAgentのmeiという ボイスデータを使わせていただきます

まず、MMDAgentのサイトからSourceForge上に掲載されてるzipファイルをダウンロードします。
$ wget http://tenet.dl.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip
ダウンロードが完了したら 解凍します。
$ unzip MMDAgent_Example-1.6.zip
解凍したディレクトリMMDAgent_Example-1.6直下にある/Voice/meiディレクトリをまるごとrootオーナー/usr/share/hts-voiceにコピーします。
$ sudo cp -r ./MMDAgent_Example-1.6/Voice/mei /usr/share/hts-voice
jsayシェルスクリプトの-mオプションを変更します。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
なお、実行パーミッションは変わらないのでそのままで大丈夫です。
できたら再び 試してみます。
$ jsay 本日は晴天なり
女性の声に変わりましたか?
meiの音声ファイルは今回変更したmei_normal.htsvoiceの他に、mei_angry.htsvoicemei_bashful.htsvoicemei_happy.htsvoicemei_sad.htsvoice などが あります。
-mの箇所を適宜変更して 聴き比べてみると良いでしょう。
気圧温度湿度センサー BME280の取得情報を 報告 させてみる
以前このブログで紹介した気圧温度湿度センサー BOSCH BME280で記録している情報をOpen JTalkで報告させてみました。



やり方は、センサーから読み取った 数字を喋らせたい定型文に埋め込み、それをjsayを使って喋らせています。
この要領で色々な活用方法が出来るでしょう。
音声合成ソフト Open JTalk Ver.1.07の 音量調整の難点
今回インストールしたOpen JTalk Ver.1.07 は古いバージョンで、最新はVer.1.09です。
単に喋らせるならば Ver.1.07でも問題なく使用できます。
それに対し、最新版のVer1.09には音量が調整できる-gオプションが追加になっています。
このオプションがあると他のアプリとの音量バランスの調整が可能になるため、 例えばBGM を再生中に強調した発声をさせてお知らせするような事が可能になります。
ただ、Ver.1.09は今回の インストールで使ったaptにはパッケージ登録されていないため 、自前で必要なファイルを用意してコンパイルしインストールする必要があります。

次回は、この手順について 書きたいと思います。