2015年03月13日

Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応)


【今日のゴール】
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 http://raspi.up.seesaa.net/bin/jsay

「jsay」ファイルを保存したら、実行権限を付けます。
$  sudo chmod +x /usr/local/bin/jsay 

2、しゃべらせる

以下のようにjsayの引数に、喋らせたい文字列を渡すことでしゃべらせることができます。
$ jsay こんにちは



音周りの設定

出力先の変更

ヘッドフォン端子から音を出す場合
$ amixer cset numid=3 1
HDMIから音を出す場合
$ amixer cset numid=3 2
自動判別
$ amixer cset numid=3 0


ボリュームの調整

パーセントで指定します
$ amixer set PCM 20%



タグ:Raspberry Pi


posted by Raspberry Pi at 08:00 | Raspberry Pi | このブログの読者になる | 更新情報をチェックする