Ticket #36180

2016.2jp 開発版における eSpeak と JTalk の動作

Open Date: 2016-03-20 16:24 Last Update: 2016-06-02 17:13

Reporter:
Owner:
Type:
Status:
Closed
Component:
MileStone:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

2016.2jp 開発版を Windows XP で使うと JTalk が動かないという指摘をいただいています。

まず XP ではなく Windows Server 2003 で確認してみたところ、以下のエラーが出ています:

INFO - __main__ (16:19:26):
Starting NVDA
INFO - core.main (16:19:27):
Config dir: C:\Documents and Settings\nishimotz\Application Data\nvda
INFO - core.main (16:19:27):
NVDA version 2016.2jp-beta-160318
INFO - core.main (16:19:27):
Using Windows version 5.2.3790 service pack 2 server
INFO - core.main (16:19:27):
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:19:27):
Using comtypes version 0.6.2
ERROR - synthDriverHandler.setSynth (16:19:27):
setSynth
Traceback (most recent call last):
  File "synthDriverHandler.pyo", line 88, in setSynth
  File "synthDrivers\nvdajp_jtalk.pyo", line 45, in __init__
  File "synthDrivers\jtalk\jtalkDriver.pyo", line 250, in initialize
  File "synthDrivers\_espeak.pyo", line 266, in setVoiceByLanguage
  File "synthDrivers\_espeak.pyo", line 170, in _execWhenDone
  File "synthDrivers\_espeak.pyo", line 263, in _setVoiceByLanguage
  File "synthDrivers\_espeak.pyo", line 270, in espeak_errcheck
RuntimeError: espeak_SetVoiceByProperties: code 2

Ticket History (3/10 Histories)

2016-03-20 16:24 Updated by: nishimoto
  • New Ticket "2016.2jp 開発版における JTalk の動作" created
2016-03-20 17:02 Updated by: nishimoto
Comment

本家 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-03-20 17:54 Updated by: nishimoto
  • Summary Updated
Comment

念のために 2016.1jp までの作業環境 (Windows 7) で日本語版をビルドしてみたところ、 Windows Server 2003 で同じように eSpeak のエラーが出ました。

どうやら作業環境の移行の影響ではなく、 本家の eSpeak NG への移行の影響のような気がしますが、 なぜ本家版のビルドではちゃんと動くのか、もうすこし調査したいと思います。

2016-03-20 19:19 Updated by: nishimoto
Comment

#36010 AppVeyorによるビルド

2回目のビルドは JTalk のライブラリ組み込みに失敗しているが、 このバイナリは Windows Server 2003 で eSpeak がちゃんと動作している。 ということは AppVeyor にビルド環境を移行することが解決策になりそう。

2016-03-20 20:11 Updated by: mshinke
Comment

こちらでも同じ状況でしたのでmiscDepsJp¥include¥python-jtalk¥patch.exeを削除して下記の内容のpatch.cmdファイルに置き換えて対応しました。

patch.cmdの中身

"c:¥Program Files¥Git¥usr¥bin¥patch.exe" %*

2016-03-20 21:18 Updated by: nishimoto
Comment

ありがとうございます。 ビルド環境の MinGW を使うように修正中です。 AppVeyor Build Worker installed software http://www.appveyor.com/docs/installed-software

2016-03-20 22:19 Updated by: nishimoto
Comment

AppVeyor でちゃんとビルドできました。

https://ci.appveyor.com/project/TakuyaNishimoto/nvdajp/build/artifacts

2016.2jp-noncert-160320 を Windows Server 2003 で実行したところ、 eSpeak も JTalk も正常でした。

AppVeyor で署名付きビルドをするために、 コードサイニング証明書を暗号化したいと思います。 もうすこし作業が必要です。

2016-03-22 12:29 Updated by: nishimoto
Comment

本家版 NVDA を AppVeyor でビルドするためにコードサイニング証明書を暗号化しているが、 その手順に関する AppVeyor の説明。

http://www.appveyor.com/docs/how-to/secure-files

なぜ暗号化されたファイルと、その暗号化を解くための秘密文字列を両方公開して大丈夫なのか、 理屈がわかりにくいが、こういうことになっている:

  • PFX ファイル(A)(秘密にしたいファイル)
  • ユーザーが設定した秘密文字列(B)
  • PFX ファイル(A) を秘密文字列(B) で暗号化したファイル(C)
  • 秘密文字列(B) を AppVeyor が暗号化した文字列(D) (ユーザーには見えないがここで AppVeyor が秘密文字列 (E) を使用)

公開される情報

  • (C) 暗号化された PFX ファイル
  • (D) 暗号化された秘密文字列

公開されない情報

  • (A), (B) : ユーザーが秘密にしたい情報
  • (E) : AppVeyor が秘密にしている情報

(E) がないので (C), (D) から (A), (B) を得ることができない。

2016-03-22 15:09 Updated by: nishimoto
  • Resolution Update from None to Fixed
Comment

AppVeyor でビルドされた下記の開発版 160322 を Windows Server 2003 で実行して、 JTalk の動作を確認しました。

https://ci.appveyor.com/project/TakuyaNishimoto/nvdajp/build/artifacts

念のために Windows XP 環境でテストをして、 今後は AppVeyor ビルドを self update の対象として配信するようにしたいと思います。

原因をきちんと究明できたわけではありませんが、 継続的インテグレーションを導入すること自体にメリットがあるので、 これで解決とします。

2016-06-02 17:13 Updated by: nishimoto
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2016-06-02 17:13

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login