このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu11.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18
まず、前置きから
mbtts というのを作っています。マルチプラットフォームで使えるMBROLAを使った Python用の音声合成モジュールです。漢字を含む日本語文字列を与えると、それを音読してくれます。
ダウンロード→ mbtts-0.97.9.zip
MD5:503cb6f73b3c14588eec338431609fc6
去年のことになりますが、これをGNOME Orcaに組み込むことで、Ubuntuのスクリーンリーダーを日本語化させることに成功しました。まだまだ不安定なところはありますが。
今は、主として mbtts はGNOME Orca用の下請けモジュールとして開発を進めています(いや進めていますと言うと語弊があります。半年ぶりの Ubuntu の最新版リリースをきっかけに作業を再開したところです。)。mbtts を使って、画面上に表示されている日本語文字列を発声できるようになったので、さらに mbtts に Aquestalk2 と Open JTalk を組み込むことで、Orca で Aquestalk2 や Open JTalkの音声が使えるようになりました。ただし、本来 MBROLA 向けのモジュールなので、追加の音声合成に関してはまだ細かな設定ができていないのが現状です。MBROLAに関する設定もまだ半分もできていません。
今後は、mbtts を発展させてこれ自体をもっと高機能にしていく道もありますが、Orcaの下請け処理を簡潔にするためにそれぞれの音声合成専用のモジュールを作って対応していこうと画策しています。
そういうわけで、単独で Open JTalk を動かそうと思っていたのですが、Open JTalk のバージョン1.03がリリースされたので、これに mbtts が対応してから、その作業を進めることにしました。軽い気持ちでこのバージョンアップを考えていたのですが、ちょっと手こずってしまいました。
では、本題
Open JTalk 1.03 をコンパイルし、同時にリリースされた1.03の辞書と音声を使って、しゃべらせてみると、しゃべりがゆっくりになってしまいます。ゆっくりと言っても、ゆっくりボイスのゆっくりではなくもちろんスローの意味でです。
解決策が分かるのに1日かかりました。「Open JTalk で音声合成して日本語テキスト読み上げ」のページで、MMDAgent の mei_normal 用の Perl スクリプトを見て気づきました。いままでは open_jtalk に周波数以外の数値パラメータを与えていませんでした。以前の Open JTalk の標準音声m001は省略してもしゃべってくれていました。でもバージョン1.03ではうまくいきません。いろいろやってみると、-aオプションを 0.1 以下にすると症状が改善します。とりあえず上記のページを参考にしてmbttsの初期設定は 0.075 にしておきました。他の数値も変えるべきなのかもしれませんが、標準値のままにしてあります。
このように数値を設定できるようにしたので、mbtts の音声として、Windows 用のスクリーンリーダーNVDA のように mei_normal などの他の Open JTalk 音声を利用できるようになりました。
そのためには、 ~/.mbtts/open_jtalk/voices フォルダに音声ファイルの集まりをフォルダごと入れる必要があります。この音声ファイルは MMDAgent からダウンロードできる MMDAgent_Example-1.0.zip 内にあります。パラメータは音声ごとに個別に登録できないので、その都度手書きで、~/.mbtts/config.txt 内の値を修正する必要があります。これは今後の課題です。