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

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

Важные API-интерфейсы: SupportedTopicLanguages, SupportedGrammarLanguages, Language

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

Предварительные условия.

В данной статье используются материалы статьи Распознавание речи.

От вас требуется понимание основных принципов распознавания речи и знание соответствующих ограничений.

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

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

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

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

В качестве языка по умолчанию распознаватель речи использует язык для голосовых функций, установленный в системе. Этот язык устанавливает пользователь на устройстве, в разделе «Параметры» > «Система» > «Речь» > «Язык голосовых функций».

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

var language = SpeechRecognizer.SystemSpeechLanguage; 

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

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

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

 

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

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

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

Определение языка

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

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

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

Комментарии

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

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

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

Примеры