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