このプログラムは実験的なものです。自己責任でお使いください。
動作が確認できたのは Ubuntu10.04 です。
それ以後では動作しません。インストールしないでください。
2011.10.18
先日、mbtts を修正して AquesTalk2 を使えるようにしたのですが、せっかくなので Open JTalk も使えるようにしました。これで GNOME Orca で Open JTalkの落ち着いた音声でガイドしてくれるようになります。まだ音量調整など Orcaの設定画面からできないので、ぜんぜん実用的ではないですが、いい感じにしゃべってくれます。今回いろいろやって長文が不得意だということも気が付きましたが、メニューなどの項目を読み上げてくれる分には一番ききやすいように思います。今のところ、Open JTalk の標準の音量が小さく Open JTalk のときだけ、ちょっとパソコンのボリュームを上げないといけませんが。
それから、MBROLAだけのときには気づかなかったのですが、音声の再生速度が今までおかしかったです。pygame.mixer は初期化するときに周波数もちゃんと指定しないといけなかったんですね。
まだまだ問題はありますが、とりあえず目標としていたフリーの3種類の日本語音声が使えるようになりました。あとはこつこつ細かな修正を加えていく作業が続きます。早いうちに音声出力を PyGame から自前のものに切り替えたいとも思います。
それでは、Open JTalkを使えるようにする方法を以下に書いておきます。ここでは GNOME Orca の対象となる Linux 向けだけでなく、OS Xや、Windows向けの設定方法もまとめて書いておきます。Linux の GNOME Orca で日本語をしゃべらせるには、この Open JTalk と mbtts のインストールの他に、GNOME Orca の修正ビルド、およびインストールが必要です。これは、以前の記事「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」を見てください。
さて、何はともあれ Open JTalk の実行ファイルが必要なので、これを用意します。やはりソースからビルドします。(Windows版はビルド環境作りが面倒なのでビルド済みを用意しています。)
Open JTalkのビルド、実行には hts-engine のライブラリが必要なので前もってこれもビルドします。
それぞれのソースを下記の場所からダウンロードします。
hts-engine:
http://sourceforge.net/projects/hts-engine/
現時点の最新ファイルは、hts_engine_API-1.03.tar.gz です。
open_jtalk:
http://sourceforge.net/projects/open-jtalk/
現時点の最新ファイルは、open_jtalk-1.01.tar.gz です。
Visual C++でコンパイルするときフィルターを通すことで、エラーが出ないように文字コードをエスケープし回避しました。そういうわけで、どのプラットフォームでも UTF-8をOpenJtalkの標準文字セットにしました。これで、nishimotz さんのページ に置いてある Ubuntu 用のパッケージをインストールした場合でもうまく発音してくれるはずです。
ビルド環境さえ整っていれば、Ubuntu、OSXともに次のコマンドでインストールできます。ファイルが更新され名前が変わった場合は適宜書き換えてください。
このときダウンロードしてきた二つのファイルが同じフォルダにおいてあるとします。
tar xvfz hts_engine_API-1.03.tar.gz
cd hts_engine_API-1.03
./configure
make
sudo make install
cd ..
tar xvfz open_jtalk-1.01.tar.gz
cd open_jtalk-1.01
./configure --with-charset=UTF-8
make
sudo make install
(修正2010/10/13)
Windows版は、ビルド環境を作るのも大変でしょうから、文字セットUTF-8で、音声出力を無効化し、VC++2008でビルドした open_jtalker.exe を、mbtts.zip内に同梱しています。
これは以前書いた次の手順でビルドしています。
takayanの雑記帳: Open JTalkをVS2008で
ただし、Windows 版では音声出力をしてしまうので、上記の nishimotz さんの記事を参考に、open_jtalk.c を修正して音声出力を殺しています。
具体的には、現在のソースで144行目に下記のように1行を挿入します。
HTS_Engine_create_pstream(&open_jtalk->engine);なお Windows版では、hts-engine のライブラリは静的に取り込んでいるので open_jtalk.exe 単体で実行できます。
open_jtalk->engine.global.audio_buff_size = 0; // nishimotz
HTS_Engine_create_gstream(&open_jtalk->engine);
(2010.08.30 以上の文字セット関連の記述の更新。該当する文字セットでビルドして実行ファイルさえ用意できれば、三つのどの文字セットでも処理できるはずです。)
これで、実行ファイルができました。Ubuntu と OSX では make install でちゃんとPATHの通ったところに配置されているはずです。Windows版も同じように配置する必要があります。PATHの通ったところならばどこでもいいのですが、分かり易いように、ユーザーのホームフォルダの「.mbtts」フォルダの中に「open_jtalk」フォルダを作ってそこに置くと認識するようにしています。
次は辞書と話者データです。Open JTalk には 辞書と話者データが必要です。次の場所からダウンロードしてきます。なおOpen Jtalkの文字セットに合わせて辞書はUTF-8版を使います。
http://sourceforge.net/projects/open-jtalk/files/
それぞれの現時点での最新のアーカイブ名:
辞書、open_jtalk_dic_utf_8-1.00.tar.gz
話者、hts_voice_nitech_jp_atr503_m001-1.01.tar.gz
辞書の名前が更新されたときは、.mbtts 内の config.txt の変数 openjtalk_dic_ver の値を新しいバージョンに修正し対応します。音声ファイルの方は名前が変わった場合でも修正する必要はありません。
辞書も、話者データも、設定フォルダの open_jtalk フォルダの中にアーカイブのままコピーするだけです。あとは実行時に自動的に展開されます。
(2010.8.30 更新。データのコピーについての仕様変更)
これで、Open JTalk を使う準備は整いました。
AquesTalk2 のための準備は、「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」にも書きましたが、設定フォルダ「.mbtts」の中に各プラットフォーム向けの DLL を取り出し配置すればこの ライブラリの機能が利用できます。Aquestalk2の製品ページを開いて、該当するプラットフォームのアーカイブをダウンロードした後、DLLを抽出します。 Windows は AquesTalk2.dll、Linuxは libAquesTalk2.so.1.0、OSX は AquesTalk2 という名前のファイルです。追加の声種ファイルは、設定フォルダの 中に phont フォルダを作り、その中に入れるだけです。ここに入れるだけで、内部の処理で使用可能音声を問い合わせたときにリストアップされます。
あとは、mbtts の最新版をインストールします。これは展開したフォルダの中の mbtts.txt の手順通りにやります。
そして、以前の記事「takayanの雑記帳: GNOME Orca で MBROLA と mecab を使って日本語をしゃべらせる方法」を見て、Orca を修正インストールしてください。
GNOME Orcaがあれば音声を切り替えて、音声がどう聞こえるのかためしに聞けるのですが、Windows や Mac OS X でも確認しやすいように、mbtts の demo 用のスクリプトを修正しました。speechbox.py は以前から用意していたテキストボックスの内容をの読み上げるスクリプトですが、音声選択メニューを追加しました。それぞれの音声を試すのに使ってみてください。ただし実行には wxPython が必要です。
まだ問題もありますが、やろうと思えば、orcaで日本語が使えることが示せただけでも十分役割は果たせたと思います。もう少し頑張って、orca本体に組み込んでもらってもいいくらいには、仕上げたいです。
日本語入力関連がどうしても難問の一つとして残っていました。実際にNVDAのプロジェクトのIME関連技術はとても参考になるのではないかと思っていました。
うまくいけば、いろいろできると思います。