Две проблемы с приложением WPF распознавания речи C # на Windows7 - PullRequest
2 голосов
/ 14 марта 2011

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

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

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

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

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

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

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

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

Thanx, Марк Якоби

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

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

0 голосов
/ 16 марта 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...