【今日のゴール】
Open JTalkを使って、RaspberryPiにしゃべらせてみる
Open JTalkはバージョン1.05以前と1.06以降でhts_voiceのファイルフォーマットが異なります。
今回は、2015年3月時点で一番最新バージョンの「Open JTalk1.08」で喋らせてみます。
ちなみに、2015年3月現在、apt-getでインストールすると、バージョン1.05がインストールされますので、今回は、ソースからコンパイルしてインストールします。
【手順】
- 事前準備(pacoのインストール)
- インストール
- 辞書ファイルの入手
- MMDAgent音声ファイルの入手
- しゃべらせる
- 音周りの設定
事前準備
今回は、aptではなく、ソースからmake installでインストールをします。
make installでインストールしたアプリケーションを管理する「paco」というソフトウェアをまずインストールしておきます。
$ sudo apt-get install paco
インストール
1、hts_engine API(version 1.09)のインストール
/tmp にダウンロードして解凍
$ cd /tmp $ sudo wget http://sourceforge.net/projects/hts-engine/files/hts_engine%20API/hts_engine_API-1.09/hts_engine_API-1.09.tar.gz $ sudo tar zxvf hts_engine_API-1.09.tar.gz
ビルド、コンパイル、インストール(数分かかります)
$ cd /tmp/hts_engine_API-1.09 $ sudo ./configure $ sudo make $ sudo paco -lD "make install"
2、Open JTalk(version 1.08)のインストール
/tmp にダウンロードして解凍
$ cd /tmp $ sudo wget http://sourceforge.net/projects/open-jtalk/files/Open%20JTalk/open_jtalk-1.08/open_jtalk-1.08.tar.gz $ sudo tar zxvf open_jtalk-1.08.tar.gz
ビルド、コンパイル、インストール(数分かかります)
$ cd /tmp/open_jtalk-1.08 $ sudo ./configure --with-charset=UTF-8 $ sudo make $ sudo paco -lD "make install"3、確認
下記のコマンドを実行し「hts_engine_API-1.09」と「open_jtalk-1.08」が表示されればOKです。
$ paco -a hts_engine_API-1.09 open_jtalk-1.08
辞書ファイルの入手
辞書ファイル(version 1.08) をダウンロードして、/usr/local/share/の下に置きます。
/tmp にダウンロード・解凍して配置
$ cd /tmp $ sudo wget http://sourceforge.net/projects/open-jtalk/files/Dictionary/open_jtalk_dic-1.08/open_jtalk_dic_utf_8-1.08.tar.gz $ sudo tar zxvf open_jtalk_dic_utf_8-1.08.tar.gz $ sudo mkdir /usr/local/share/open_jtalk $ sudo mv /tmp/open_jtalk_dic_utf_8-1.08 /usr/local/share/open_jtalk/
MMDAgent音声ファイルの入手
MMDAgent(version 1.4 ) をダウンロードして、/usr/local/share/の下に置きます。
/tmp にダウンロード・解凍して配置
$ cd /tmp $ sudo wget http://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.4/MMDAgent_Example-1.4.zip $ sudo unzip MMDAgent_Example-1.4.zip $ sudo mkdir /usr/local/share/hts_voice $ sudo mv /tmp/MMDAgent_Example-1.4/Voice/mei /usr/local/share/hts_voice/
しゃべらせる
1、シェルの作成
/usr/local/bin の下にopen_jtalkを使って喋らせるためのシェルを作成します。
$ sudo vi /usr/local/bin/jsayまず、「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.08/ 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
上記と同内容のものをサーバーに上げましたので、以下の通りwgetで取得することも可能です。
$ cd /usr/local/bin/ $ sudo wget https://raspi.up.seesaa.net/bin/jsay
「jsay」ファイルを保存したら、実行権限を付けます。
$ sudo chmod +x /usr/local/bin/jsay
2、しゃべらせる
以下のようにjsayの引数に、喋らせたい文字列を渡すことでしゃべらせることができます。
$ jsay こんにちは
音周りの設定
出力先の変更
ヘッドフォン端子から音を出す場合
$ amixer cset numid=3 1HDMIから音を出す場合
$ amixer cset numid=3 2自動判別
$ amixer cset numid=3 0
ボリュームの調整
パーセントで指定します
$ amixer set PCM 20%
タグ:Raspberry Pi