Распознавание речи в .net проблема - PullRequest
0 голосов
/ 26 марта 2011

Я новичок в распознавании речи и разработал текстовый редактор, который пишет то, что я говорю с ним.У меня проблема с тем, что я могу включить распознавание речи через код, но не могу отключить его.Может кто-нибудь подсказать, пожалуйста, как отключить распознавание речи.Мой код распознавания речи выглядит следующим образом:

//function to start/stop speech recognition

private void enableSpeechRecognitionToolStripMenuItem_Click(object sender, EventArgs e)
{
   listener = new SpeechLib.SpSharedRecoContext();
   //crating a share recognition object
   listener.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(listener_Reco);
   //creating a recgnition event handler object
   grammar = listener.CreateGrammar(0);
   //create grammar interface with ID = 0
   grammar.DictationLoad("", SpeechLoadOption.SLOStatic);
   //setting grammar load type to static
   grammar.DictationSetState(SpeechRuleState.SGDSActive);
   //activating speech dictation
   enableSpeechRecognitionToolStripMenuItem.Checked = true;
   //checked
   toolStripStatusLabel1.Text = "[Speech Recognition Enabled]"; 
}

//function to append the listened text to the text box's text
public void listener_Reco(int StreamNumber, object StreamPosition, SpeechRecognitionType RecognitionType, ISpeechRecoResult Result)
{
   string heard = Result.PhraseInfo.GetText(0, -1, true);
   //setting heard text to a variable
   richTextBox1.Text += " " + heard;
   //appending heard text
}

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Если я не ошибаюсь, SpeechLib - это оболочка COM-взаимодействия для SAPI API .Возможно, вам лучше использовать собственные классы .NET Managed Speech в System.Speech .Статья MSDN , упомянутая в https://stackoverflow.com/questions/5101119/looking-for-a-book-on-net-speech-recognition/5118157#5118157, является хорошим началом.Я опубликовал хороший простой пример, чтобы помочь начать работу с Как лучше всего транскрибировать речь в текст в веб-приложении asp.net? .

Я думаю, вы также используетеобщий распознаватель.Если вы используете собственный экземпляр inproc SpeechRecognitionEngine, у вас будет больше контроля над распознаванием.Общий распознаватель используется для приложений, которые могут управлять рабочим столом Windows или несколькими приложениями.

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

Вы пытались изменить состояние правила или состояние распознавателя? Например, попробуйте

grammar.DictationSetState(SpeechRuleState.SGDSInactive);

Я также согласен с Майклом в том, что вам, вероятно, нужен механизм распознавания inproc, а не общий механизм.

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

Вы пытались удалить обработчик распознавания, когда хотите отключить распознавание речи?

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

...