2016-08-22 16 views
1

我正在使用Windows通用应用程序,并且需要制作一个语音命令,其中需要用户语句并填写屏幕中的字段。这些字段的例子包括姓名和出生日期。我无法使用SRGS文件,因为我不知道所有名称,并且添加所有可能的名称都不起作用。有没有办法指出通配符值将显示在哪里,然后从命令中获取该值?谢谢!UWP一致性语音识别通配符

回答

1

我认为你可以使用Predefined grammars,AKA主题约束作为约束条件SpeechRecognizer

可以指定SpeechRecognitionTopicHint场景是这样的:

var dictationConstraint = new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.FormFilling, "Person Name"); 

一起添加SRGS文件作为约束,这个话题约束到SpeechRecognizer

var dictationConstraint = new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.FormFilling, "Person Name"); 
var grammarfileConstraint = new SpeechRecognitionGrammarFileConstraint(sgrsFile); 
speechRecognizer.Constraints.Add(dictationConstraint); 
speechRecognizer.Constraints.Add(grammarfileConstraint); 

虽然不能确保100%由于口音,噪音或其他可能的干扰而正确地获得您的语音输入,但它会自动尽力将您的语音输入转换为“人名”主题。

+0

感谢您的答案,但我有问题。例如,如果我有“搜索John Smith”的句子。我能否使用“Person Name”键来返回名称“John Smith”? – NotMike

+0

@NotMike,是的,这是可能的,你可以捕获语音输入,并将名称与本地数据库或名称列表匹配,这是关于如何处理语音识别器的结果。我的答案是可以接受的答案吗? –