impiyush
impiyush

Reputation: 794

Speech recognition in .net problem

I'm new to speech recognition and have developed a text editor which writes what I speak to it. I'm into a problem that I can enable the speech recognition through code, but cannot disable it. Can anyone please suggest how to disable speech recognition. My speech recognizing code is as follows:

//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
}

Upvotes: 0

Views: 1582

Answers (3)

Eric Brown
Eric Brown

Reputation: 13932

Have you tried changing the rule state or recognizer state? E.g., try

grammar.DictationSetState(SpeechRuleState.SGDSInactive);

I also concur with Michael that you probably want an inproc recognition engine, rather than the shared engine.

Upvotes: 0

Michael Levy
Michael Levy

Reputation: 13287

If I'm not mistaken, SpeechLib is a COM interop wrapper around the SAPI API. You might be better off using the native .NET Managed Speech classes in System.Speech. The MSDN article mentioned in https://stackoverflow.com/questions/5101119/looking-for-a-book-on-net-speech-recognition/5118157#5118157 is a good place to start. I posted a good simple example to help get started in What is the best option for transcribing speech-to-text in a asp.net web app?.

I think you are also using a shared recognizer. If you use you own instance of an inproc SpeechRecognitionEngine, you'll have more control over the recognition. The shared recognizer is used for applications that can control the windows desktop or multiple applications.

Upvotes: 1

Jason
Jason

Reputation: 89082

Have you tried removing the Recognition handler when you want to disable Speech Recognition?

See this question for an example of how to remove an event handler.

Upvotes: 0

Related Questions