如何避免使用c#中文本转语音功能后的延迟

本文关键字:功能 语音 延迟 文本 何避免 中文 | 更新日期: 2023-09-27 17:54:32

如何在c#中使用文本转语音功能后避免延迟,如何在语音合成器后避免延迟。请讲,我想让我的定时器立即启用。

SpeechSynthesizer sr = new SpeechSynthesizer();
sr.Rate = 1;
sr.Volume = 100;
sr.Speak("mytext");
timer1.enabled=true; /*how to run this line immediately, not wating for    sr.speak */

如何避免使用c#中文本转语音功能后的延迟

您需要使用异步版本的Speak。如果这个不可用,那么你可以创建一个线程在后台运行Speak。

SpeechSynthesizer sr = new SpeechSynthesizer();
sr.Rate = 1;
sr.Volume = 100;
//the following starts a background thread
Task.Factory.StartNew(
  () =>
     {
        //this anon method will be run in a background thread
        sr.Speak();
        SpeakCallBack();
     });

当定义SpeakCallBack时,确保Invoke有任何UI代码

private async void speakSomething(string message)
{
  SpeechSynthesizer sr = new SpeechSynthesizer();
  sr.Rate = 1;
  sr.Volume = 100;
  await sr.Speak(message);
}

然后,在你的主函数或刚才的方法中…

speakSomething("my text");
timer1.enabled=true;