since 2011-02-09
NVDA はオープンソースの Windows 対応スクリーンリーダーである。ライセンスは GPL Ver.2 である。
本家 NVDA-dev などで議論された情報をメモする。
nvdajp および nvdajp_jtalk / nvdajp_ime / nvdajp_braille などをどうぞ。
開発環境の構築 nvdajp_scons / nvdajp_devinstaller / nvdajp_bazaar
Microsoft Speech Platform マイクロソフトが提供している無償の音声エンジン
各国語のサイト
NVDA の起動ショートカットは CTRL-ALT-N です。
PC-Talker の音声停止と重なっているという話。ただし PC-Talker 側は Ctrl+Alt+F2 で代用できるそうです。
JTalk を開発する前に試したメモ。
Python コンソールから音声合成エンジンを叩くことができる。
ドキュメントトーカのSAPI5エンジンが入っていて、選択されているとすると:
s = speech.synthDrivers.sapi5.SynthDriver() s.performSpeak(u"こんにちは")
2011.1 から実装。
JAWS における SkypeWatch の実装がよくなかったので、同じようなことをもっと上手に、という話。
[NVDA-dev] [NVDA] #1323: Plugin development tutorial というチケットが出ているが、チュートリアルはないらしい。
globalPluginHandler を継承する。
nvda-dev 2011-01-10 の発言より:
#helloWorld.py #A simple NVDA Global Plugin example #Written by Hrvoje Katic <hrvojekatic******gmail.com> import globalPluginHandler import ui class GlobalPlugin(globalPluginHandler.GlobalPlugin): """ This is our plugin class, that must be present in order for plugin to work. It must be named exactly as shown above, otherwise the plugin will not be recognized by NVDA. """ def script_helloWorldScript(self,gesture): ui.message(_("Hello, world! To access main NVDA window, press Insert+n.")) script_helloWorldScript.__doc__=_("It's a very friendly script! It'll say Hello to you and will tell you some simple steps to get started!") #This description in a docstring form will be spoken while input help is enabled def terminate(self): """ Speaks the message at the moment when plugin is terminating on NVDA exit. """ return ui.message(_("The NVDA is terminating, so I am dieing...")) #: Now defining a dictionary with key bindings for this plugin __gestures = { "kb:NVDA+h": "helloWorldScript", #will execute our script on pressing control+shift+h keystroke }
アプリケーションごとにプラグインを実現したい場合に使う。
appModuleHandler.AppModule を継承する。このクラスの docstring 参照。
設定を管理したり保存したりするためのオブジェクト。
nvda-dev の 2011-2-21 のメールによると、ConfigObj のセクションはディクショナリ型のように扱える:
confSect = config.conf.get("blah") if not confSect: confSect = config.conf["blah"] = {} confSect["test"] = "value"
アプリケーションから NVDA を喋らせるクライアントのAPI。
音声エンジンに渡す文字列を前処理して読み付与をカスタマイズできる。
「まほろば」にて MSSpeech HARUKA を想定した 読み上げ辞書の追加 の説明。
since 2011-04-27
記号の読みを言語ごとに細かく制御する機能。2011.2 に向けて作業されている。
http://www.nvda-project.org/ticket/332
http://www.nvda-project.org/changeset/main%2C4167
http://twitter.com/#!/debugon/status/62704435767414784
http://twitter.com/#!/debugon/status/62718984428060672
ブランチ http://bzr.nvaccess.org/nvda/symbols/ から main,4167 へ。
since 2011-05-01
Say all without unnatural pauses
http://www.nvda-project.org/ticket/149
http://bzr.nvaccess.org/nvda/speechCommands
Rev 4186 で Merge main している。
since 2011-06-13
例えば brailleDisplayDrivers/brltty.py は brltty/brlapi のラッパー。
ドライバのベースクラスは braille.py にある BrailleDisplayDriver クラス。
遠回りかも知れないが。。
brltty http://mielke.cc/brltty/
brlapi http://brl.thefreecat.org/
http://mielke.cc/brltty/doc/Manual-BrlAPI/English/BrlAPI.html
since 2011-07-14
言語ごとにエンジンを切り替える仮想音声ドライバの話。
中国語と英語の組み合わせで検討が進んでいる。
since 2011-07-14
本家 nvda-dev MLで 2011-05-19..21 に議論。
翻訳の手順 http://www.nvda-project.org/wiki/TranslatingNVDA
に出てくるツール msgmerge.py は
http://trac.umitproject.org/export/4348/trunk/utils/i18n/msgmerge.py で手に入る、という話。
since 2011-08-08
フリーズを減らしたいという話。アプリケーションとの通信のタイムアウトに関する制御。
2011.3 で導入。
http://www.nvda-project.org/log/lessFreezing2?rev=current%3A
since 2011-09-07
本家のチケット 1755 で提案・議論されている。
すでにある機能を使ってドラッグ操作を行うには:
since 2011-09-13
Windows 7 x86 Home Basic で 2011.2 ベースの nvda_snapshot_jpdev110831_installer を使用。
C:\Users\(username)\AppData\Roaming\nvda
ここに nvda.ini が保存される。
「現在設定されている情報をログオンまたはその他のセキュアスクリーンで使用する」の保存先:
"c:\Program Files (x86)\NVDA\systemConfig"
ログファイル名は nvda.log である。メモ帳で開くことができるテキストファイル。
インストール版を使ってクラッシュした場合のログのある場所:
コマンドプロンプトで cd %temp% すると下記に移動できる。
C:\Users\(username)\AppData\Local\Temp
ここに nvda.log がある。
Windows XP の場合:
"C:\Documents and Settings\ログイン名\Local Settings\Temp"
since 2011-11-10
http://twitter.com/#!/jcsteh/status/133801412038635520
tesseract / leptonica というエンジンが使われている。英語のみ。
C:\Users\(ユーザ名)\AppData\Roaming\nvda\globalPlugins に ocr フォルダをコピーして NVDA-R で実行。
「パフォーミングオーシーアール・・・ダン」という声は聞こえる。
since 2011-12-20
間違っているかも知れないけど。。
NVDA のアーキテクチャーはイベントドリブンです。そのイベントは基本的に MSAA や UIA の「イベント」なので、そのイベントのコンテクストが何かと必要になります。
つまり、イベントが属するオブジェクトのクラス階層を、アーキテクチャーの根幹にすることで、いろいろなデザインパターンが活用できます。
その基底クラスになるのが NVDAObject クラスという可能性。
日本語IMEの処理はいまキーイベントをフックしていますが、このオブジェクト階層に基づく処理をしたほうが、スジがよいだろう。