#break up words that use a capital letter to denote another word
([a-z])([A-Z]) \1 \2 1 1
#Break away a word starting with a capital from a fully uppercase word
([A-Z])([A-Z][a-z]) \1 \2 1 1
#Break words that have numbers at the end
((?:(?=\D)\w)+)(\d+) \1 \2 1 1
以下、メーリングリストでやりとりしたことを、こちらに公開しておきます。
読み上げ辞書はユーザーガイド 8.1.13
http://www.nvda.jp/nvda2013.2jp/ja/userGuide.html#toc64
で説明されていますが、ここにはGUIでの編集方法しか書かれていません。
読み上げ辞書については下記のバグが未解決です。
Windows 8 で読み上げ辞書の編集などをしたあとで NVDA が正常に終了しない
http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=31592
下記が改良提案として挙がっています。
記号読み上げ辞書の編集を効率的に
http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=30242
辞書は上記ユーザーガイドに書かれた通りですが、 ユーザー設定フォルダの Speechdict サブディレクトリに保存されるのは デフォルト辞書 default.dic と、 音声ごとに作られる辞書 (音声ドライバの名前)-(音声の名前).dic の2種類です。
いくつか辞書登録して、NVDA のソースを読んで確認したことをまとめます。
テキストファイルの文字コード UTF-8 (BOMつき) 改行コードは CR-LF
辞書エントリは コメント行(先頭文字が # の行、2行以上でもよい)と、 TAB文字で区切られたフィールドが4個あるデータの行の組み合わせ。
コメント行が2行以上連続する場合は、コメントが継続すると扱われる。
正規表現の説明は簡単ではありませんが、実はこの読み上げ辞書にはもう一つ、 ユーザーにカスタマイズできない「ビルトイン」という辞書があり、 あらかじめ下記が定義されています。
これらは正規表現で書かれています。 最初の定義は
と書かれています。NVDA が helloWorld のような文字列を hello World のように読み上げるのは、 このビルトインの仕組みによるものです。 のこり2個の定義も、 MSWord とか Excel2013 のようにアルファベットや 数字がくっついた文字を英語音声エンジンで自然に読み上げるために使われているようです。
なお、NVDA で使われている正規表現は、基本的に Python 2.7 の仕様に基づく正規表現のはずです。