Поделиться через


Указание языка распознавателя речи

Узнайте, как выбрать установленный язык для распознавания речи.

Важные API: ПоддерживаемыеTopicLanguages, ПоддерживаемыеGrammarLanguages, Language

Здесь мы перечислим языки, установленные в системе, идентифицируем язык по умолчанию и выбираем другой язык для распознавания.

Необходимые условия:

Этот раздел опирается на распознавание речи.

Вы должны иметь базовое представление об ограничениях и распознавании речи.

Если вы не знакомы с разработкой приложений Windows, ознакомьтесь с этими разделами, чтобы ознакомиться с технологиями, описанными здесь.

Рекомендации по работе с пользователем:

Для полезных советов по проектированию полезного и вовлекающего приложения с поддержкой речи см. в руководствах по проектированию речи .

Определение языка по умолчанию

Распознаватель речи использует системный язык речи в качестве языка распознавания по умолчанию. Этот язык устанавливается пользователем на экране "Параметры устройства" > "Система" > "Речь" > язык речи.

Мы определяем язык по умолчанию, проверяя статическое свойство SystemSpeechLanguage .

var language = SpeechRecognizer.SystemSpeechLanguage; 

Подтверждение установленного языка

Установленные языки могут различаться между устройствами. Необходимо проверить наличие языка, если он зависит от определенного ограничения.

Заметка Перезагрузка требуется после установки нового языкового пакета. Исключение с кодом ошибки SPERR_NOT_FOUND (0x8004503a) возникает, если указанный язык не поддерживается или не завершена установка.

 

Определите поддерживаемые языки на устройстве, проверив одно из двух статических свойств класса SpeechRecognizer :

  • SupportedTopicLanguages— коллекция языковых объектов , используемых с предопределенной диктовкой и грамматиками веб-поиска.

  • поддерживаемых языков грамматик— коллекция объектов языка , используемых с ограничением списка или файлом спецификации грамматики для распознавания речи (SRGS).

Указание языка

Чтобы указать язык, передайте объект Language в конструкторе SpeechRecognizer .

Здесь мы указываем "en-US" в качестве языка распознавания.

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

Замечания

Ограничение темы можно настроить, добавив SpeechRecognitionTopicConstraint в коллекцию Constraints, а затем вызвать CompileConstraintsAsyncдля коллекции SpeechRecognizer. Возвращается статусРезультатаРаспознаванияРечиTopicLanguageNotSupported, если распознаватель не инициализирован поддерживаемым языком темы.

Ограничение списка настраивается путем добавления SpeechRecognitionListConstraint в коллекцию ограничений SpeechRecognizer, а затем вызова CompileConstraintsAsync. Невозможно указать язык настраиваемого списка напрямую. Вместо этого список будет обработан с помощью языка распознавателя.

Грамматика SRGS — это формат XML с открытым стандартом, представленный классом SpeechRecognitionGrammarFileConstraint . В отличие от пользовательских списков, можно указать язык грамматики в разметке SRGS. Компиляция ConstraintsAsync завершатся с ошибкой SpeechRecognitionResultStatusTopicLanguageNotSupported, если распознаватель не инициализирован на тот же язык, что и разметка SRGS.

Образцы