2016/5/20
2017/12/21更新
どうも、クラゲです。
今回は音声合成を使ってラズパイに日本語をしゃべらせる方法を紹介します。
任意のテキストを即時実行して喋らせることが可能です。それでは動画で聞いてみよう。
この動画では自然に聞こえるように、言葉を選んでテキストにしています。
例えばニュースや天気などをそのまましゃべらせると、ちょっとぎこちなかったりもしますが、それも愛嬌です。
では作り方です。
音声合成のエンジン、辞書、音声データを一気にインストールします
コマンド一発でサクッとできます
sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
追加パッケージがいるか聞かれるので y で答えます
現状ver1.07が入りました。
テキストエディッタnanoを使って、jtalk.shというスクリプト名にして作成します
sudo nano jtalk.sh
中身は以下の内容を書きます
#!/bin/bashtempfile=`tempfile`option="-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"echo "$1" | open_jtalk $optionaplay -q $tempfilerm $tempfile
opne_jtalkコマンドで、tempfileにwavファイルを作り、aplayコマンドでtempfileを再生し、最後にtempfileを削除しています
optionのmは使う音声データ、xは使う辞書、owは保存するファイル名を表しています。
スクリプトファイルができたら、実行可能になるように権限を変更します
sudo chmod 755 jtalk.sh
早速実行!といきたいところですが、先にオーディオの設定をしましょう
まず、オーディオ出力端子にスピーカーを接続してください。
スピーカーのない人はHDMIケーブルでディスプレーと繋げてください
次に、オーディオの出力先を変更します。
最後のパラメーターですが、オーディオ出力端子の人は1、HDMIの人は2にしてください。
amixer cset numid=3 1
最後の数値が1:Audio 2:HDMI
最後に音量設定です
上下キーで音量のアップダウンができます。
また、数値キーを押すと、その10倍の値に直接指定できます
alsamixer
以下のコマンドで簡単に喋らせることができます。
文字列をいろいろ変えてみてください。
./jtalk.sh "こんにちは。ラズベリーパイが喋っていますよ"
先ほどの音量設定にもよりますが、結構ボリュームが小さいので注意しましょう。
このままだとおっさんの低い声なので、メイちゃんの声に変えましょう
http://www.mmdagent.jp/
ページの一番下にSourceforgeのリンクがあり、そこからダウンロード可能ですが、ラズパイ上のコマンドを使ってダウンロードします
wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip --no-check-certificate
解凍します
unzip MMDAgent_Example-1.7.zip
解凍してできたVoiceフォルダの中身を /usr/share/hts-voiceの下にコピーします
sudo cp -R ./MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/
これでメイちゃんの音声データが配置されました
テキストエディッタnanoを使って、jtalk.shを編集します
sudo nano jtalk.sh
編集箇所は1箇所だけ
3行目をメイちゃんの音声データに変更しています
#!/bin/bashtempfile=`tempfile`option="-m /usr/share/hts-voice/mei/mei_normal.htsvoice \-x /var/lib/mecab/dic/open-jtalk/naist-jdic \-ow $tempfile"echo "$1" | open_jtalk $optionaplay -q $tempfilerm $tempfile
先ほどと同じです。色々文字列を変えてみよう!
./jtalk.sh "こんにちは。ラズベリーパイが喋っていますよ"
メイちゃんの音声データは、mei_normalの他にmei_angryやmei_happyなどもありますので、色々試してみると面白いと思います。
スクリプト上で色々パラメーターをいじることができますが、Open JTalkの場合はいじらないでデフォルトのままが一番良いです
参考リンク http://moblog.absgexp.net/openjtalk/
以下の最新バージョンをmakeして導入してみましたが、音声合成の質にほとんど変化は聞き取れませんでした。
HTS engine APIの最新1.10、open talkの最新版 1.09、Dictionary for Open Jtalkの最新版1.09
他にもゆっくりボイスで有名なAquesTalkもあるので、そちらもやってみると面白いと思います
http://www.a-quest.com/products/aquestalkpi.html
いかがでしたでしょうか?
以上、「RaspberryPiを音声合成でしゃべらせよう」でした