[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Windows版スピーチサーバのエラーの原因? と声の使い分けの復習



渡辺です。

坂本君いわく、
> これなのですが、このエラー、hprでなくても出ます。また単独で使っていても
> speak.exeを何度も再起動させたり(lispパッケージの追加やBEPのhack等で、.
> emacsを弄繰り回してemacsを再起動したり)するときに出ます。

坂本さんのSpeak.exeは、punctuation modeで変な値を設定しても逃げるよう
にした最新バージョンですね。何でエラーが出るのだろう?
この修正をする前のバージョンでもエラー出ますよね?

御園君や坂本さんの今のパソコンにはSAPI対応のドキュメントトーカが
入っていますか?

# ソースを見なおしてみました。
# 実は今のバージョンでもドキュメントトーカを使っているのですね。
# ソースをいじったのが半年以上前のことなので、すっかり忘れてました。
# (言い訳)

ちょうど良い機会なので(自分自身のために)声の使い分けの復習をします。

Windows版で使っているエンジンは以下の12種類です。
8と9がProTALKER、10と11がドキュメントトーカのエンジンです。
また、それぞれのエンジンに対し割り当てているDECTalkの声を右側に
示します。声の前の数字はindexです。声は全部で20個 用意してあって、
0から9までが英語、10から19までが日本語です。英語の声のindexに10足すと
同じ性質を持った声の日本語版になるようにしています。
たとえば (2):np-monotone (単調なPaulの声)と(12):ny-monotone (単調な
読み秀君の声)。
monotoneな声は、SAPIのコマンドで単調な読み上げになるように初期化して
います。animatedな声はSAPIのコマンドでピッチを上げるように初期化して
います。smoothな声は別のエンジンを割り当てています。

 0 "Mike"      (0,9):np, (2):np-monotone, (3):np-animated
 1 "Mike in Hall"  (4):np-smooth
 2 "Mary"      (1):nb
 3 "Mary in Hall"  (8):nu
 4 "Sam"      (6):nh
 5 "Freddy"     (7):nf
 6 "RoboSoft Three" 
 7 "RoboSoft Four" (5,15):np-indent
 
 8 "読み秀君"    (10,19):ny, (12):ny-monotone, (13):ny-animated
 9 "読み子ちゃん"  (11,18):nY
10 "太郎"      (14):ny-smooth, (16):nt
11 "花子"      (17):nh

ELisp側では、voice-lockなどの機構によって声を指定します。
dtk-voices.elを読めばわかりますが、Emacspeakは :np-bold などの多くの
声を要求しますけれども、良く使う声として、とりあえずこれだけの声を
用意してあります。また用意していない声を指定されたときは :np (日本語
だったら :ny)を使うようになっています。

オリジナルのEmacspeakはDECTalkの機能を使って多彩な声を定義していますが、
SAPIでは対応できないので、dtk-voices.el を書き換えて、上記の声で
ごまかしています。

したがって、(14)、(16)、(17)の声が呼び出されるとき、すなわちEmacspeak
が(4):np-smooth、(6):nh、(7):nf を使って日本語を読み上げるときに
ドキュメントトーカのエンジンが使われます。