指定语音识别器语言

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

重要 API支持主题语言支持语法语言语言

在这里,我们将枚举系统上安装的语言,确定哪个语言是默认语言,并选择不同的语言进行识别。

先决条件

本主题在 语音识别的基础上展开。

你应该对语音识别和识别约束有基本的了解。

如果你不熟悉开发 Windows 应用,请查看这些主题来熟悉此处讨论的技术。

用户体验指南:

有关设计有用且引人入胜的启用了语音的应用的有用提示,请参阅 语音设计指南

标识默认语言

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

通过检查 SystemSpeechLanguage 静态属性来标识默认语言。

var language = SpeechRecognizer.SystemSpeechLanguage; 

确认已安装的语言

已安装的语言可能因设备而异。 如果依赖于某个特定约束,则应验证语言是否存在。

注意 安装新语言包后需要重新启动。 如果指定的语言不受支持或尚未完成安装,则会引发错误代码SPERR_NOT_FOUND(0x8004503a)异常。

 

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

指定语言

若要指定语言,请在 SpeechRecognizer 构造函数中传递 Language 对象。

在这里,我们将“en-US”指定为识别语言。

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

注解

可以通过将 SpeechRecognitionTopicConstraint 添加到 SpeechRecognizer约束 集合中,然后调用 CompileConstraintsAsync() 来配置主题约束。 如果识别器未使用支持的主题语言进行初始化,则返回的 SpeechRecognitionResultStatusTopicLanguageNotSupported

通过将 SpeechRecognitionListConstraint 添加到 SpeechRecognizerConstraints 集合中,然后调用 CompileConstraintsAsync,来完成列表约束的配置。 不能直接指定自定义列表的语言。 相反,将使用识别器的语言处理列表。

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

示例