Две проблемы с приложением Speech Recognition C# WPF в Windows7

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

Когда я запускаю его на Win7, я замечаю две вещи.

1) При первом запуске приложения появляется панель распознавания речи (штучка), но пользовательский интерфейс моего приложения не отображается (оно работает, как я вижу в диспетчере задач). Когда я запускаю приложение во второй раз (после уничтожения первого экземпляра), оно отображается нормально (с уже запущенной панелью инструментов распознавания речи Windows).

2) Когда я говорю одно из слов, которые я узнаю в своем приложении во второй раз, оно не запускает событие, а вместо этого выбирает текст в моем приложении, где я распечатываю в списке историю распознанных слов.

Примечание. Когда я удаляю список истории с главного экрана, он работает, как и ожидалось. По-видимому, Win7 сначала пытается найти слово в моем пользовательском интерфейсе, и когда он не может его найти, только тогда он запускает мое программное событие...??

Обе проблемы кажутся мне очень странными.

Дополнительная информация о приложении: это приложение VS2008/.NET 3.0 WPF, написанное на C#. Приложение позволяет пользователю редактировать группы настроек (патчи) для отправки команд Midi. Каждый патч помечен фразой. Когда эта фраза произносится (распознается приложением), все настроенные команды Midi отправляются на выходы. История патчей, которые были вызваны пользователем, печатается в списке «история» на главном экране приложения.

Я надеюсь, что кто-то может помочь мне с этим. Любые предложения приветствуются.

Спасибо, Марк Якоби


person obiwanjacobi    schedule 14.03.2011    source источник


Ответы (2)


Я думаю, вы используете общий распознаватель речи (SpeechRecognizer). Когда вы создаете экземпляр SpeechRecognizer, вы получаете распознаватель, который может совместно использоваться другими приложениями и обычно используется для создания приложений для управления окнами и приложениями, работающими на рабочем столе.

Похоже, вы хотите использовать свой собственный механизм распознавания (SpeechRecognitionEngine). Поэтому вместо этого создайте экземпляр SpeechRecognitionEngine.

см. http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognizer(v=vs.90).aspx

В чем разница между System.Speech .Recognition и Microsoft.Speech.Recognition? и Отключить встроенное распознавание речи команды? также может содержать полезную информацию.

person Michael Levy    schedule 14.03.2011
comment
Отлично выглядит, спасибо! Я посмотрю на это. - person obiwanjacobi; 15.03.2011
comment
Вы также можете увидеть stackoverflow.com/questions/5101119/. Упомянутая статья MSDN полезна. - person Michael Levy; 16.03.2011

У меня все работает, спасибо!

Основное различие между использованием SpeechRecognizer и SpeechRecognitionEngine заключается в следующем:

  • Создайте SpeechRecognitionEngine, используя RecognizerInfo из InstalledRecognizers.
  • Вызовите один из методов SetInputToXxxx.
  • Вызовите RecognizeAsync(RecognizeMode.Multiple), чтобы имитировать события SpeechRecognizer (SpeechRecognized).
  • Вызовите RecognizeCancel/Stop, чтобы выйти.

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

person obiwanjacobi    schedule 16.03.2011