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

DTalker for Linux の即時停止



小出さんに送ってBEPにCcしたらエラーになったので再送します。

小出さん、リコーの井上です。

Document Talker for Linuxについてです。
現在Bilingual Emacspeak用のスピーチサーバを作成していますが、そこで一
番悩んでいるのが音声の即時停止です。
本体とは別のスレッドで
言語処理→波形処理→オーディオデバイスへの書き込み
を行っています。ここで波形処理と書き込みは一定長のPCMデータを単位とし
て行われるので、このループの中でメインスレッドからの「止まれ!」要求の
ビットをチェックして止まるように書いています。
でも、なかなか急には止まってくれません。
デバッグ出力を見ていると停止用のビットが立ったことは即座にスレッドに伝
わっているのでそこでループから抜けようとするはずなのですが、音はなかな
か止まりません。
おそらくそこまでに処理した分がすでにオーディオデバイスに書き込まれてし
まっているからだと思われます。
そこでですが、LinuxでDTalkerの波形処理したデータを即座にオーディオデバ
イスに書き込んでいるような場合に、音声を即座に止めるよい方法がないか、
詳しい方に聞いていただけないでしょうか。
オーディオデバイスにバッファリングされたデータを出力せずにclose()して
しまうような方法(ioctl等)でもかまいません。
同様のことを行うプログラムの切れ端など見せていただけるとなお助かります。

もちろん明日の発表に間に合わせるとかそういうひどい話ではないので、可能
なときで結構です。
よろしくお願いします。

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...