2012-04-19 117 views
3

私はMicrosoftのSpeech Platform Runtimeで作業しています。私は実行時に必要な文章を書くためにSpVoiceインターフェイスを使用しています。Microsoft Speech API(SAPI)SpVoice停止機能のための方法

Exception from HRESULT: 0x80045006 

私はそれを見て:私はこの

public void StopSpeak() 
{ 
    try 
    { 
     Speaker.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak); 
    } 
    catch (COMException ex) 
    { 

    } 
} 

ように私の機能を作成しました。しかし、音声プラットフォームは、私はこのCOMエラーが出る話している間、私はこれを実行したときに発話途中の文章を停止する

マイクロソフトがこれを手に入れたことは、波装置が忙しいということを意味しています。私は、Speech Platformが文章を喋っているときに毎回このエラーが発生することを認識しています。

スピーチプラットフォームのランタイムに付属のSpVoiceまたは他のインターフェイスまたはクラスを使用して、スピーチ中間の文章を停止する他の方法はありますか?

ありがとうございました。

答えて

1

例外を処理することなくスピーチを停止するには、SpVoiceSkipメソッドを使用します。ドキュメントhere。あなたはAsyncronous 1にSpeechVoiceSpeakFlagsを設定する必要がすべての

public void StopSpeak() 
{ 
    Speaker.Skip("Sentence", int.MaxValue); 
} 
0

まず:それはint.MaxValue文章をスキップしますよう

これは、動作するはずです。そうすれば、あなたはピリオドや句読点で話すことができます。休止方法を介して。

Speaker.Speak( "Long Text Here"、SpeechLib.SpeechVoiceSpeakFlags.SVSFlagsAsync);

Speaker.Pause();

しかし、それが読み始めた文をもう一度終えると、何かがあれば句読点で止まります。シーケンスを切断しません。

厳しいやり方はnullに設定されています。 Speaker = null; を再開してください。停止した場所と続ける場所で、再度設定する必要があります。

関連する問題