Две проблемы с приложением WPF распознавания речи C# на Windows7

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

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

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

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

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

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

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

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

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

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? и отключить встроенные команды распознавания речи? может также иметь некоторую полезную информацию.

Я получил это работает, спасибо!

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

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

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

Другие вопросы по тегам