寻找语音(语音命令)语言+地区/文化设置?

时间:2014-10-16 15:19:54

标签: .net windows-phone-8 speech-recognition culture region

问题

我需要检索默认WP8语音识别服务的语言+区域代码。在手机GUI中,这是“语音” - >“语音语言”。如何以编程方式获取此属性?

注意:AppResources.ResourceLanguage或AppResources.Culture不提供我需要的属性,因为它们是“语言+区域”背后的值 - >仅限“手机语言”。

背景

我已成功使用我的WP8应用程序使用英语(en-US)VoiceCommandDefinition.xml(VCD.xml)文件。将语言识别与特定于语言的VCD.xml用于英语以外的语言时会出现问题。如果手机上的“语音” - >“语音语言”属性与VCD.xml上的“lang”值不完全匹配,则无法使用任何应用程序的语音命令。

要使语音识别工作,因此我真的需要在加载时动态更改我的VCD.xml中的'lang'属性,以便我可以使es-US看起来像es-MX作为尽力而为的替代语言命令-组。仅当VCD.xml上的此值与“语音”中的值匹配时 - >“语言”才会使应用程序对应用程序的语音命令加载并可用。

注意:手机上的“语言+区域” - >“电话语言”设置仅确定使用应用程序名称的哪个发音而不是实际命令。示例,“语言+区域” - >“手机语言”和VCD.xml“lang”属性=“es-US”而“语音” - >“语言语言”=“es-MX”不会导致应用程序语音命令出现因为区域不匹配。重要的是'Speech' - >'Speech language'属性,我需要在运行时以编程方式访问它。

研究来源

在提交此问题以及任何似乎相关的Stackoverflow或MSDN论坛页面之前,我阅读了与http://msdn.microsoft.com/en-us/library/windows/apps/jj207021%28v=vs.105%29.aspx(以及其他)相关联的页面。

如果您能提供,请感谢您的帮助。

P.S。我也已将此问题发布到Microsoft Windows Phone 8 Develpoment Forum,但没有相关答案,所以如果你在这里和那里回答我会在两个地方投票给你! :-)

1 个答案:

答案 0 :(得分:1)

string langSetOnPhone = new Windows.Phone.Speech.Synthesis.SpeechSynthesizer().GetVoice().Language;

if (!string.IsNullOrEmpty(langSetOnPhone) && langSetOnPhone == "en-US")
{
   //Do your work here
}
else
{
   //Show relavant message
}

希望这有帮助。