gpt4 book ai didi

c# - 为什么UWP连续语音识别会停止

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:33 24 4
gpt4 key购买 nike

我有一个 Windows 10 UWP 应用程序,我正在为文本框启用语音识别。是的,我知道我也可以为此利用 Cortana。然而,Cortana 也有一些缺点,主要是您几乎无法从应用程序内部控制 Cortana。

这就是 SpeechRecognizer 命名空间的连续识别的用武之地。我喜欢我拥有的控制量。但是,它似乎在几秒钟后随机停止收听。

我是这样实现的。请注意,我还尝试将每个可能的超时设置为 0,这应该意味着没有超时。

页面上的属性:

private SpeechRecognizer speechRecognizer;
private CoreDispatcher dispatcher;

为页面加载:

speechRecognizer = new SpeechRecognizer();
speechRecognizer.Timeouts.BabbleTimeout = TimeSpan.FromSeconds(0);
speechRecognizer.Timeouts.InitialSilenceTimeout = TimeSpan.FromSeconds(0);
speechRecognizer.Timeouts.EndSilenceTimeout = TimeSpan.FromSeconds(0);
speechRecognizer.ContinuousRecognitionSession.AutoStopSilenceTimeout = TimeSpan.FromSeconds(0);

SpeechRecognitionCompilationResult result = await speechRecognizer.CompileConstraintsAsync();
speechRecognizer.ContinuousRecognitionSession.ResultGenerated += ContinuousRecognitionSession_ResultGenerated;
speechRecognizer.StateChanged += SpeechRecognizer_StateChanged;

然后,当我点击一个按钮开始收听时,我会这样做:

if (speechRecognizer.State == SpeechRecognizerState.Idle)
{
await speechRecognizer.ContinuousRecognitionSession.StartAsync();
}

最后,我监听了上面的两个事件处理程序,分别是 ResultGenerated 和 StateChanged。我在这两个事件中设置了断点。当页面加载时,一切都被实例化了。当我单击按钮开始收听时,它也开始正常,我看到 StateChanged 事件处理程序触发以表明它正在收听。但是,如果我让应用程序闲置(不说话)几秒钟(秒数似乎是随机的,可以在 2-5 秒之间的任何地方),StateChanged 事件将触发并说它再次闲置。在那之后,当我尝试说话时我无法触发 ResultGenerated 事件,这进一步表明它不再收听了。

我可以点击按钮再次开始收听,它会再次随机停止。

此外,如果我立即说话,在我单击按钮后,语音识别就可以正常工作。

我想要发生的是当您单击按钮时,我希望它无限期地监听,直到我调用 StopAsync 并告诉它停止。有谁知道为什么它会自行停止???

更新- 我添加了完成的事件处理程序:

speechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed;

因为这会在 args.Status 中给我一个状态,我在那里放置了一个断点。有趣的是,当连续识别停止时,这个断点将在 2-5 秒内命中,并且它给出“成功”状态,即使我没有说任何话并且 ResultGenerated 事件从未触发并没有结果。那么,没有结果怎么会成功呢?为什么这会导致它停止?

谢谢!

最佳答案

所以我遇到了同样的问题并遇到了这个问题。我想我最终弄明白了。问题在于,当 UWP 应用程序从前台运行(如切换到另一个应用程序)时,语音识别器将停止(没有任何事件)。

调试时,当然会在您设置断点时发生这种情况。我认为当 SpeechRecognizer 再次进入前台时,通过重新启动它可以解决此问题。

关于c# - 为什么UWP连续语音识别会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com