音声エンジンによって「空行」を「クーギョー」と読まないことがある
blank の日本語訳を漢字表記「空行」からカタカナ表記「クーギョー」に変更したいと思います。
カタカナ表記の「クーギョー」は、音声エンジンによっては不自然なイントネーションになるというご指摘をいただいています。
一般的に点字ディスプレイ出力で、平仮名の未知語(辞書未登録語)は解析に失敗して不自然にマスアケされることが多いため、今回はカタカナ表記にしたのですが、辞書のチューニングを丁寧にやれば回避できるので、再検討は検討可能です。
もともと音声合成エンジンは漢字カナ交じり表記の文字列に対して一番適切にイントネーションを付与するので、NVDA の翻訳は漢字カナ交じり表記で統一して、読み付与の誤りは音声エンジンの開発者に修正を依頼するべき、というのが正しい役割分担と思われます。
しかし、現実に多くの音声合成エンジンが読み誤りするキーワードでは妥協せざるを得ないのも現実です。
iOS でも VoiceOver で読まれるキーワードが「表」ではなく「ひょう」のようにカナ表記されたりしています。
今回「クーギョー」で対策を検討した背景として、現状の NVDA で、すでに以下のキーワードがカタカナ表記されています。
ハンカクエイスー ハンカクカタカナ ハンカクカタカナローマジ ヒラガナ ローマジ カタカナ ローマジ
クーギョーの元のキーワード blank は speech.py の3か所でのみ使われています。
そのうち1か所で使われている空行の判定メソッドは以下のように実装されており、空白、改行文字、文字コード0など、いくつかの文字を blank の一部とみなす処理になっています。
もしかすると現状の実装における blank は「クーギョー」とは異なる訳語を当てたほうがよいのかも知れません。
「ブランク」とカタカナ表記にするくらいしかアイディアはありませんが、もうすこし検討したいと思います。
#: If a chunk of text contains only these characters, it will be considered blank. BLANK_CHUNK_CHARS = frozenset((" ", "\n", "\r", "\0", u"\xa0")) def isBlank(text): """Determine whether text should be reported as blank. @param text: The text in question. @type text: str @return: C{True} if the text is blank, C{False} if not. @rtype: bool """ return not text or set(text) <= BLANK_CHUNK_CHARS
本家 2013.3 がリリースされましたが、最終的に blank の日本語翻訳はカタカナ表記「クーギョー」に変更されました。
更なる見直しについては別のチケットで扱わせてください。
音声エンジンによって「空行」を「クーギョー」と読まないことがあります。
例えば Windows 8 Haruka Desktop は「そらぎょう」と読みます。
他に「そらゆき」と読み上げるエンジンもあるようです。
このメッセージは blank の日本語訳として nvda.po で漢字表記で「空行」という表記があてられています。
読み付与はNVDAではなく音声エンジンの責任なのですが、過去にも nvda.po では読み誤りを回避するために「ハンカクエイスー」など漢字をつかわない表記を選んだことがあります。
空行についても同じような対策が考えられます。