Гласово разпознаване в Windows Phone 8 (преобразуване на реч в текст)

В допълнение към синтеза на реч,Windows Phone 8 SDK съдържа API за разпознаване на гласова реч и гласови команди. В тази статия ще разгледаме първата част – как можете да разпознавате отделни думи или фрази с помощта на този API.

За да използваме услугите на този API, трябва да активираме следните функции за нашето WP8 приложение: ID_CAP_NETWORKING, ID_CAP_MICROPHONE, ID_CAP_SPEECH_RECOGNITION.

Разрешението ID_CAP_NETWORKING е необходимо поради факта, че процесът на разпознаване не се извършва на устройството, а в облака. Следователно, трябва да сте свързани към мрежата, за да използвате тази функция.

Списъкът с езици, поддържани за разпознаване, е определен в специален речник, който е достъпен при достъп до свойството InstalledSpeechRecognizers.All. Нека поставим ListPicker на страницата, съдържаща всички поддържани езици, както и бутон за стартиране на разпознаването на текст:

Нека попълним ListPicker с информация за наличните езици:

Най-простият код за разпознаване би изглеждал така:

Когато щракнете върху бутона, ще се появи прозорец на операционната система, показващ разпознаване на реч. Този прозорец има редица настройки, които могат да се променят от кода на приложението. Те са достъпни чрез свойството Настройки на обекта SpeechRecognizerUI:

  • ListenText - заглавие на прозореца за разпознаване на реч;
  • ExampleText - пример за това, което потребителят може да каже на устройството (напр. "да/не" на въпрос от една дума);
  • ShowConfirmation - задава дали е необходимо да се показва потвърждение за успешно разпознаване (ако опцията е деактивирана, тогава приложението трябва да поеме отговорността да уведоми потребителя в случай на неуспех);
  • ReadoutEnabled - задава дали фразата да бъде прочетена след товаразпознаване.

Примерен код, който задава параметрите на диалоговия прозорец за разпознаване:

Ако логиката на вашето приложение не изисква показване на системния прозорец за разпознаване на реч, можете да замените използването на метода RecognizeWithUIAsync с RecognizeAsync, който е достъпен чрез свойството Recognizer.

Ако логиката на приложението приеме една от няколко предварително дефинирани фрази като резултат, тогава можете да дефинирате свой собствен речник, който ще се използва при разпознаване. Можете да зададете свой собствен речник чрез свойството Recognizer.Grammars:

В резултат на това получихме приложение, което може да разпознава гласова реч в нашето приложение: