UWP 连续语音识别
UWP continuous speech recognition
我正在使用 UWP 创建智能镜像应用程序,我希望用户使用他们的语音来控制该应用程序。到目前为止,我做了一个简单的程序来测试语音识别,它可以工作,但我希望只有当应用程序听到关键字-"Jason"时,它才会开始将语音转换为文本(我叫我的智能mirror Jason) 喜欢:"Jason, show me some news",因为之后我会将文本消息传递给 LUIS 函数。如果句子不是以 "Jason" 开头,则应用程序不会将其转换为文本。我应该怎么做才能实现它? '
private SpeechRecognizer contSpeechRecognizer;
private CoreDispatcher dispatcher;
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
contSpeechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
await contSpeechRecognizer.CompileConstraintsAsync();
contSpeechRecognizer.ContinuousRecognitionSession.ResultGenerated +=ContinuousRecognitionSession_ResultGenerated;
contSpeechRecognizer.ContinuousRecognitionSession.AutoStopSilenceTimeout = TimeSpan.FromDays(1);
contSpeechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed;
await contSpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
private async void ContinuousRecognitionSession_Completed(SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionCompletedEventArgs args)
{
await contSpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
private async void ContinuousRecognitionSession_ResultGenerated( SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionResultGeneratedEventArgs args)
{
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
SpeechResult.Text = args.Result.Text;
});
}
如果您只想使用 "Jason" 作为触发器,您可以只添加
if(speechResult.Contains("Jason")||speechResult.Contains("jason"))
{//Pass the Result to LUIS}
我正在使用 UWP 创建智能镜像应用程序,我希望用户使用他们的语音来控制该应用程序。到目前为止,我做了一个简单的程序来测试语音识别,它可以工作,但我希望只有当应用程序听到关键字-"Jason"时,它才会开始将语音转换为文本(我叫我的智能mirror Jason) 喜欢:"Jason, show me some news",因为之后我会将文本消息传递给 LUIS 函数。如果句子不是以 "Jason" 开头,则应用程序不会将其转换为文本。我应该怎么做才能实现它? '
private SpeechRecognizer contSpeechRecognizer;
private CoreDispatcher dispatcher;
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
contSpeechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
await contSpeechRecognizer.CompileConstraintsAsync();
contSpeechRecognizer.ContinuousRecognitionSession.ResultGenerated +=ContinuousRecognitionSession_ResultGenerated;
contSpeechRecognizer.ContinuousRecognitionSession.AutoStopSilenceTimeout = TimeSpan.FromDays(1);
contSpeechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed;
await contSpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
private async void ContinuousRecognitionSession_Completed(SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionCompletedEventArgs args)
{
await contSpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
private async void ContinuousRecognitionSession_ResultGenerated( SpeechContinuousRecognitionSession sender, SpeechContinuousRecognitionResultGeneratedEventArgs args)
{
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
SpeechResult.Text = args.Result.Text;
});
}
如果您只想使用 "Jason" 作为触发器,您可以只添加
if(speechResult.Contains("Jason")||speechResult.Contains("jason"))
{//Pass the Result to LUIS}