uwp如何创建和添加用于语音识别的语法文件
目前我尝试在我的UWP应用程序中实现语音识别功能,到目前为止我创建了一个连续听写功能来识别用户的语音,但我希望它只识别语法文件中的单词或阶段,如何为其创建和添加语法?uwp如何创建和添加用于语音识别的语法文件,uwp,speech-recognition,grammar,Uwp,Speech Recognition,Grammar,目前我尝试在我的UWP应用程序中实现语音识别功能,到目前为止我创建了一个连续听写功能来识别用户的语音,但我希望它只识别语法文件中的单词或阶段,如何为其创建和添加语法? 以下是我的持续识别代码: protected async override void OnNavigatedTo(NavigationEventArgs e) { CoreDispatcher dispatcher = CoreWindow.GetForCurrentThread().Dispatcher; Spe
以下是我的持续识别代码:
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
CoreDispatcher dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
SpeechRecognizer 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 = args.Result.Text;
});
}
根据您的需要,您可以将添加到
contSpeechRecognizer
。我已经根据您的段代码创建了一个简单的示例
以下是用作约束的Colors.grxml
文件
contSpeechRecognizer
<grammar xml:lang="en-US"
root="colors"
version="1.0"
tag-format="semantics/1.0"
xmlns="http://www.w3.org/2001/06/grammar">
<!-- The following rules recognize variants of yes and no. -->
<rule id="colors">
<one-of>
<item>
<one-of>
<item>green</item>
<item>yellow</item>
<item>orange</item>
<item>yup</item>
<item>un huh</item>
<item>yay yus</item>
</one-of>
<tag>out="yes";</tag>
</item>
<item>
<one-of>
<item>no</item>
<item>nope</item>
<item>nah</item>
<item>uh uh</item>
</one-of>
<tag>out="no";</tag>
</item>
</one-of>
</rule>
</grammar>
有关更多信息,请参阅
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
dispatcher = CoreWindow.GetForCurrentThread().Dispatcher;
SpeechRecognizer contSpeechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Colors.grxml"));
var grammarFileConstraint = new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(storageFile, "colors");
contSpeechRecognizer.Constraints.Add(grammarFileConstraint);
await contSpeechRecognizer.CompileConstraintsAsync();
contSpeechRecognizer.ContinuousRecognitionSession.AutoStopSilenceTimeout = TimeSpan.FromSeconds(2);
contSpeechRecognizer.ContinuousRecognitionSession.ResultGenerated += ContinuousRecognitionSession_ResultGenerated;
contSpeechRecognizer.ContinuousRecognitionSession.Completed += ContinuousRecognitionSession_Completed;
await contSpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}