以下是我在UWP应用页面加载事件中使用的代码,用于启动连续识别会话,但ResultGenerated事件永远不会被触发:
SpeechRecognizer = new SpeechRecognizer();
await SpeechRecognizer.CompileConstraintsAsync();
bool PermissionGained = await CheckMicrophonePermission();
if (PermissionGained)
{
SpeechRecognizer.ContinuousRecognitionSession.ResultGenerated +=
async (s, e1) =>
{
if ((e1.Result != null))
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
async () =>
{
SpeechText.Text = e1.Result.Text;
});
}
};
await SpeechRecognizer.ContinuousRecognitionSession.StartAsync();
我通过做一些小改动让它发挥作用。我在上面的代码下面注册了continuousRecognitionSession.Completed事件:
SpeechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed;
在处理程序中,我再次调用StartAsync,如下所示:
private async void ContinuousRecognitionSession_Completed(SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionCompletedEventArgs args)
{
await SpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
这样代码工作正常,但我想找出为什么它在第一种情况下无法识别或该代码有什么问题。