Поиск речи (голосовая команда) Настройка языка+региона/культуры?

Вопрос:

Мне нужно получить код языка + региона для службы распознавания речи WP8 по умолчанию. В графическом интерфейсе телефона это находится в разделе «Речь» -> «Язык речи». Как мне получить этот атрибут программно?

ПРИМЕЧАНИЕ. AppResources.ResourceLanguage или AppResources.Culture не предоставляют нужный мне атрибут, поскольку они являются значением только для «Язык+Регион» -> «Язык телефона».

Фон:

Я успешно использовал файл VoiceCommandDefinition.xml (VCD.xml) на английском языке (en-US) в своем приложении WP8. Существуют проблемы при использовании распознавания речи с VCD.xml для конкретного языка для языков, отличных от английского. Если атрибут «Речь» -> «Язык речи» на телефоне не полностью соответствует значению «язык» в файле VCD.xml, ни одна из голосовых команд приложения не будет доступна.

Поэтому, чтобы заставить распознавание речи работать, мне действительно нужно динамически изменять атрибут «lang» в моем VCD.xml при загрузке, чтобы я мог сделать es-US похожим на es-MX в качестве оптимального набора команд на альтернативном языке. Только когда это значение в файле VCD.xml совпадает со значением в «Речь» -> «Язык речи», голосовые команды приложения загружаются в приложение и могут использоваться.

ПРИМЕЧАНИЕ. Параметр «Язык+Регион» -> «Язык телефона» на телефоне определяет только используемое произношение имени приложения, а не фактические команды. Например, «Язык+Регион» -> «Язык телефона» и атрибут «lang» VCD.xml = «es-US», а «Речь» -> «Язык речи» = «es-MX» не приводит к отображению голосовых команд приложения. потому что регионы не совпадают. Важен атрибут «Речь» -> «Язык речи», к которому мне нужно получить программный доступ во время выполнения.

Исследуемые источники:

Я прочитал страницы, связанные с http://msdn.microsoft.com/en-us/library/windows/apps/jj207021%28v=vs.105%29.aspx (среди прочего) перед отправкой этого вопроса, а также на любой форум Stackoverflow или MSDN. страницы, которые казались актуальными.

Спасибо за вашу помощь, если вы можете ее предоставить.

P.S. Я также разместил этот вопрос на Форум по разработке Microsoft Windows Phone 8 без соответствующих ответов, поэтому, если вы ответите здесь и там, я проголосуйте за вас в обоих местах! :-)


person rfreytag    schedule 16.10.2014    source источник


Ответы (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
}

Надеюсь это поможет.

person Ram    schedule 17.10.2014