指定语音识别器语言

了解如何选择要用于语音识别的安装语言。

重要 APISupportedTopicLanguagesSupportedGrammarLanguagesLanguage

此处,我们枚举了已安装在系统上的语言、标识了默认语言,并选择了不同的语言以供识别。

先决条件:

本主题围绕语音识别展开。

你应该已经大致了解了语音识别和识别约束。

如果你还不熟悉 Windows 应用开发,请仔细阅读这些主题来熟悉此处讨论的技术。

用户体验指南:

有关设计出既实用又有吸引力且支持语音的应用的有用提示,请参阅语音设计指南

识别默认语言

语音识别器使用系统语音语言作为其默认识别语言。 用户可在设备的“设置”>“系统”>“语音”>“语音语言”屏幕上设置此语言。

我们通过查看 SystemSpeechLanguage 静态属性来识别默认语言。

var language = SpeechRecognizer.SystemSpeechLanguage; 

确认已安装的语言

已安装的语言在不同的设备之间可能会不同。 如果对于特定的约束你依赖于某种语言,你应验证是否存在该语言。

注意 在安装新的语言包后,必须重新启动。 如果指定的语言不受支持或未完成安装过程,将引发异常,其错误代码为 SPERR_NOT_FOUND (0x8004503a)。

 

通过检查 SpeechRecognizer 类的下列两种静态属性之一,来确定设备上受支持的语言:

指定语言

要指定一种语言,请将 Language 对象传入 SpeechRecognizer 构造函数。

此处,我们将“en-US”指定为识别语言。

var language = new Windows.Globalization.Language("en-US"); 
var recognizer = new SpeechRecognizer(language); 

注解

可对主题约束进行配置,方法是将 SpeechRecognitionTopicConstraint 添加到 SpeechRecognizerConstraints 集合,然后调用 CompileConstraintsAsync。 如果识别器未使用支持的主题语言进行初始化,则将返回 TopicLanguageNotSupportedSpeechRecognitionResultStatus

可对列表约束进行配置,方法是将 SpeechRecognitionListConstraint 添加到 SpeechRecognizerConstraints 集合,然后调用 CompileConstraintsAsync。 你无法直接指定自定义列表的语言。 该列表将改为使用识别器的语言进行处理。

SRGS 语法是由 SpeechRecognitionGrammarFileConstraint 类表示的开放式标准 XML 格式。 与自定义列表不同,你可以在 SRGS 标记中指定语法语言。 如果识别器未使用与 SRGS 标记相同的语言进行初始化,CompileConstraintsAsync 将失败并返回 TopicLanguageNotSupportedSpeechRecognitionResultStatus

示例