Raspberry Pi で音声合成

Raspberry Pi でOpenJTalkをコンパイル・実行しました。
普通に動きすぎて何のネタにもなってないんですが(x86-Linuxの話として読んでもそのまま通じます)、一応動作確認報告としてメモしておきます。

準備

まず最初に書いておくと、HDMI出力だとうちでは音が鳴りません。
どうもモノラル音声だからみたいなんですが、そういう仕様なのでしょうか?
というわけでRaspberry Piのオーディオ出力にスピーカーをつなぎ、HDMIを接続せずに起動しておいてください。

OpenJTalkのサイトから、以下のファイルをダウンロードします。(内容は2013.7.13現在のものです)

  • hts_engine_API-1.07.tar.gz
  • open_jtalk-1.06.tar.gz
  • open_jtalk_dic_utf_8-1.06.tar.gz
  • hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

前回まではhts_engine_API-1.06, open_jtalk-1.05を使った話だったのですが、バージョンが上がってAPIやボイスファイルの構成が変わっていて、meiちゃんの音声は今のところこのバージョンのエンジンでは使えるものが見つけられていません...
と書きながら探していたら発見しました。
http://joruri.org/download/joruricms/joruri-2.0.1.tar.gz の中にありました。
以下の説明では hts_voice_nitech_jp_atr503_m001-1.05.tar.gz の nitech_jp_atr503_m001.htsvoice を使用しますが、
htsvoiceファイルを入れ替えればmeiちゃんの声も使えます。

ファイル展開&ビルド

以下、ダウンロードしたディレクトリを~/download, ビルド用のディレクトリを ~/build とします。環境に応じて適宜読み替えてください。
各パッケージのインストールはせず、~build以下だけで進めます。

hts_engine_API-1.07
% cd ~/build
% tar xvf ~/download/hts_engine_API-1.07.tar.gz
% cd hts_engine_API-1.07
% ./confugre
% make
open_jtalk-1.06
% cd ~/build
% tar xvf ~/download/open_jtalk-1.06.tar.gz
% cd open_jtalk-1.06
% ./configure \
  --with-charset=utf-8 \
  --with-hts-engine-header-path=$HOME/build/hts_engine_API-1.07/include \
  --with-hts-engine-library-path=$HOME/build/hts_engine_API-1.07/lib
% make
open_jtalk_dic_utf_8-1.06 (展開するだけ)
% cd ~/build
% tar xvf ~/download/open_jtalk_dic_utf_8-1.06.tar.gz
hts_voice_nitech_jp_atr503_m001-1.05 (展開するだけ)
% cd ~/build
% tar xvf ~/download/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

実行

ビルドが成功していれば、open_jtalk-1.06のbinの下に open_jtalk というコマンドができているはずです。
open_jtalk-1.05では音声データファイルがさまざまな要素に分割されていてコマンドに非常にたくさんのオプションを指定する必要がありましたが、
今回それらがまとめられて1つのファイルになったおかげでコマンドが簡潔になりました。
以下のコマンドでしゃべってくれるはずです。

echo '私はラズベリーパイです' | \
  ./open_jtalk \
    -x $HOME/build/open_jtalk_dic_utf_8-1.06 \
    -m $HOME/build/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice \
    -ow a.wav && \
aplay a.wav

入力はutf-8なので、端末のLANGなどに注意してください。違うエンコーディングにしている場合はiconvなどで変換をかまします。
バイスの音量はalsamixerで調節できます。

一旦wavファイルに落としてaplayで再生していますが、以前書いたようにALSAから直接鳴らすように改造した方が便利ですよね。
こちらも動作確認したらまた報告します。

まとめ

Raspberry Pi固有の話はほとんど出てきませんでしたが(^^; 何事もなく普通にコンパイルが通って日本語音声合成が動くようになりました。