既定の言語が日本語でない場合に JTalk が日本語を読み上げない
上記の現象についてさらに確認したので書き直し:
setup:
issue 1:
issue 2:
いずれのケースも、日本語文字列が言語 en で JTalk のコアにわたっているために、日本語が読めていない。
日本語スナップショット jpbeta141027
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta141027.exe
JTalk は「日本語ではない言語情報のついた文字列」が届いたとき (「既定の言語」が日本語でない場合や「言語の自動切り替え」でアプリから言語を通知された場合) にも、読み上げる文字列に「日本語の文字コードの文字」が含まれている場合には JTalk を使うようにしました。
Windows 10 Technical Preview で 2014.4jp-beta-141121 を試して以下を確認した:
Unicode 互換文字(全角アルファベット)を espeak が受け取ってしまっているようだ。
本件に関連する実装のメモ:
https://bitbucket.org/nvdajp/nvdajpmiscdep/commits/05c64734ba2a9e2f0de3bfdc4fc99773bbab1253
JTalk と espeak の振り分けを文字コードで行う処理の修正:
https://bitbucket.org/nvdajp/nvdajpmiscdep/commits/2180065aa9ac37941ded6ee0e63fffbd1e588709
nvdajp の jp2014.4 ブランチに反映させたので、クローズします。
(公開ベータ版の差し替えはしません)
既定の言語が日本語でなく Automatic language switching disabled のときに JTalk が eSpeak の音声だけになってしまい、 日本語が Japanese characters, Chinese characters などの読み上げになってしまいます。
海外のユーザーからの報告がありました。
以下、私が確認した環境:
英語環境で Automatic Language Switching を無効にしたときに音声エンジンのデフォルト言語が en になってしまうため、ではないかと思われます。