Mecabの初期化エラー
リリースの支障になる問題ではないため、いったんマイルストーン解除します。
日本語テスト版 jpbeta140502 で下記のエラーが出る問題のご指摘をいただきました。
INFO - synthDrivers.jtalk.mecab.Mecab_initialize (15:40:14): mecab_new failed.
作業環境から MeCab をアンインストールすると再現されたので、本件の現象と判断しました。
日本語テスト版 jpbeta140503
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140503.exe
概要を「ソースから実行すると WindowsError が出る」から「Mecabの初期化エラー」に変更。
以下、技術的なメモ:
初期化でダミーの mecabrc を渡さなくても成功しているように見えるが、MeCab がインストールされていない環境だと初期化に失敗する。
ダミーの mecabrc を渡して初期化するように実装を戻した。
jpbeta140503 で直ったようなのでクローズします。
別のことを調べていたら見つけたのでメモ:
MeCab 0.90 における mecabrc ファイルの優先順位
Windows 7 sp1 x64 で新しく開発環境を作って jp2014.1 ブランチをビルドしたところ、ソースから実行するときに下記のエラーが出ます:
ERROR - synthDrivers.jtalk._bgthread.BgThread.run (22:40:49): Error running function from queue Traceback (most recent call last): File "synthDrivers\jtalk\_bgthread.py", line 32, in run func(*args, **kwargs) File "synthDrivers\jtalk\jtalkDriver.py", line 178, in _speak _jtalk_speak(msg, index, prop) File "synthDrivers\jtalk\jtalkDriver.py", line 121, in _jtalk_speak Mecab_analysis(s, mf, logwrite_=logwrite) File "synthDrivers\jtalk\mecab.py", line 149, in Mecab_analysis head = libmc.mecab_sparse_tonode(mecab, src) WindowsError: exception: access violation reading 0x00000000なぜか MeCab for Windows 0.996 をインストールしておくとこのエラーが出ません。
http://code.google.com/p/mecab/downloads/detail?name=mecab-0.996.exe
インストールされるファイルそのものは参照していないので、レジストリの参照かも知れません。 ソースから実行する場合のみ起きると考えられ、リリース版ではこの問題は報告されていません。
ソースから実行する手順のドキュメントも、ひきつづき整備したいと思います。
関連チケット #31635 日本語チームの git ブランチ運用