詳細読み辞書の再検討とカスタマイズ機能
Locale\ja の中のテーブルですが、
(1) 日本語の詳細読みに必要なフィールドを追加した「拡張書式」を定義する
(2) ロケールごとに拡張書式と従来書式を使い分けられるようにする
(3) 拡張書式テーブルを「ユーザー設定ディレクトリ」でカスタマイズ対応
(4) 詳細読みカスタマイズのためのGUIを検討する
といった方針を考えています。
標準でどの詳細読みを採用するか、という問題は、実装方法とは切り離して、いろいろな方のご意見を伺いたいと思います。
2011年1月8日の開発者Skype会議で以下のことが話し合われました。
現在の nvdajp_dic.py の実装について:
文字ごとのディクショナリの値が配列になっていて、その先頭要素が 0, 1, 2, 3 の値を取ります。
3 が「記号・単漢字」を表していて、詳細読みで文字列を音声エンジンに送るときに、現状は3であるかどうかの判定が行われています。
例えば小文字であるかどうかを表すために「小文字の」をつける処理は、現在は詳細読みの文字列に埋め込むことで実現しています。
しかし、音声エンジンがピッチの変更を許す場合は「小文字のア」ではなく(ピッチを高くして)「ア」のように呈示する、という手法も考えられます。
データ構造を再検討することでこのような処理が拡張しやすくなる可能性があります。
あわせて、音声設定の「大文字の前に大文字と読む」「大文字の前にビープ音をつける」についても確認する必要がありそうです。
このチケットに関する作業ブランチを作りました:
lp:~nishimotz/nvdajp/chardesc
以下の変更を行いました。
lp:~nishimotz/nvdajp/chardesc 4222
ユーザーの設定フォルダに characterDescription-ja.dic ファイルがあれば、 システムの characterDescription.dic テーブルよりも優先して使用されます。
ユーザーの設定フォルダが不明な場合はログの先頭を見てください。
例えば scons dist で作った dist\nvda.exe の場合は、
dist\userConfig\characterDescriptions-ja.dic
が読み込まれます。
現在は IME の詳細読みにはこの情報は反映されていません。
デスクトップ配列「テンキー2の2回押し」などでこの情報が反映されます。
この処理はロケールに依存せず動作するはずです。
betterInput ブランチを更新しました:
lp:~nishimotz/nvdajp/betterInput 4288
nvdajp_dic に関するリファクタリングを行い、get_long_desc() メソッド(これまでの実装でdic1の要素2を使っていた部分)が本家の詳細読み情報を使うように変更しました。
あわせて、先ほどの chardesc 4222 をチェリーピック (merge -c) でマージしました。
これにより、IME の候補読み上げにユーザー設定ファイルの characterDescriptions-ja.dic が反映されるようになりました。
なお chardesc ブランチには日本語に依存する処理を追加しないことにしました。
jpdev1202216 にてデスクトップ配列「テンキー2の2回押し」で読み上げるときに、 例えば全角アルファベット A a をいずれも「全角小文字アルファ」と読み上げる現象を確認しました。
2月29日コメントの不具合は jpdev120311 でも起きています。 音声エンジンが JTalk, ProTALKER の両方で確認されています。
元の報告は nvda-japanese-users 618 です。
2011.3j でもこの現象が起きているようです。
統合システム研究所の藤沼様からご提供いただいた詳細読み辞書を西本が変換して、このチケットの添付ファイルとしてアップロードしました。
2011.3j には詳細読みカスタマイズ機能がありませんので、2012.1jのベータ版でご確認ください。
添付ファイルを展開して中身の dic ファイルを、「ユーザー設定ディレクトリ」においていただくと、NVDA 日本語版の起動時に読み込まれます。
Windows 7 の場合は C:\Users\(ユーザー名)\AppData\Roaming\nvda です。
2012.1j ではこのファイルを NVDA 本体と分けて公開したいと思います。
詳細読み辞書に関して開発者MLでの発言を要約します:
藤沼氏の辞書について:
2001年に感覚代行シンポジウムで発表された漢字詳細読み作成基準(レベルの高い項目が優先):
カスタマイズ機能は 2012.1j に導入されました。
詳細読み辞書の更新は引き続き検討します。
本件については、誤りの修正 28244 「詳細読み辞書のロシア文字などに誤りがある」は本家の翻訳にもコミットを済ませており、2012.2jp にも反映されます。
2012.1j ではオプションであった CharDesc を、(すべてとは限りませんが)さらに 2012.2jp で取り入れることを検討します。
28254「記号読み辞書の改良提案」(括弧、読点などを読み上げレベル「ほとんど」に登録し、もともと「ほとんど」に登録されている記号を「すべて」に登録)も検討します。
平仮名のフォネティック読みは「ひらがな あさひのあ」ではなく単に「あさひのあ」と短縮したほうがよい、というご提案もあります。
NVDA開発者Skype会議で以下の方針を決めました。
なお、音声と点字で別々の内容を出力できるようにしてはどうか、という提案もありましたが、技術的な検討が必要なので、今後の課題とします。
チケット 26926 と 28254 に関する更新をコミットしました。
チェンジセット jp2012.2 rev 5224
日本語の詳細読み辞書は source/nvdajp_dic.py に埋め込まれたテーブルになっており、また nvdajp 2011.2j 以降は本家の国際化の一部として source/locale/ja/characterDescriptions.dic が導入されています。
これらの情報が重複している現状は、日本語入力サポートの実装見直しの際に検討する必要があります。
また、最近「日本の主要なスクリーンリーダーで提供されている詳細読み辞書のカスタマイズ機能を nvdajp にも導入して欲しい」というご意見を伺うようになりました。 可能であれば本家にフィードバック可能な方法で「詳細読み辞書のカスタマイズ機能」を検討したいと思います。
コンポーネントはIMEにしておきますが、本項目は本家の実装とも関連しています。