NVDA

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 マイクロソフトが提供している無償の音声エンジン

中国語対応

その他のローカライズ

インストーラー

  • 自動インストール: /S オプション
  • ポータブル版とインストーラ版はどちらを使うべき?
    • インストーラ版の利点「Windowsのログオン画面等を読み上げさせることができます」「環境を揃える=実行さえ出来れば、同じ導入結果になります」
    • ポータブル版の利点「アーカイブを解凍してUSBメモリに入れておけば簡単に利用できます」「レジストリ変更などの影響をシステムに与えません」

対応アプリケーション

  • Flash
    • Flash は MSI からのインストールを推奨
  • アクセシブルな Flash 更新サイト [nvda-japanese-users:438]
  • Notepad++ : 本家開発者が使っているテキストエディタ。ただし Settings を操作するために object navigation が必要という話。(nvda-support 2011-08-29)
    • Ctrl-Tab で編集ウィンドウ(ファイル)の切り替え

本家リリースの記録

NVDAの使い方

起動ショートカット

NVDA の起動ショートカットは CTRL-ALT-N です。

PC-Talker の音声停止と重なっているという話。ただし PC-Talker 側は Ctrl+Alt+F2 で代用できるそうです。

Windows をキーボードで操作する

Windows 7

Firefox

python コンソール

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 参照。

config オブジェクト

設定を管理したり保存したりするためのオブジェクト。

nvda-dev の 2011-2-21 のメールによると、ConfigObj のセクションはディクショナリ型のように扱える:

confSect = config.conf.get("blah")
if not confSect:
       confSect = config.conf["blah"] = {}
confSect["test"] = "value"

NVDA コントローラクライアント

アプリケーションから NVDA を喋らせるクライアントのAPI。

http://www.nvda-project.org/nvdaControllerClient/

辞書登録 speechDicts

音声エンジンに渡す文字列を前処理して読み付与をカスタマイズできる。

「まほろば」にて MSSpeech HARUKA を想定した 読み上げ辞書の追加 の説明。

1文字詳細読み上げ

symbol pronunciation

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 へ。

speech commands

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 ドライバを理解する

Virtual synth driver

since 2011-07-14

言語ごとにエンジンを切り替える仮想音声ドライバの話。

中国語と英語の組み合わせで検討が進んでいる。

http://www.nvda-project.org/ticket/279

msgmerge

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 で手に入る、という話。

lessFreezing2

since 2011-08-08

フリーズを減らしたいという話。アプリケーションとの通信のタイムアウトに関する制御。

2011.3 で導入。

http://www.nvda-project.org/log/lessFreezing2?rev=current%3A

http://www.nvda-project.org/ticket/1408#comment:3

マウスドラッグ

since 2011-09-07

本家のチケット 1755 で提案・議論されている。

すでにある機能を使ってドラッグ操作を行うには:

  • マウスを開始位置に移動。これは「マウスポインタを現在のナビゲーターオブジェクトに移動」で可能。
    • デスクトップ配列:NVDA制御キー+テンキー スラッシュ(/)
    • ラップトップ配列:NVDA制御キー+Shift+F9
  • マウスボタンをロックする。マウスデバイスを操作する、または、マウスボタンのロック操作で可能。
    • マウス左ボタンのロック:
      • デスクトップ配列:Shift+テンキー スラッシュ(/)
      • ラップトップ配列:NVDA制御キー+Shift+左矢印
    • マウス右ボタンのロック:
      • デスクトップ配列:Shift+テンキー アスタリスク(*)
      • ラップトップ配列:NVDA制御キー+Shift+右矢印
  • マウスを目標位置に移動。最初の操作と同じ。
  • マウスボタンをロック解除する。マウス左(右)ボタンのロックと同じ操作を繰り返せばロック解除。

設定ファイルとログ

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" 

OCRプラグイン

since 2011-11-10

http://twitter.com/#!/jcsteh/status/133801412038635520

tesseract / leptonica というエンジンが使われている。英語のみ。

C:\Users\(ユーザ名)\AppData\Roaming\nvda\globalPlugins に ocr フォルダをコピーして NVDA-R で実行。

「パフォーミングオーシーアール・・・ダン」という声は聞こえる。

http://code.google.com/p/tesseract-ocr/

アーキテクチャー

since 2011-12-20

間違っているかも知れないけど。。

NVDA のアーキテクチャーはイベントドリブンです。そのイベントは基本的に MSAA や UIA の「イベント」なので、そのイベントのコンテクストが何かと必要になります。

つまり、イベントが属するオブジェクトのクラス階層を、アーキテクチャーの根幹にすることで、いろいろなデザインパターンが活用できます。

その基底クラスになるのが NVDAObject クラスという可能性。

日本語IMEの処理はいまキーイベントをフックしていますが、このオブジェクト階層に基づく処理をしたほうが、スジがよいだろう。

nvda.txt · 最終更新: 2012/02/08 21:11 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0