特定の文字について音声エンジンに依存せず読み付与する
概要を「特定の文字について音声エンジンに依存せず読み付与する」に変更しました。
release-2013.1jp 0f5da59
のコミットで、symbols.dic に後述の文字を追加しました(文字化けする可能性が高い文字ばかりです)。
この状態で、JTalk 以外の音声エンジンで東洋医学用語の読み上げを行って、まだ読みが抜ける文字があるか、あるいは処理から除外したほうがよい文字があるか、ひきつづき確認をしたいと思っています。
特定の文字を特定の読み方に強制するので、これらの文字を本当は正しく読める音声エンジンでは、読めていた熟語がうまく読めなくなることがあります。 その場合は、記号読み上げ辞書でその文字のpreserve属性をalwaysに変更すれば、いわゆる「なめらか読み」では音声エンジンが読み付与するはずです。
関連チケット #25509 Unicode文字の読み上げ(東洋医学系の難読漢字など) #29872 文字説明データの再構成
䪼 セツ none # 䪼 U+4abc 䯒 コー none # 䯒 U+4bd2 俠 キョー none # 俠 U+4fe0 呃 アク none # 呃 U+5443 嘈 ソー none # 嘈 U+5608 噦 エツ none # 噦 U+5666 噯 アイ none # 噯 U+566f 嚨 ロー none # 嚨 U+56a8 囊 ノー none # 囊 U+56ca 搐 チク none # 搐 U+6410 攢 サン none # 攢 U+6522 暍 エツ none # 暍 U+668d 欬 ガイ none # 欬 U+6b2c 涿 タク none # 涿 U+6dbf 滎 エイ none # 滎 U+6ece 濇 ショク none # 濇 U+6fc7 濼 レキ none # 濼 U+6ffc 瀆 トク none # 瀆 U+7006 炷 シュ none # 炷 U+70b7 焠 サイ none # 焠 U+7120 燾 トー none # 燾 U+71fe 牖 ユー none # 牖 U+7256 璇 セン none # 璇 U+7487 璣 キ none # 璣 U+74a3 痤 ザ none # 痤 U+75e4 痹 ヒ none # 痹 U+75f9 瘀 オ none # 瘀 U+7600 瘂 ア none # 瘂 U+7602 瘈 ケイ none # 瘈 U+7608 瘙 ソー none # 瘙 U+7619 瘭 ヒョー none # 瘭 U+762d 癃 リュー none # 癃 U+7643 癤 セツ none # 癤 U+7664 皶 サ none # 皶 U+76b6 砭 ヘン none # 砭 U+782d 窠 カ none # 窠 U+7aa0 糙 ソー none # 糙 U+7cd9 胦 ヨー none # 胦 U+80e6 脖 ボツ none # 脖 U+8116 脘 カン none # 脘 U+8118 腠 ソー none # 腠 U+8160 腧 ユ none # 腧 U+8167 膻 ダン none # 膻 U+81bb 臊 ソー none # 臊 U+81ca 臏 ヒン none # 臏 U+81cf 芤 コー none # 芤 U+82a4 芩 キン none # 芩 U+82a9 薏 ヨク none # 薏 U+858f 蟜 キョー none # 蟜 U+87dc 譆 キ none # 譆 U+8b46 譩 イ none # 譩 U+8b69 跗 フ none # 跗 U+8dd7 蹻 キョー none # 蹻 U+8e7b 軀 ク none # 軀 U+8ec0 邈 バク none # 邈 U+9088 郄 ゲキ none # 郄 U+90c4 鈹 ヒ none # 鈹 U+9239 鍉 テイ none # 鍉 U+9349 鑱 ザン none # 鑱 U+9471 鞕 コウ none # 鞕 U+9795 頄 キュー none # 頄 U+9804 頰 キョー none # 頰 U+9830 顖 シン none # 顖 U+9856 顙 ソー none # 顙 U+9859 飧 ソン none # 飧 U+98e7 饞 ザン none # 饞 U+995e 髁 カ none # 髁 U+9ac1 髃 グー none # 髃 U+9ac3 髆 ハク none # 髆 U+9ac6 髎 リョー none # 髎 U+9ace
JTalk 以外の日本語音声合成エンジンについて、読み付与を改善してほしいというご要望があります。
過去に ProTALKER 関連でこうしたご要望をいただいていたのですが、チケットに登録されていないようです。
最近は新しい Vocalizer for NVDA で経穴名で使われる Unicode 文字が読めないというご指摘をいただいています。
https://vocalizer-nvda.com/downloads
以下、検討できそうなことを挙げてみます。
(1)文字ごとの読み(単漢字)については、記号読み辞書を整備することで、エンジンに依存しない読み修正ができる可能性があります。
記号読み辞書だけで対応できれば NVDA 本家にもフィードバックが可能です。
しかし、熟語としての読みで副作用が起こる可能性があります。
(2)設定メニューの「読み上げ辞書」機能で、デフォルト辞書(すべての音声エンジンに有効)あるいは音声ごとの辞書(選択中の音声エンジンに対してのみ有効)を使って対応することが考えられます。 この機能は、正規表現が使えるので、熟語と単漢字のそれぞれを読み分ける処理も書きやすくなります。
これも NVDA の本家の実装をそのまま生かそうという方針の対策です。 本来はユーザー自身にカスタマイズしていただくためのものなので、日本語チーム独自の読み上げ辞書を、どういう形で提供するか検討が必要です。
(3)JTalk で読み付与だけを行い、ほかの音声ドライバに音声合成をさせる、という特殊なドライバーを実装することが考えられます。 日本のスクリーンリーダーにはそういう実装をしている製品があるようです。
しかし、アクセント記号を音声エンジンに送る標準的な方法がないので、すべての漢字をカナに変換してしまうと、本来は音声エンジンが正しくつけられるはずのアクセントをうまくつけられなくなります。
(4)音声エンジンごとに、エンジンが読めなさそうな文字だけを前処理するラッパー用ドライバーを作るアプローチも考えられます。 例えば NVDA 日本語版は Open JTalk エンジンに対してこういう前処理をしており、それが JTalk ドライバーとしてエンドユーザーに見えてます。
しかし、NVDA が対応可能なあらゆるエンジンに対してこのようなことを行うと、個々のエンジンの仕様が明確でないため、開発や保守のコストがかかります。 また、音声エンジンの不具合について問題の切り分けが困難なので、ユーザーや音声エンジンベンダーを混乱させる懸念もあります。
Vocalizer に関しては、日本語対応の改良をドライバーの開発元にフィードバックをして、売り上げに貢献すべきではないか、という意見もありえますが、これは下記のチケットでカバーしたいと思います。 http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=31354