2008年05月05日

Fire VoxでSAPI4音声を使えるようにした

やっと、動くようになったので、公開。
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音声だとダメだったり、新しいウィンドウを開くとダメだったりと、基本的なチェックができていなかった。原因はメモリ解放の順序だった。

今分かっている不具合は、新しいブラウザを開くと、別々にしゃべってしまうこと。大域変数をやめて全部クラスの中に入れてしまったので、独立して音声を起動できてしまう。




posted by takayan at 13:16 | Comment(2) | TrackBack(0) | Fire Vox | このブログの読者になる | 更新情報をチェックする

2008年05月15日

MacOSX LeopardでのFire Vox

5月8日にFire Voxの新しいバージョンが出た。バンドルパックのバージョンで3.7。新しい機能として、Leopardへの対応が書いてあったので試してみた。以前のバージョンでもMacOSへの対応がされていたが、試していないのでMacOSでの最初の実験になる。

試したのは、文字列を日本語に書き換えたFire Voxの日本語版と本家のFire Voxの両方。
日本語版Firefox 2.0.14、そして英語版Firefox。
音声はドキュメントトーカ for Mac Ver3のたかし。

最初から日本語版の組み合わせで試してみた。そしてすぐにうまくいかないことが分かった。ちゃんとTTSはMacOS用のものが選択され、たかしの声でしゃべってくれるのだけど、パーセントと連呼ばかりしてまともな言葉をしゃべってくれない。

Fire Voxの日本語版で置き換えた日本語文字列もパーセントと読んでしまうし、ページ上の日本語もメニューの日本語もパーセントと読んでしまう。英単語があると、そこだけはちゃんと言ってくれる日本語音声だから日本人読みになっているが。

よく聞くとパーセントだけでなくそのあとに英数字もしゃべっている。おそらく16進数。また文章の開始の箇所ではスラッシュとも言っている。

理由を調べてみた。開発者用ページをみると、Mac標準の開発環境であるCocoaでXPCOMを作るのがうまくいかなかったので、簡易HTTPサーバーを作って、それへのリクエストとして発音させているらしい。

アドオンのコードを眺めてみると文字列がURLエンコードされて、Macに渡されていることがわかる。当然と言えば当然だ。そのためにアスキー文字列以外はエスケープエンコーディングされてパーセントと16進数に変換されてしまって、それをそのまま音声にしていたのだと分かった。

この解決策として考えられるのは、このパーセント付きの文字列を、MacOSのTTSが理解できる日本語に変換するコードを入れて、それを読ませるようにプログラムを修正することだろう。ひまがあったらこれも書こうかな。


最近のMacOSXにはVoiceOverという標準のスクリーンリーダ機能がついている。Macにインストールできる日本語音声も販売されている(ドキュメントトーカ for Mac Ver3)。しかし残念なことに現時点では日本語音声はVoiceOverには対応できていない。

この日本語音声の製品には簡単な音声ブラウザがついていて、それではちゃんと日本語で読み上げているので日本語音声をプログラミングすることは可能で、このFire Voxでの日本語読み上げも十分可能性はある。

Fire Voxの日本語版がうまくいかないので、本家のFire Voxを入れてみた。英語はもちろん読んでくれるが、当然日本語の文字列はパーセントと読んでしまう。Macではショートカットキーの修飾キーはCommandキー+Shiftキーを使う。ただしFとD、QやMなどは使えたが、Aなどいくつかのコマンドは使えなかった。スペル読み上げ(S)をしてしまうと、それが解除できなくなってしまった。

音声はtakashiで固定されていた。VoiceOverの設定で英語音声に切り替えても変わらなかった。Macの言語を英語に切り替えて起動させてもやはりtakashiの声になってしまった。

結論としては、Fire VoxはとりあえずLeopardでしゃべってくれるが、日本語文字列は読んでくれない。まだWindows版と比べて読み上げの機能もまだまだ。

以上で簡単な報告終わり。


余裕があれば、MacOSX用のモジュールの書き方も勉強して書いてみたいけれど、それよりもWindows版でまだ改造したいことがある。テキスト入力やテキストエリアで入力時の日本語を読むようにさせたい。ホームページリーダーやネットリーダーのように専用の入力ダイアログボックスを用意して、そこでの入力動作を監視させればいいだろう。

(18:30 寝ぼけて書いてたところを修正)


posted by takayan at 03:07 | Comment(0) | TrackBack(0) | Fire Vox | このブログの読者になる | 更新情報をチェックする

2008年05月18日

LeopardでFire Voxを快適にしゃべらせるには(1)

日本語でもしゃべらせてみようといろいろ試してみたことの中間報告。
現時点では完成していないが、何をすべきかは見えてきたと思う。

Fire Voxで使っているMacTTSのソースコードは公開されている。これを自分でLeopardのXcodeを使ってビルドができた。
Objective-Cでコードが書かれているのではっきりとは理解できないが、全コード眺めてみると一カ所スピーチコマンドを使っている場所を見つけた。ここでいいか調べるために、文字列が格納された変数のかわりに@"Hello"と文字列定数を代入したものでXPIを作ってみたら、見事にHelloと連呼してくれた。

それではと、これを「こんにちわ」で置き換えてみたら、何も言わなくなった。文字列のエンコードが間違っているのかもしれないが、それでも一切しゃべってくれないのはおかしい。おそらく日本語文字列を与えたぐらいでは日本語は簡単にしゃべってくれないのだろう。詳しい実験はやっていないが。

先述のドキュメントトーカには日本語音声を使ったプログラミングができるようにSDKが公開されている。そしてその中の文書には日本語で発声させるための独自のコマンド群が記載されている。きっとこちらを使わないとまともに日本語ではしゃべってくれないのではないかと思われる。

つまり、Cocoaのシンセサイザに読ませる部分をドキュメントトーカで読ませるようなコードに書き直せば、Macでも日本語でしゃべってくれるようになるのではないかと思う。いままで一度もObjective-Cのプログラミングはしたことがないから、今すぐにはできないけれど、サンプルをいじって研究しよう。


それから、前回の投稿で問題点をちょっと指摘していたが、そのことについて。

まずキー操作。これはおそらくショートカットキーが衝突しているからだろう。別なキーに割り当てれば、何とかなる問題だ。例えば、よく使うだろう「A」は「Z」あたりに置き換えればいい。また音声が僕の環境でtakashiの声に固定されていた問題は、Fire Voxはシンセサイザを利用するとき標準音声で読み上げるようにしてあって、それが僕の環境だとtakashiの声になっていただけのようだ。Cocoaの音声合成にはちゃんと音声を変える命令もあるのでデータとして文字列と一緒に音声名を送ってやれば、これにも好きな声に切り替えてくれる機能がつけられるのではないかと思う。


それは今後のこととして、今できることとしてすくなくとも英語のページをまともにしゃべってくれるようにちょっと改造をしてみた。つまり%付きのエンコード文字列を読み飛ばすようにしてみた。また標準音声をtakashiからどうしても切り替え方が分からないので、それだと英語のページを読むときtakashiではどうしても困るので、ドキュメントトーカを入れていない人には余計なお世話かもしれないが、音声をとりあえずVickiに固定してみた。
変更の仕方は簡単だった。どうしてここを調べなかったのだろうというぐらいのとこ。方法を後でまとめる(Macの「システムの声」の変え方

ついで本家の英語版Fire VoxのMacTTSをこの改造を施し置き換えたものも作ってみた。Leopardを使っている人は上のものよりこちらが重宝すると思う。英語版のFirefoxに本家のFire Voxをインストールしていて、英語のページばかり見ている人には必要のないものだけど、英語のページは滅多に見ないけど英語読みはさせたいが日頃の日本語のページでパーセントパーセント言われてはうるさくて困るという人には便利な改造版だと思う。

ダウンロード先:
-http://et-dev.main.jp/index.php?Fire%20Vox


この場合は、英語(米国)版Firefoxをインストールした後、Locale Switcherアドオン日本語言語パックja-JP-mac、そしてQuickRestartアドオンを入れると快適に使えるだろう(この文のリンクは執筆時最新のものだが、リンク先が変更される可能性がある)。

※Windowsのように各国語Firefoxを上書きインストールで言語パックの登録はできないようだ。


posted by takayan at 02:30 | Comment(0) | TrackBack(0) | Fire Vox | このブログの読者になる | 更新情報をチェックする

2009年08月12日

Fire Vox 日本語版の更新

Fire Voxを日本語環境でも使いやすくした改造です。Windows向けだけの改造です。およそ一年ぶりの更新です。ここに書くのがちょっと遅れましたが。

Fire Voxだけでなく、同じ音声システムを利用するClick,Speakの日本語版も更新しました。
なお、この二つの拡張は同時に利用すると正しく音読できません。用途に応じて必要な方のみをご利用ください。

配布場所:
http://et-dev.main.jp/index.php?Fire%20Vox


■ 主な変更点
Fire Vox
・テキスト入力でエコーを有効にすると日本語のキー操作を読み上げるようにした。
・従来のアルファベットの綴りを読む機能を拡張して日本語の詳細読みをするようにした。
なお、この詳細読みをするためのデータとして、BLPCの次のページのの詳細読みデータを利用しています。およびBEPにおけるこの詳細読みの部分も参考にしています。
http://www.blpc.net/dic.htm

Click,Speak
・読み始めがうまくいかない不具合を修正した。
・SAPI4の速度、ピッチの調整をできるようにした。

■ ショートカットの割り当てについて
Fire Vox が作られた頃はうまくいっていたのですが、現在の Firefox3.5では標準のショートカットと競合してしまっています。そのためうまくいかないキー操作があります。また他のアドオンとの競合もあるかもしれません。これはオプション画面で使いやすいように各自置き換えてください。

私は現在このように置き換えています。
前の位置の読み上げ ... "<"
次の位置の読み上げ ... ">"
反復読み上げ ... "!"
見出しリストの読み上げ ... "#"
選択テキストの読み上げ ... "?"

■ 日本語キーエコーについて
この改造ではテキストエリアや1行のテキストボックスで文字を入力したりキー操作したとき、日本語で発音するようにしてあります。漢字変換中は発音しません。エンターによって確定したときだけ確定した言葉を発音します。なおエンター以外のCTRL+下矢印などによる部分確定には対応していません。
これらのテキスト入力領域では「選択テキストの読み上げ」と「綴りの読み上げ」が利用できるようにしてあります。英語では「綴り」は単語を一文字ずつ読み上げることになっていますが、今回の改造では漢字はその説明、仮名はそのフォネティック読みをするようにしています。範囲が選択されているときはその範囲を、範囲が選択されていないときは、そのキャレットの位置から改行(もしくは末尾)までを読み上げます。

このアドオンを利用するためには、WindowsパソコンにSAPI5対応の音声合成エンジン、もしくはSAPI4対応のエンジンが必要です。VISTAではSAPI4音声は正式に対応していないはずですが、とりあえず動いています。

SAPIに関しては「まほろば」さんの次のページなどを参考にしてください。
まほろば::SAPI5 対応の日本語音声合成エンジンのインストール
まほろば::SAPI4 対応の日本語音声合成エンジンのインストール


posted by takayan at 00:35 | Comment(3) | TrackBack(0) | Fire Vox | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。