指定语音识别器语言
了解如何选择要用于语音识别的安装语言。
重要 API:SupportedTopicLanguages、SupportedGrammarLanguages、Language
此处,我们枚举了已安装在系统上的语言、标识了默认语言,并选择了不同的语言以供识别。
先决条件:
本主题围绕语音识别展开。
你应该已经大致了解了语音识别和识别约束。
如果你还不熟悉 Windows 应用开发,请仔细阅读这些主题来熟悉此处讨论的技术。
用户体验指南:
有关设计出既实用又有吸引力且支持语音的应用的有用提示,请参阅语音设计指南。
识别默认语言
语音识别器使用系统语音语言作为其默认识别语言。 用户可在设备的“设置”>“系统”>“语音”>“语音语言”屏幕上设置此语言。
我们通过查看 SystemSpeechLanguage 静态属性来识别默认语言。
var language = SpeechRecognizer.SystemSpeechLanguage;
确认已安装的语言
已安装的语言在不同的设备之间可能会不同。 如果对于特定的约束你依赖于某种语言,你应验证是否存在该语言。
注意 在安装新的语言包后,必须重新启动。 如果指定的语言不受支持或未完成安装过程,将引发异常,其错误代码为 SPERR_NOT_FOUND (0x8004503a)。
通过检查 SpeechRecognizer 类的下列两种静态属性之一,来确定设备上受支持的语言:
SupportedTopicLanguages - 可与预定义的听写语法和 Web 搜索语法一起使用的 Language 对象的集合。
SupportedGrammarLanguages - 可与列表约束或语音识别语法规范 (SRGS) 文件一起使用的 Language 对象的集合。
指定语言
要指定一种语言,请将 Language 对象传入 SpeechRecognizer 构造函数。
此处,我们将“en-US”指定为识别语言。
var language = new Windows.Globalization.Language("en-US");
var recognizer = new SpeechRecognizer(language);
注解
可对主题约束进行配置,方法是将 SpeechRecognitionTopicConstraint 添加到 SpeechRecognizer 的 Constraints 集合,然后调用 CompileConstraintsAsync。 如果识别器未使用支持的主题语言进行初始化,则将返回 TopicLanguageNotSupported 的 SpeechRecognitionResultStatus。
可对列表约束进行配置,方法是将 SpeechRecognitionListConstraint 添加到 SpeechRecognizer 的 Constraints 集合,然后调用 CompileConstraintsAsync。 你无法直接指定自定义列表的语言。 该列表将改为使用识别器的语言进行处理。
SRGS 语法是由 SpeechRecognitionGrammarFileConstraint 类表示的开放式标准 XML 格式。 与自定义列表不同,你可以在 SRGS 标记中指定语法语言。 如果识别器未使用与 SRGS 标记相同的语言进行初始化,CompileConstraintsAsync 将失败并返回 TopicLanguageNotSupported 的 SpeechRecognitionResultStatus。
相关文章
示例