ほしいもの

今なくて、あるいは不足していて、我々が困っているものリストです。

フリーの日本語音声合成ソフトウェア

日本語をしゃべることができ、それなりに使える、WindowsやUNIX用の日本 語音声合成ソフトウェアは今の所ありません。「それなりに使える」ために は、以下のような条件を満たす必要があります。

もしこういうものかそれに近いものを開発されている方、あるいはすでにあると 知っている方はどうかお知らせいただけると助かります。

Linux用の統一された音声合成API

Windowsでの音声合成プログラミングに比べて、Linuxのそれはなかなかめんどう です。Linux用の音声合成ライブラリの多くはプリミティブな部分を、それを独 自の設計思想に基づいたAPIに沿って実装しています。BEPのスピーチサーバのよ うに複数の音声合成ソフトウェアを使って、必要なものを順番に読ませ、かつレ スポンスも要求したいようなものを開発するには、それぞれの音声合成ソフトウェ アのAPI、それらの考え方の和集合を取るようなAPIのすりあわせ、マルチスレッ ドプログラミング、サウンド周りの微妙な処理といった部分に時間をとられます。 MicrosoftのSpeech APIはそのような意味ではうれしいものに見えます。Linuxで も音声合成APIの統一がなされるとうれしいし、そのような方向に向かうのであ れば是非協力したいと考えます。

Linux用の、デバイスの差を吸収できるサウンドAPI

Linux用スピーチサーバを作成して感じたことは、音声を使ったインターフェー スのように音が随時動的に生成されて、かつ高いレスポンスが要求されるような 場合、ドライバによって動作がまちまちで統一をとるのが大変ということです。

今回問題になったことの一つは、しゃべっている途中の声を即座に止めて、すぐ 次の声を出す処理です。OSSのAPIにはioctlとして「SNDCTL_DSP_RESET」という ものがあり、これでまだ音になってでていないバッファ内の波形データを捨てて、 次の波形出力の準備ができると思えるものでした。ところが現実には、これを発 行すると音は止まるものの、次の発音時にバッファに残っていた前の波形データ をまず再生し、それから次の音がでてきました。SB Live!ではRESETの後で一度 デバイスをクローズすると音が止まってくれましたが、そうでないデバイスも多いよ うです。

もう一つ困ったのは短い音の再生です。Linuxのサウンドドライバ(OSS系)では、 波形データは内部で一定の大きさのブロックに分けて管理されます。この ブロックがいっぱいになるまでは音の再生が起こりません。ブロックの大きさは ioctlで正しく得られることと得られないことがあります。バッファの大きさ変 更についても同じです。こういうタイミングの問題をうまく処理するために triggerといって、音をあらかじめバッファにためておき、要求されたら即座に 再生するという機能がゲーム向けにあったりしますが、それでは音声を動的につ くるような時にはあまり役立ちません。

この辺の取り扱いがサウンドカードによってまちまちなので、どこでも動くよう なアプリケーションを作成するのが難しくなっています。今はOSSを利用してい て、alsaについても試してみようと思っています。MP3プレーヤーやゲームなど 一般的なアプリケーションとは違った要求ですが、こういうことを必要としてい る用途があるということです。

なにより人が大切です。どのような人がいたらいいかというと・・・。まずプロ グラムが書ける人です。lispとかC/C++が書けるといいですが、経験があればお そらく憶えられます。大切なのは、BEPを繕うとやる気になれること、要求が分 かることです。そういう意味で、BEPのユーザになりうる視覚障害者自身が開発 者として、発案者として関わることもとても重要です。

それからドキュメントが書ける人が必要です。BEPは今の所、日本語のドキュメ ントが非常に不足しています。使おうとしても、参考にしていいものがほとんど 英語で困ってしまうことも多そうです。それと、WEBなどのわかりやすい構成が できる人、あるいはその指摘も歓迎します。

それから、なんといってもユーザです。ユーザがいないと開発は独りよがりにな ります。特に英語をよく使う人、技術系の視覚障害の方、怪しそうだから使って みたい人など、是非使ってみて意見を聞かせてください。よろしくお願いします。


ご意見ご感想はこちらまで:
bep-contact@argv.org

Last Updated: $Date: 2001/12/30 10:58:11 $
Modified by: $Author: inoue $