~~SLIDESHOW~~ ====== NVDA日本語拡張 ====== * NVDAの日本語対応の現状と課題 * 西本卓也 [[http://www.nvda.jp/|NVDA 日本語チーム]] 代表 * nishimotz @ gmail.com / Twitter @24motz * 発表 * PyCon JP 2012 [[http://workshop.nvda.jp/about|NVDA Workshop in Japan]] (Sep.16,2012) * NVDA 開発者と進める意見交換会 (Sep.17,2012) * [[http://en.nishimotz.com/nvdajp_workshop|English version]] ===== 前史 ===== * 1980年代: 日本でスクリーンリーダー開発が始まる。文字の詳細説明 * 1988: 点字情報ネットワーク(てんやく広場)日本IBM * 1996: Windows対応日本語スクリーンリーダー 95Reader * 1997: IBM ホームページリーダー テキストを男性の声・リンクを女性の声 * 1998: PC-Talker発売。日本のベストセラーに * 1999: 95Readerで日本語の点字対応 * 2001: 日本語版 JAWS for Windows 日本IBM * 2006: 携帯電話が入力メソッドの読み上げに対応 ===== NVDA日本語化のあゆみ ===== * 2006: NVDA リリース * 2008: ITRC-UAI 高齢者・障害者のインターネット利用分科会によるNVDA日本語版の議論 (渡辺隆行先生、ミツエーリンクスさん) * 2010: 音声エンジン、入力メソッド、文字説明 (西本卓也、新家昌高) * 2011: 点字ディスプレイ対応、64ビット対応、ユーザ会広島 * 2012: NVDA日本語チーム ===== Python と nvdajp ===== * PyCon mini JP, PyCon JP 2011 * Bazaar バージョン管理システム, lunchpad.net, sourceforge.jp * ctypes 音声合成エンジン、テキスト解析、点字ディスプレイドライバー * Python で NVDA およびアドオン(機能拡張) * Plone で workshop.nvda.jp を構築 * NLTK で自然言語処理? ===== 国際化 ===== * NVDA翻訳チーム: 40の言語 * メッセージ, ドキュメント, 記号読み上げ * 文字説明辞書(中国語コミュニティ) * アドオン:OCR(文字認識), Vocalizer(音声合成) * コミュニティのWebサイト ===== 日本語対応 ===== * 依存するモジュール (日本語に対応していない) * eSpeak: 多言語オープンソース音声合成 * liblouis: 多言語オープンソース点訳 * 音声エンジンは切り替えられるが点訳エンジンは切り替えられない * 入力メソッド * 文字説明の機能 ===== コミュニティ (2012) ===== * 日本語チーム: 非営利の開発者グループ * メーリングリスト 24 人 * 毎週音声会議 (Skype) * Japanese Users * メーリングリスト 179 人 * 開発スナップショットの共有、e-mail による議論 * NVDAJPフレンズ * NVDAを教えられる人を増やす * 支援ボランティアのための教材開発 * 台湾・日本ジョイント * 2ヶ月に一度の音声会議 ===== 活動 ===== * 日本のユーザーのための開発 * 日本語のための機能拡張 * 2012.2.1jp: 2000を超えるダウンロード * 日本語対応の仕様をまとめる * 海外の日本語ユーザーのための開発 * アドオン版の日本語音声エンジン * NVDAの国際的なコミュニティ * 翻訳 * 東アジア言語拡張の支援 ===== 日本語対応 ===== * 中国語対応と日本語対応は違う * 世界共通で日本語完全対応のスクリーンリーダーはまだ存在しない? * 日本は特殊なのか? * 1980年代からスクリーンリーダーが存在 * 日本語という言語の特徴 * 貴重な英語の文献 [[http://shop.oreilly.com/product/9780596514471.do|CJKV Information Processing, 2nd Edition]] * 文字と点字の表記システムの特殊性 * 技術的な制約 * キーボード、音声エンジン ===== 入力メソッド ===== * 発音が正しくても文字が違う * 誤変換 http://bit.ly/NXaVI2 * 'はいりそうです': 'はい理想です' / '入りそうです' * スクリーンリーダー利用者は誤認識に気づきにくい * 技術は共通 * Input Method Manager (IMM), Text Service Framework (TSF) * 表記システムの違い * 変換候補は複数の文字、複数の文節 * 変換候補にも表意文字(漢字)と表音文字(カナ)が混在 ===== 状態遷移モデル ===== * 中国語の入力例 * 初期状態 * 未変換(読み)文字列の編集 (on the spot) * 候補の選択 (候補選択ウィンドウ) * リストをすべて読み上げて数字で決定 * 日本語の入力例 * 初期状態 * 未変換(読み)文字列の編集 (on the spot), 変換キーが押されるまで * 変換候補の1番目 (on the spot), 変換キーが押された直後 * 候補の選択 (候補選択ウィンドウ), 変換キーがさらに押されたとき * 数字キーで選択しない ===== 半角と全角 ===== * 過去は1バイト文字と2バイト文字 * Unicode: 文字の幅とバイト数は対応しない * 入力メソッド * 変換停止:半角文字だけを入力する * 日本語変換開始:変換候補として半角文字も全角文字も選択できる * 全角と半角の区別 * 不要:内容や意味を理解するだけなら * 必要:他の人に読ませる文章、アドレスの入力、ログイン画面やフォームの入力、ソフトウェア開発 ===== 文字 1 ===== * ラテン文字(アルファベット) * 半角、全角 * 数字 * 半角ローマ数字、全角ローマ数字、漢字の数字 * 表音文字(かな) * ひらがな:助詞や助動詞など文法的な機能の単語、活用語尾 * カタカナ:外来語 半角と全角がある ===== 文字 2 ===== * 表意文字 * 漢字(中国語で Hanzi 韓国語で Hanja ) * 中国語繁体字>日本語漢字>中国語簡体字 * ひとつの文字に複数の読みかたがある * 記号、句読点 * 日本工業規格で全角記号が約 600 種類 * 記号によっては半角と全角の両方の文字 ===== 表記システム 1 ===== * 文は表音文字と表意文字を両方含む * 単語は空白で区切らない * 表意文字の発音は前後関係によって変わる * 入力メソッド * 表音文字から表意文字に辞書を使って変換 ===== 表記システム 2 ===== * 点字 * 一般的な6点点字 * 日本語の表音文字の体系がある * 単語を空白で区切る規則が曖昧性を減らす * 「はいりそーです」「はい□りそーです」 * 表音文字による点字:6点漢点字と8点漢点字 * 音声合成 * 1つの文字を機械がどう読み上げるべきか自明ではない(スペル読み) * 形態素解析が多用される * 辞書が必要。統計的情報(機械学習)も有用 ===== 文字説明 1 ===== * 中国語:複数の説明や用例 * 先頭の説明だけ読む、全部の説明を読む * 日本語:説明や用例は普通1種類 * 表音文字(かな)で辞書を作る * 用法 * 入力メソッドの変換候補 * 文字のレビュー * 文字の入力や編集(高頻度で文字説明を使う) ===== 文字説明 2 ===== * 文字説明 * スペル読み(辞書が必要) * 表意文字:文字の違いを区別する * 音声出力と点字出力 * フォネティック読み:音声を聞き取りやすくする * ラテン文字(アルファベット) A アルファー * 日本語 あさひのあ * 文字属性 * 英語でも「大文字の通知」 * 音声「キャップ」、ビープ、声の高さ * 半角と全角 (ラテン、カタカナ、数字、記号) * 表音文字の区別(カタカナとひらがな) ===== 表音文字の入力 ===== * 翻字入力(ラテン文字から表音文字への表記変換=ローマ字かな変換) * US キー配列 * 日本語キー配列 * 点字ディスプレイ 6点英字入力 * 直接入力(かな配列) * 日本語キー配列 * 点字ディスプレイ 6点かな入力 ===== キーボード 1 ===== * 半角全角キー * 入力メソッドの有効化・無効化(入力システムの切り替えではない) * ALT 制御キーと同時に押される場合と、単独で押される場合 * 英語キーでは ALT制御キー+チルダ * 無変換キー * 入力(翻字)モードの切り替え * 表音文字のままで確定(ひらがな) * 外来語用の表音文字に変換(カタカナ) * 変換キー * スペースキーで代用されることが多い * かたかな・ひらがな・ローマ字キー * ALT制御キーと同時に押すと表音文字の入力方式を切り替える ===== キーボード 2 ===== * Caps Lock キー * 日本語配列ではNVDA制御キーとして動かない * バリエーション * 無変換キーのかわりに Ctrl-U,I,O,P と F6-F9 * 好みの違い * かな入力の前にモードを切り替える * かな入力してから変換操作で文字を使い分ける ===== 日本語音声 ===== * 無償のエンジンが非常に少ない * SAPI4 のエンジンがいまでも人気 * W3C SSML 1.1 日本で普及していない * JTalk (Open JTalk, MMDAgent の派生版) * Hidden Markov Model (HMM) 音声合成, BSDライセンス * Mecab テキスト解析 * 超早口音声 * JTalk2 * 言語の自動切り換え * JTalk で日本語を読む * eSpeak でその他の言語を読む ===== アプリケーション ===== * 入力システム(サードパーティ) * ジャストシステム ATOK, Google 日本語入力, Baidu IME * PC-Talker シリーズのソフトウェア * NetReader がデフォルトのWebブラウザ * OpwBE などの点訳者向けソフトウェア * 秀丸エディタ、日本限定のメールソフト * ControllerClient の拡張で speakSpelling をアプリから利用 ===== 点字対応 ===== * デバイス KGS 点字ディスプレイ * 日本の大手ベンダー KGS * 文字入力に対応する付属ソフトウェア * ユーザーの要求:シリアルポート対応 * ベンダーのライブラリがシリアルポートのエミュレーション使用 * 点訳エンジン * 実験的な実装 * 改良版を実装中 * liblouis 拡張として統合すべき? * 墨字の文字数と点字のセル数の違い * カーソル位置の対応が複雑 ===== 点訳エンジン ===== * (1) 前処理 * 日本語、英語、情報処理点字の分離 * (2) 形態素解析 (日本語) * JTalk 音声エンジンと Mecab 処理を共通化 * (3) 形態素単位の処理 (日本語) * 単語区切り、長音記号 * ラテン文字、数字、日本語記号 * 数字を点字表記に変換 * (4) マスあけ (日本語) * (5) 後処理 ドットパターン作成 * 日本語、英語、情報処理点字の変換結果の統合 * 外字符、大文字符、数符、記号 ===== 展望 ===== * 操作の言語と文書の言語を独立させる * 音声出力はすでに言語切り替えできる * 母国語に関わらず多言語が入力できる環境 * 日本語チームの開発体制 * リリースに電子署名が必要 * 独自に開発するべき課題はどこまで? * 文字や記号の説明、用語の省略形(チェックボックスなど) * 効率性、完全性、慣習 * タッチデバイスでの入力メソッド * スマートフォンでも外付けキーボード