2016.2jp 開発版における eSpeak と JTalk の動作
本家 master を新しい作業環境の Windows 10 でビルドして、 Windows Server 2003 で実行すると、 eSpeak が起動しない。 エラーの内容は前述の状況とほぼ同じ。
本家のスナップショットをバイナリでダウンロードすれば、 ちゃんと Windows Server 2003 で eSpeak が動作する。
どうやら eSpeak のビルドに依存する問題と思われる。
INFO - __main__ (16:57:56): Starting NVDA INFO - core.main (16:57:56): Config dir: C:\Documents and Settings\nishimotz\Application Data\nvda INFO - core.main (16:57:56): NVDA version source-master-856a06a INFO - core.main (16:57:56): Using Windows version 5.2.3790 service pack 2 server INFO - core.main (16:57:56): Using Python version 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] INFO - core.main (16:57:56): Using comtypes version 0.6.2 INFO - synthDrivers.espeak.SynthDriver.__init__ (16:57:57): Using eSpeak version 1.48.03 04.Mar.14 ERROR - synthDriverHandler.setSynth (16:57:57): setSynth Traceback (most recent call last): File "synthDriverHandler.pyc", line 86, in setSynth File "synthDrivers\espeak.pyc", line 42, in __init__ File "synthDrivers\_espeak.pyc", line 266, in setVoiceByLanguage File "synthDrivers\_espeak.pyc", line 170, in _execWhenDone File "synthDrivers\_espeak.pyc", line 263, in _setVoiceByLanguage File "synthDrivers\_espeak.pyc", line 270, in espeak_errcheck RuntimeError: espeak_SetVoiceByProperties: code 2
念のために 2016.1jp までの作業環境 (Windows 7) で日本語版をビルドしてみたところ、 Windows Server 2003 で同じように eSpeak のエラーが出ました。
どうやら作業環境の移行の影響ではなく、 本家の eSpeak NG への移行の影響のような気がしますが、 なぜ本家版のビルドではちゃんと動くのか、もうすこし調査したいと思います。
#36010 AppVeyorによるビルド
2回目のビルドは JTalk のライブラリ組み込みに失敗しているが、 このバイナリは Windows Server 2003 で eSpeak がちゃんと動作している。 ということは AppVeyor にビルド環境を移行することが解決策になりそう。
こちらでも同じ状況でしたのでmiscDepsJp¥include¥python-jtalk¥patch.exeを削除して下記の内容のpatch.cmdファイルに置き換えて対応しました。
patch.cmdの中身
"c:¥Program Files¥Git¥usr¥bin¥patch.exe" %*
ありがとうございます。 ビルド環境の MinGW を使うように修正中です。 AppVeyor Build Worker installed software http://www.appveyor.com/docs/installed-software
AppVeyor でちゃんとビルドできました。
https://ci.appveyor.com/project/TakuyaNishimoto/nvdajp/build/artifacts
2016.2jp-noncert-160320 を Windows Server 2003 で実行したところ、 eSpeak も JTalk も正常でした。
AppVeyor で署名付きビルドをするために、 コードサイニング証明書を暗号化したいと思います。 もうすこし作業が必要です。
本家版 NVDA を AppVeyor でビルドするためにコードサイニング証明書を暗号化しているが、 その手順に関する AppVeyor の説明。
http://www.appveyor.com/docs/how-to/secure-files
なぜ暗号化されたファイルと、その暗号化を解くための秘密文字列を両方公開して大丈夫なのか、 理屈がわかりにくいが、こういうことになっている:
公開される情報
公開されない情報
(E) がないので (C), (D) から (A), (B) を得ることができない。
AppVeyor でビルドされた下記の開発版 160322 を Windows Server 2003 で実行して、 JTalk の動作を確認しました。
https://ci.appveyor.com/project/TakuyaNishimoto/nvdajp/build/artifacts
念のために Windows XP 環境でテストをして、 今後は AppVeyor ビルドを self update の対象として配信するようにしたいと思います。
原因をきちんと究明できたわけではありませんが、 継続的インテグレーションを導入すること自体にメリットがあるので、 これで解決とします。
2016.2jp 開発版を Windows XP で使うと JTalk が動かないという指摘をいただいています。
まず XP ではなく Windows Server 2003 で確認してみたところ、以下のエラーが出ています: