作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 SpeakAsync() 方法来朗读一些文本。但是,在我调用 Speak() 之前它不会开始说话。我不想调用 Speak()。如果我从此代码中删除 Speak() 方法,则根本不会调用任何内容:
using (SpeechSynthesizer synth = new SpeechSynthesizer())
{
synth.SelectVoice("ScanSoft Emily_Dri20_22kHz");
synth.Rate = 10;
synth.Volume = 100;
synth.SpeakAsync("oh, i'm a lumberjack and i'm okay! I sleep all night and I work all day!");
synth.SpeakAsync("If he was dying he wouldn't bother writing ah! He'd just say it!");
synth.Speak("i don't want to go on the cart.");
synth.SpeakAsync("We don't have a lord. We're an anarcho-syndicalist commune.");
synth.SpeakAsync("If you do not show us the grail, we shall take your castle by force!");
synth.Speak("what do you mean, an african swallow or a european swallow?");
更新:
看来其他人也有这个问题,但还没有找到解决方案:
最佳答案
这是因为 Speak
是一个保持程序运行的阻塞调用。由于您将其作为控制台应用程序运行,因此在代码末尾添加 Console.ReadKey();
以确保应用程序保持运行直到用户按下某个键。
否则,主线程将退出,因为 SpeakAsync
会立即返回,因此您的程序会飞过所有这些行然后退出,这就是您听不到任何声音的原因。
根据评论更新-
using
block 几乎立即处理了 SpeechSynthesizer
,这就是什么都听不到的原因。您可以将 Console.ReadKey();
放在 using
block 的右大括号之前,或者删除 using
block 并手动处理它稍后的。
关于c# - SpeechSynthesizer.SpeakAsync 方法不会立即说话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809931/
我正在尝试使用 SpeakAsync() 方法来朗读一些文本。但是,在我调用 Speak() 之前它不会开始说话。我不想调用 Speak()。如果我从此代码中删除 Speak() 方法,则根本不会调用
我是一名优秀的程序员,十分优秀!