日本語対応の要求仕様

点字表示と音声の両方または音声だけ、点字だけでスクリーンリーダーを使用するための仕様の検討です。

この内容は NVDA Workshop in Japan で紹介する予定です。

グローバルな機能と日本語の対応

キーボードの仕様

  • 英語配列キーボード、ローマ字入力
  • 日本語配列キーボード、ローマ字入力
  • 日本語配列キーボード、カナ入力
  • 6点入力:常駐ソフト、点字ディスプレイの6点キー、BMFEP

IME のキーカスタマイズの影響を考慮する必要がある。あるいは、考慮していないことを明示する必要がある。

日本語キーボードの CapsLock キーは NVDA キーとして利用できない。

「半角全角」キーは、単独で IME のトグルとして使われる場合と、ALT-半角全角 として使われる場合がある。

無変換キーはスペースキーのとなりにあり、日頃利用されないことが多いため、NVDA 日本語版では NVDA キーとして利用可能にしている。

スペル読み

  • 英語でも "a" に「ア」「エー」「アルファ」の3つの読みかたがある。
  • 任意の文字が単独で読まれた場合の読みを統一しないと、文字を適切に区別することができない。
  • NVDAでは音声エンジンのマークアップとして実装されている。しかし、日本語音声エンジンでは、たとえスペル読みのマークアップがサポートされていても、各文字の読みかたは実装依存である。
  • スペル読みに相当する機能を、音声エンジンの機能に依存せずに実装することが望ましい。

文字レビュー

  • 文字レビュー(デスクトップ配列でテンキー2、ラップトップ配列でNVDA+カンマ)を1回押すことで「1文字読み(スペル読み)」を、2回押すことで詳細読みを、3回押すことで文字コードを読み上げる。
  • レビューカーソルを左右に1文字移動するときには、その文字を「1文字読み」する。
  • 文字をして詳細読みする操作は、この仕様では煩雑。

単語の区切り

  • NVDA には単語単位のレビューカーソルの移動機能がある。
  • 日本語アプリケーションにおける単語の区切りは、アプリケーション依存である。Windows Uniscribe API では基本的に全角1文字が1つの単語となる。

文字説明辞書の複数要素

  • NVDA には character description に複数の説明を列挙できる。単語単位のレビューでは先頭の説明要素だけが、文字単位のレビューではすべての説明要素が使われる。中国語ではこの機能に対応した辞書が使われている。

音声エンジン

  • eSpeak は日本語に非対応。
  • Windows 7 まではプリインストールの音声エンジンが存在しなかった。Windows 8 から Haruka Desktop (SAPI5) が利用できる。
  • スペル読み機能に非対応のエンジンが広く用いられている。スペル読みに相当する処理の挙動が統一されていない。
  • 読み上げ辞書:音声エンジンの読み付与を補正できる。

点訳エンジン

  • liblouis は日本語に非対応。
  • 日本語をベースに、情報処理点字、外字引用符、外字符を併用。
  • 漢点字(6点、8点)

点字設定「段落ごとに読み上げ」

  • 行ごとではなく段落ごとに表示。ディスプレイの右端までできるだけ文字を詰め込もうとするので、大量のテキストを早く読みたいときに役立つ。

点字設定「可能な場合単語が切れないようにする」

  • 英語などでディスプレイの右端をまたいで単語が表示されることを防ぐ「ワードラップ」の処理を有効にする
  • 単語が空白で区切られていることを前提としており、ソースをみたところ点訳されたデータで空白を探している。日本語でも分かち書きされていれば動く?

メニューのショートカットキー

  • 英語圏のアプリケーションではメニュー項目の先頭文字がデフォルトのショートカットキー(ニーモニック)になる。
  • 日本語環境では「既定のプログラム」というメニュー項目のショートカットが「既(JTalk では「すんで」と読まれる)」になるが、この文字を1ストロークで入力できないので、ショートカットキーとしては無意味。
  • 日本語環境のためのアプリケーションは 「ファイル(F)」のようにショートカット文字を後置して表記することが一般的だが、NVDA はこのような項目を「ファイル、エフ、エフ」のように重複して読み上げる。

GUI用語の点字出力

  • GUI用語の略語( mnu, chk, rbtn など)は点字ディスプレイのセルを節約するために有用
  • 日本語では外字符が必要なので、省略にならない場合もある
  • 日本のSRには英語の略称を使うものと、カナで出力するものがある。
  • NVDA日本語チームは 2012.3jp に向けてカナ表記への変更を行っている。
  • ユーザーが英語表記とカナ表記を切り替えられるようにしてほしいという要望もある。

日本固有のアプリケーション

  • 日本国内向けに開発されたスクリーンリーダー対応アプリケーションの存在
  • 日本語のためのアクセシビリティAPIを備えたスクリーンリーダーの存在
  • クリップボード更新APIの流用

文字説明の分類

文字の説明の目的

文字を説明する目的ごとの要求と例:

  • 任意の1文字の最短の説明。
    • 音訓モード(音訓読み)、スペル読み
    • 音声エンジンに依存せず文字を適切に読み上げる必要。
    • 「ぁ」「っ」など音声や点字で単独で表現できない、表現しにくい場合がある。
  • 文字(文字列)の意味を理解するための説明。
    • 朗読、なめらか読み。
    • 非記号文字については、文字列として音声エンジンで読み付与される。
    • 記号文字については「記号読み上げレベル」に応じて「記号読み辞書」で読み付与される。
    • 記号の説明はコンパクトであること。
    • 属性(全角、カタカナ):ピッチやビープでの属性表現という要求も。
  • 文字の区別ができるための説明。
    • discriminant reading 詳細読み。(1文字読み)最も冗長な説明。
    • 英数字や記号:全角、半角の区別
    • 文字コードが異なる文字が同じ説明センテンスを共有すべきでない。
    • ひらがな、カタカナ:日本の多くのスクリーンリーダーにはカナ文字のフォネティック読みが実装されていない。「シに濁点」のような説明もしない。「こもじのつ」「おわりのお」という言いかたは使われる。
  • 英語読み
    • about ON: アバウト OFF: エービーオーユーティー

文字説明のユースケース

  • かな漢字変換 プリエディット文字列のキーエコー
  • かな漢字変換の候補の選択
    • フォネティック読みが有効であれば「ひらがな あさひの あ」のように
    • フォネティック読みが無効であっても「ひらがな あ」のような説明が必要。「あ」だけでは「にほんご」と「ニホンゴ」の区別ができない。
  • 文字単位のレビュー
  • 単語単位のレビュー
  • 行単位のレビュー

ローマ字入力のキーエコー

ローマ字入力におけるプリエディット文字列のキーエコーは、 IME の画面表示の変化(デルタ文字列)を読み上げる。

k a w a 「ケー、カ、ダブリュー、ワ」のように、追加または置換された文字を読み上げる。

t t u と入力したときにどうなればいいか?

以下、左から、押したキー、画面表示、音声。

  t t     ティー
  t tt    ティー
  u っつ  つ

または

  t t     ティー
  t っt   ティー
  u っつ  つ

画面表示の状態変化は Microsoft IME と ATOK で異なる。音声は NVDA 2012.2.1jp の場合。検討の余地がある。

文字説明とモダリティの関係

  • 音声による聞き取りやすさを考慮した説明。
    • ひらがな、カタカナ、英文字のフォネティック読み。
    • 合成音声の聞き取りにくさを補う。発音が似ている文字を区別しやすくする。
  • 点字ディスプレイのための文字の説明
    • カタカナとひらがなの区別=「ひらがな あ」のような説明が必要
    • フォネティック読みの省略が必要?
    • セル数の少ないディスプレイを有効に使うために短い説明が求められる?

文字クラスの定義

確定文字列の確認、入力時の候補選択など、状況によって、文字の読み方を変えるために、文字のクラスを定義する。

  • 漢字:音読みまたは訓読みの短い読み、用例等に基づく詳細読み
  • ひらがな:「ひらがな」+表記、フォネティック読み
  • ひらがな小文字:「ひらがな小文字」+表記、フォネティック読み
    • 「ヒラガナ コモジノ アサヒノ ア」「コモジノ アサヒノ ア」「コモジノ ア」
  • ひらがな濁点:「ひらがな しんぶんの しに だくてん」「しんぶんの しに だくてん」「しに だくてん」「じ」
  • ひらがな半濁点:「ひらがな はがきの はに はんだくてん」「はがきの はに はんだくてん」「はに はんだくてん」「ぱ」
  • カタカナ:「カタカナ」+表記、フォネティック読み
  • カタカナ小文字:「カタカナ小文字」+表記、フォネティック読み
    • 「カタカナ コモジノ アサヒノ ア」「カタカナ コモジノ ア」
  • カタカナ濁点:「カタカナ しんぶんの しに だくてん」「しんぶんの しに だくてん」「しに だくてん」「じ」
  • カタカナ半濁点:「カタカナ はがきの はに はんだくてん」「はがきの はに はんだくてん」「はに はんだくてん」「ぱ」
  • 半角カタカナ
  • 半角カタカナ小文字
  • 記号:読み、1文字詳細読み、説明読み
    • 記号読みレベルに対応した分類
    • 用途による分類:間隔記号、記述記号、括弧記号、学術記号、単位記号、一般記号(合成文字、合成数字を含む)
    • 半角カタカナの濁点記号および半濁点記号

ひらがな、かたかなを説明する最短の文字列は「その文字そのもの」であるが、「ぁ」については「こもじの あ」がよい。 また音声エンジンによっては「ん」を適切に読むために「うん」を送る必要がある。

2文字以上のひらがな、かたかなが連続する場合に「ひらがな か わ」のように省略したい。

点字ディスプレイ出力における文字クラス

  • アルファベットの全角と半角は、点字ディスプレイ出力においては区別せず、外字符・外字引用符を使う。
  • 全角スペースは2マス、半角スペースは1マスあける。

文字説明の実装方法

漢字の詳細読み

漢字は、必要に応じて「コロン区切り」で以下を詳細読み辞書に含める。コロンは点字ディスプレイでは 5-2 を使い、前後にマスあけをしない。

  • 文字の音読み
  • 文字の訓読み
  • 意味の説明

非漢字文字の説明

かな文字やアルファベット、記号は、以下のような要素から構成される。

  • 全角、半角
  • 文字の分類:ひらがな、カタカナ、ギリシャ、ロシア、ローマ数字。「記号」は末尾につける。
  • 大文字、小文字
  • 小さい:かな文字
  • 記号の分類:数学、マルの中に
  • 濁点、半濁点

文字や記号を「読む」「読まない」の区別だけでなく、読みかたの詳細レベルも制御する。

点字ディスプレイ出力では「大文字」は「オーモジ」ではなく「オオモジ」とする。

文字説明に数字が含まれるときには数符を使う。

ローマ数字は「ワン」「ツー」「スリー」のように読み上げるほうが、文脈にふさわしい場合がある。

非言語情報、パラ言語情報

日本のスクリーンリーダーの実装では「大きい文字(全角)は音声のピッチを低く、小さい文字(半角)は音声のピッチを高く」が一般的。

編集操作

音声読み上げ

  • カーソルを左右に動かした際は、そのフォーカスされている文字(記号も含む)の読みを詳細説明読みで読み上げる。
  • カーソルを上下に動かした場合は、そのカーソルがある位置から行末までを滑らか読みで読み上げる。(この際は詳細読みは不要)
  • 左右に動かした際の詳細説明読みは片仮名や平仮名のフォネティック読みはさせない。
  • 左右に動かした際は声のピッチの高さ等の変化を用いて平仮名か片仮名かを判別できるようにする。(アルファベットの大文字か小文字かも同様)
  • IMEでの変換時は、漢字や記号は詳細説明読み、数字や仮名文字はフォネティックを使わずにそのまま読ませる。

点字

  • カーソルを左右に動かした際は点訳文書でその文字のある部分を表示する。(カーソルのある文字の下に'7,8'の点でカーソルを表示する)
  • カーソルを上下に移動した際は、その文字がある部分から行末まででディスプレイに表示できる範囲を表示する。(カーソルのある文字の下に'7,8'の点を表示する)
  • 点字表示の際に英文字列(半角)がある場合はその文字列の最初と最後にそれぞれ'236'と'356'の点(外国語引用符)を挿入する
  • 日本語文章中の1文字または1単語の英文字列は前後に外国語引用符ではなくて、語頭に外字符'56'を挿入する。語の後は1スペース開ける。
  • IMEでの入力時は、キーを押した瞬間にIME入力文字列に内容が変更され、確定した場合は元の編集画面表示に戻る。

読み上げモードの変更

  • 特定のキーを押すことで仮名・英文字・数字のフォネティック読みに切り替えられるようにする。
  • 編集画面はデフォルトで(左右矢印キーで?)漢字は詳細読みにする。文字レビュー操作では(テンキーの2を押した際は)文字の音または訓の1文字読みが出力されるようにする。
  • 点字や音声の読みのモード変更(「フォネティックモード」・「1文字モード」等)がキー操作でできるように。
  • 音声と点字とで異なった設定が独立してできることが望ましい。

設定項目の検討

音声設定

日本語変換時の読み上げ設定

  • ひらがな・カタカナ・漢字の音声のピッチ
  • 漢字の読み方の設定
  • 英字の大文字・小文字、半角・全角の区別

カーソル移動時の読み上げ設定

  • ひらがな・カタカナ・漢字の音声のピッチ
  • 漢字の読み方の設定
  • 英字の大文字・小文字、半角・全角の区別

なめらか読みの設定

1行読みや全文読みの読み方を設定。

  • 句点を読む チェックボックス
  • 括弧を読む チェックボックス
  • 記号を読む チェックボックス
  • 数字を位取りして読む チェックボックス
  • 改行の読み方 ラジオボタン 読む,読まない,息継ぎ
  • 英語読み ラジオボタン 発音読み,スペル読み

特に英語読みと数字読みについて、音声エンジンに依存しない実装のためには、スクリーンリーダー側に辞書や読み付与のロジックが必要である可能性。

点字設定

日本語変換時の点字出力

カーソル移動時の点字出力

行単位・文単位の点字出力

参考資料

謝辞

  • 初版作成 藤沼さま 2012年7月9日
  • 追加提案 MISONO さま、新家 さま
  • 編集 西本