SAPI4対応合成音声で読むためのメニューを追加した。本来のSAPI5音声がパソコン内に無いときなど、SAPI4音声を使って読ませることができる。SAPI4音声はマイクロソフトのページから無料でダウンロードできる。MS Agentの合成音声の日本語は市販のものに比べて声質はあまりよくないが、十分使えるレベル。
正式配布場所は、http://et-dev.main.jp/index.php?Fire%20Vox
免責事項。私takayanは、このプログラムによって生じる一切の不具合、影響などに関する損害は一切感知しません。 それに同意いただいた方のみご利用ください。GPLライセンスで配布されているものの改造です。
↓↓ダウンロード
clc-4-tts_bundle_v3.6_jp.0.9.xpi
こちらのCLiCk,Speakは、マウスで指示して音読させるソフト
clickspeak_bundle_v1.5_jp.0.9.xpi
どちらかをダウンロードし、デスクトップなどに保存する。それをFirefoxのブラウザ画面にマウスでドラッグして落とせばインストールが始まる。
これに先だって、MS Agentから日本語音声をダウンロードしてくれば、Firefoxが無料で日本語をしゃべってくれる音声ブラウザになる
MS Agentのエンドユーザ向けのダウンロードページから、日本語音声エンジンとSAPI4.0aランタイムをダウンロードしてくれば、使えるようになる。
上記アドインのどちらかを組み込んだ後、「ツール」メニューの「〜TTS選択」から「SAPI4を使用する」を選ぶと音声が切り替わる。
Fire Voxは「CTRL+SHIFT」とオプション画面で設定してあるキーを押して操作する。PAUSEキーを押して、固定修飾キーモードにすると、「CTRL+SHIFT」を省略して操作できる。
声が気に入らないとき、簡易的に他のSAPI4の音声を変えられるようにしてある。ダイアログ画面を設計するのが面倒だったので、いまのところ「about:config」を使っておこなう。素っ気なく音声エンジンの番号を直接指定する。どの番号がどの音声だと分からないといけないので名前を示すスクリプトを作ってみた。これはSpeech.VBSのスクリプトを参考にした。SAPI4の登録番号を表示する。ここで出てくる番号をfirevox.SAPI4Voiceの値にすれば、その音声になる。分かる人だけ、どうぞ。
<job id="ttslist"><script language="JScript">
//WScript.CreateObject("WScript.Shell").Run( "regsvr32 /s %SystemRoot%\\speech\\VText.DLL", 0, true );
var rows = new Array();
var TTS = WScript.CreateObject("TextToSpeech.TextToSpeech");
for ( var i = 1; i <= TTS.CountEngines; i ++ ) {
var data = new Array( i-1, TTS.speaker(i) );
rows.push( data.join("\t") );
}
WScript.Echo( rows.join("\n") );
</script></job>
SAPI4の機能は前から作って公開していたんだけど、この前大きな不具合があることに気づいてしまった。それがようやく解決できた。でもまだ気づいていない不具合を抱えているかもしれない。
その不具合というのは、ドキュメントトーカの音声だと動くけれど、このマイクロソフトで手に入るSAPI4音声だとダメだったり、新しいウィンドウを開くとダメだったりと、基本的なチェックができていなかった。原因はメモリ解放の順序だった。
今分かっている不具合は、新しいブラウザを開くと、別々にしゃべってしまうこと。大域変数をやめて全部クラスの中に入れてしまったので、独立して音声を起動できてしまう。
私は、アクセシビリティPodcastというコンテンツでWebアクセシビリティに関する最新情報を発信しております。その中で、今回Fire Vox日本語版のSAPI4対応について取り上げさせていただきたいと思い、ご連絡いたしました。
英語圏でしたら、無料で入手できるSAPI5対応の音声エンジンがいくつかありますが、日本語の音声エンジンで無料のものはSAPI4のものしかないのがげんじょうです。そのような中で、Fire VoxをSAPI4の音声でも利用できるように改良されたところがすばらしいと感じました。
ご検討いただけましたら幸いです。
でも教科書通りに作ったものだから、とてもシンプルで、それほどのものでもないんです。