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

Re: 返: ssが音を出さなくなる問題と白藤さんの解決案 (長文)



白藤です。
音がだぶる現象はこちらでも確認できました。
あと、今日2回Speech Engine が死んだ(vwsapiky使用の場合と同じ)
ので、パッチ自体に問題があります。

koide wrote
>小出です。
>
>問題は、
>1.Stopを連続して送ったときに、以後読まなくなる。
>2.Queしているのに、だぶって音声が聞こえる
>ということですか?
>
>1.の問題はもう少しタイミングを考えてみないとわからないのですが、
>AudioResetをかけたときは、必ずTextDataDoneが発生するので
>そのときの処理(Queのリリース等)を見直すべきです。
私のソースは強引にQueueを解放しているのでだめですね。
TextDataDoneでキューの処理をするとなると、たぶん別スレッドですよね。
VMSinkにVoiceManager::m_speaking のクリティカルセクションが見える
ようにしないと問題がおきそうですね。
# static member にしてpublic から見えるようにするだけか。

今回のソースで、日本語をしゃべらなくなる現象がキューの管理に
あることはだいたい分かってきたので、そこを中心にもう一度調べ
なおします。キューの動きを頭にしっかりとたたき込みます。
# 今日の午後は会社が休みなので、ゆっくりと調べます。

>
>2.は音声エンジンが違うものに対しては、1つのQue管理で行うときは
>AudioStop eventを利用しないとダブってしまいます。
>TextDataDoneというのは、エンジンが次のデータを受け付けられるという
>タイミングで、その時点では1秒ぶんぐらい音が未出力のケースがあります。
>ただし、同じエンジンであればエンジンのなかでQue管理を行っているので、
>重なることなく順繰りに出力されます。
>ですから、ひとつのエンジンを使うのであればQue管理は必要なく、
>かまわずTextDataで出力してしまえばよいということにもなります。
>そして、AudoResetですべて消えてくれますし・・・。
>
>AudioStop Eventは音が完全に消えてから発生するするので、
>このタイミングで、次のデータを出力すればエンジンが違っていても
>重なることはありませんが、AudioStop Eventは気になる人には
>気になるくらいの時間が空く傾向があります。
>
うーむ。分からないです。
でも、コードの追加で発生したバグなので今の所は気にする必要は
なさそうです。修正するときは、この事を考えながらやってみます。


// Name : Hideki Shirafuji
//
// mailto:shirafuji@mail.com