1

私のアプリは複数回呼び出しSpeechSynthesizer.SpeakTextAsyncているため、ほとんどのテキストは話される前にキューに追加されます。ユーザーがスピーチをキャンセルし、まだキューにあるすべてのものを破棄できるようにしたいと考えています。

SpeechSynthesizer.CancelAllどちらかまたはいずれかを呼び出してみSpeechSynthesizer.Disposeましたが、いずれかのメソッドが呼び出されたときにアプリがクラッシュします。

Windows Phone 8 での音声合成のキャンセルを見てきましたが、アプリが複数の音声をキューに追加するため、Task.Cancel機能していないようです。

4

2 に答える 2

0
private static SpeechSynthesizer synth;

public async static Task<SpeechSynthesizer> SpeechSynth(string dataToSpeak)
        {
            synth = new SpeechSynthesizer();
            IEnumerable<VoiceInformation> englishVoices = from voice in InstalledVoices.All
                                                          where voice.Language == "en-US"
                                                          && voice.Gender.Equals(VoiceGender.Female)
                                                          select voice;
            if (englishVoices.Count() > 0)
            {
                synth.SetVoice(englishVoices.ElementAt(0));
            }

            await synth.SpeakTextAsync(dataToSpeak); 

            return synth;
        }  


public static void CancelSpeech()
        {
            synth.CancelAll();
        }

好きな場所に電話してSpeechSynth("Some Data to Speak")、キャンセルしたいときはいつでも に電話してくださいCancelSpeech()

終わった!楽しみ...!

于 2016-08-22T11:42:24.423 に答える