日本語の文字種をビープ音やピッチで通知する
概要「文字種をビープ音で通知する」から「日本語の文字種をビープ音やピッチで通知する」に変更します。
JTalk で「大文字のピッチ変更率」は使えるようになったので、このチケットではビープ音とピッチの両方の利用について扱います。
というご意見をいただきました。どのような音(ピッチ)の割り当てをすべきか検討します。
チケット 28953 に関連して行なっている詳細読み・記号読み辞書の改訂で、
といった提案がありました。
以下のコミットで「ひらがな」と「カタカナ」の区別を音声ではなくピッチの変化で行なえるようにしました。
lp:nvdajp 4305
NVDA メニュー「設定」の「日本語設定」ダイアログに以下の項目が追加されました:
また、カナ文字のフォネティック読みは、いままで変換候補の説明においてのみ制御ができましたが、今回の変更で、すべての文字レビューにおいて、設定で有効と無効の切り替えができるようにしました。設定項目の名前は
に変更されました。
カタカナ以外の文字の全角と半角の区別、および、ビープ音の利用について、ひきつづき検討します。
なお JTalk 以外の音声エンジンではこの機能の検証は不十分です。
jpdev120826 で1文字レビューの半角記号を「半角カッコ」のように読み上げています。
「半角」というキーワードが冗長なので symbols.dic からは取り除いたのですが、今回の修正の影響で、1文字レビューの記号読み上げが characterDescriptions.dic を参照するようになっているようです。
以下のコミットで「カタカナの声の高さの変化」のデフォルト値を 30 から -30 に変更しました。
lp:nvdajp rev 4307
半角記号の読み上げの挙動をスナップショット単位で確認してみました。
以下、記号読み上げレベル「すべて」の場合、詳細モードでの「半角カッコ」の読み上げ動作:
jpdev120812
jpdev120821 および jpdev120826
ということから 120821 と 120826 のあいだでデグレードが起きたわけではないようです。
下記のコミットでカタカナ以外の「半角」を省略したりピッチで表現したりできるようにしました。
lp:nvdap 4314
なお、音声設定の「大文字のピッチ変更率」「大文字の前に大文字と読む」は半角と全角の両方のアルファベットに対して有効です。
「日本語設定」の「半角を通知する」は、半角アルファベット大文字、半角アルファベット小文字、半角記号について制御します。
半角スペースを「半角」と通知する処理は、副作用があったので実装しませんでした。
characterDescriptions.dic には半角と全角のそれぞれアルファベット大文字のエントリがありますが、NVDA ではこの辞書を引く前に lower() が実行されるので、大文字のエントリは不要です。
今回のコミットで大文字のエントリを削除しました。
このチケットの作業で詳細読み辞書を修正した影響で、変換候補の通知において、アルファベットと数字の全角と半角の区別がつかないという問題が起きていました。
下記のコミットで、変換候補の通知において、全角アルファベットと全角数字を「全角」と読むように修正しました。
lp:nvdajp 4316,4318
本当は変換候補の通知でもピッチを使えるようにすればいいのでしょうが、いままで実装してきた本チケットの処理は、キャレットとレビューの処理に限定されています。
以下のコミットで、全角アルファベットと一部の全角記号(いままで詳細読み辞書に「全角」と明記されていたもの、特に半角と全角の両方が存在する記号)について、「日本語設定」「全角の通知」「全角の声の高さの変化(-100から100)」で設定できるようにしました。
lp:nvdajp 4341
デフォルト音声を mei に変更した影響で +30 や -30 では高さの変化が大きすぎるようです。
このチケットに関する作業は完了しました。 2012.3jp の「日本語版の説明」にて最終的な仕様を説明しています。
チケット 26372 に似ていますが、「半角と全角」「ひらがなやカタカナ」「大文字と小文字」などの区別を、フォネティック読みとビープ音を併用すればうまく伝えられるのではないか、という意見をいただきました。
実装上は speech.py の _speakSpellingGen() で uppercase を判定しているので、似たような方法で実現できるかもしれません。
ちなみに「大文字でビープ音」は isupper() で判定しており、すでに全角のアルファベット大文字でも動作しています。
どのような仕様にすべきかは整理する必要がありそうです。