RaspberryPi 3にOpenJTalkのソースをコンパイルしてインストールしました。
アイデア次第でなんでも喋ってくれます。
スポンサーリンク
目次
インストール方法(ソースから)
aptでインストールするのが楽ですが、最新版をインストールするためにソースからコンパイルすることにします。
- OpenJTalk
- HTS Engine
- HTS Voice(音響モデル)
- Mecab
HTS Engineのインストール
HTS EngineはOpenJTalkをインストールするために必要になります。
まずは、ソースを入手する。ダウンロードする場所はホームディレクトリでも構いません。
$ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.10.tar.gz
gzip形式のtarアーカイブです。tarコマンドにzオプションを使って展開します。
続いてconfigureとmakeを実施。
$ ./configure
……..
$ make
……..
成功したら、インストールします。
$ sudo make install
OpenJTalkのインストール
ソースを入手する。基本的にはHTS Engineと変わりません。
$ wget -O openjtalk.tar.gz https://sourceforge.net/projects/open-jtalk/files/latest/download?source=files
続いてconfigureとmakeを行います。
OpenJTalkのconfigureはHTS Engineが入っていないと失敗します。
RaspberryPi 3だと、コンパイルに数分かかります。
$ ./configure
……..
$ make
……..
成功したら、インストールします。
$ sudo make install
HTS Voiceのインストール
音響モデルを入手します。
今回は、東北大学 大学院工学研究科の音響モデルを使用します。特徴としては、落ち着いて喋ってくれる系です。(わかりにくい)
$ git clone https://github.com/icn-lab/htsvoice-tohoku-f01.git
git cloneが完了したら、音響モデルを保存するディレクトリを作成します。
gitで取得した音響モデルをコピーしておきます。
$ sudo mkdir /usr/local/share/hts-voice
$ sudo cp *.htsvoice /usr/local/share/hts-voice
Mecabのインストール
Mecab本体のインストール。Mecabはaptで取得します。(手抜きです…)
$ sudo aptitude update
$ sudo aptitude install open-jtalk-mecab-naist-jdic
読み上げるためのコマンドを用意する
OpenJTalkで喋る準備ができました。
open_jtalkコマンド単独で使用することも可能ですが、指定するオプションが多いので便利コマンドを作成しておきます。
パスの通る場所にjsayコマンドを作ります。
$ sudo nano /usr/local/bin/jsay
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash # 引数チェック CMDNAME=`basename $0` if [ $# -lt 1 ]; then echo "Usage: ${CMDNAME} [ text ]" 1>&2 exit 1 fi # 定数定義(出力ファイル名、辞書の場所、音声データの場所) TMPFILE=`mktemp /tmp/tmp.XXXXXXXX.wav` DIC=/var/lib/mecab/dic/open-jtalk/naist-jdic/ VOICE=/usr/local/share/hts-voice/tohoku-f01-neutral.htsvoice # 音声データ生成 echo "$1" | /usr/local/bin/open_jtalk \ -x ${DIC} \ -r 1.0 \ -jf 1.4 \ -m ${VOICE} \ -ow ${TMPFILE} && \ # 生成した音声データを再生する aplay --quiet ${TMPFILE} # 生成した音声データを削除する rm -f ${TMPFILE} # 終了 exit 0 |
open_jtalkオプションを変えると、スピードや抑揚をつけることができます。
- -x:辞書ファイルを指定します。
- -r:1.0が標準。値を大きくすると早口になります。小さくすると遅くなります。
- -jf:値を大きくすると、抑揚をつけて喋るようになります。
- -m:音響モデルを指定します。
- -ow:音声ファイル出力場所を指定します。
最後に実行権限を付与する。
$ sudo chmod +x jsay
テスト
引数に日本語を与えると喋ります。
$ jsay こんにちは。私の名前はラズパイです。
まとめ
お疲れ様でした!
引数に指定する日本語次第で、なんでも自由に日本語を喋ってくれるようになります。
ただし、あまり長すぎる日本語は得意でないようで、そのままインストールすると512文字までしか読み上げはできないようです。
また、長い文章だと考える時間も長くなるため、ある程度の長さで区切ってやるのがいいと思います。
[…] ラズパイにOpenJTalkを入れて喋ってもらうまでの手順を公開しました! […]
[…] (ラズパイにOpenJTalkを入れて喋ってもらうまでの手順) […]
[…] パースした結果を喋らせるのには、OpenJTalkを利用します。 (OpenJTalkでの実装については、こちらの記事を参照して下さい) […]
[…] の女性音声にします。 OpenJTalk導入手順については、過去の記事を参考にして下さい。 DeathMarch.net ラズパイにOpenJTalkを入れて喋ってもらうまでの手順https://deathmarch.net/archives/229Raspb […]