音声合成は2年ほど前に実験を行っていました。 Open JTalkとAquesTalkPiを比較し、聞きやすさの点でAquesTalkPiの方が良かったと記録しています。 久しぶりに確認すると、Open JTalkのバージョンは1.09となっていました。(以前の実験時は1.05) USBオーディオアダプタでサウンド機能の向上したRaspberryPiで、改めて実験してみました。
Raspberry Piにしゃべらせてみた を、参考にさせていただき、最新のOpen JTalk version1.09をインストールします。
・パッケージ管理 paco のインストール # apt-get install paco ・hts_engine API version 1.10 のインストール # wget http://sourceforge.net/projects/hts-engine/files/hts_engine%20API/hts_engine_API-1.10/hts_engine_API-1.10.tar.gz # tar zxvf hts_engine_API-1.10.tar.gz # cd hts_engine_API-1.10 hts_engine_API-1.10# ./configure hts_engine_API-1.10# make hts_engine_API-1.10# paco -lD "make install" hts_engine_API-1.10# cd .. # ・Open JTalk version 1.09 のインストール # wget http://sourceforge.net/projects/open-jtalk/files/Open%20JTalk/open_jtalk-1.09/open_jtalk-1.09.tar.gz # tar zxvf open_jtalk-1.09.tar.gz # cd open_jtalk-1.09 open_jtalk-1.09# ./configure --with-charset=UTF-8 open_jtalk-1.09# make open_jtalk-1.09# paco -lD "make install" open_jtalk-1.09# cd .. # ・パッケージ一覧の確認 # paco -a # hts_engine_API-1.10 open_jtalk-1.09 ・辞書ファイルの配置 # wget http://sourceforge.net/projects/open-jtalk/files/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 # mkdir /usr/local/share/open_jtalk # mv open_jtalk_dic_utf_8-1.09 /usr/local/share/open_jtalk/ ・MMDAgent音声ファイルの配置 # wget http://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip # unzip MMDAgent_Example-1.6.zip # mkdir /usr/local/share/hts_voice # mv MMDAgent_Example-1.6/Voice/mei /usr/local/share/hts_voice/ ・シェルスクリプトの作成(エディタで点線内のスクリプトファイルを作成) nano /usr/local/bin/jsay --------------------------------------------------------- #!/bin/sh # 引数チェック CMDNAME=`basename $0` if [ $# -lt 1 ]; then echo "Usage: ${CMDNAME} [ text ]" 1>&2 exit 1 fi # 定数定義(出力ファイル名、辞書の場所、音声データの場所) TMPFILE=`mktemp /tmp/tmp.XXXXXXXX.wav` DIC=/usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.09/ VOICE=/usr/local/share/hts_voice/mei/mei_normal.htsvoice # 音声データ生成 echo "$1" | open_jtalk \ -x ${DIC} \ -m ${VOICE} \ -ow ${TMPFILE} && \ # 生成した音声データを再生する aplay --quiet ${TMPFILE} # 生成した音声データを削除する rm -f ${TMPFILE} # 終了 exit 0 --------------------------------------------------------- ・実行権限の付与 # chmod +x /usr/local/bin/jsay ・発声テスト # jsay おはようございます。
以前のバージョンに比べ、発声がはっきりし、アクセントが改善されているように感じました。 「日本語の上手い外国人」といった印象で、テキストを確認しなければ聞き取れないということは、ほぼありません。 これは使えます。
簡単な、天気概況読み上げスクリプトを作成しました。
<?php //weather.php 2016.3.27 //都市コード:http://weather.livedoor.com/forecast/rss/primary_area.xml $city = "130010"; $url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=$city"; $json = file_get_contents($url, true); $json = json_decode($json, true); $description = $json["description"]["text"]; //天気概況 $description = preg_replace('/】/','、',$description); //閉じ括弧を半濁点に変換 $description = preg_replace('/(【|\[|\]|\(|\)|〈|〉|「|」|[\.\?\-!&;:=~\r\n\s]+)/','',$description); //括弧と記号などを除去 echo $description."\n"; exec( "jsay 天気概況、".$description ); ?>
php weather.php
で、最新の天気概況を読み上げます。 長い文章になると、変換時間もかかりますので、このあたりの改善が必要ですね。
参考にさせて頂いたサイト
Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応)
http://raspi.seesaa.net/article/415482141.html
pacoでソースビルドをパッケージっぽく管理する
http://qiita.com/pasela/items/9c6cd7b9e477ed0501c8