SpeechRecoContext RecognizerStateChange Event (SAPI 5.4)

Speech API 5.4
Microsoft Speech API 5.4

Interface: ISpeechRecoContext Events

RecognizerStateChange Event

The RecognizerStateChange event occurs when the SR engine changes state.

     StreamNumber As Long,
     StreamPosition As Variant,
     NewState As SpeechRecognizerState


Specifies the stream number.
Specifies the position within the stream.
A SpeechRecognizerState constant specifying the new state of the speech recognition (SR) engine.


The following Visual Basic form code demonstrates the use of the RecognizerStateChange event. The application displays the recognition text but also has a button to control the SR engine's state (also called the recognizer). Click this button to toggle the recognizer state between Active and Inactive. The application also beeps after a state change.

To run this code, create a form with the following controls:

  • A command button called Command1
  • A label called Label1

Paste this code into the Declarations section of the form.

The Form_Load procedure creates and activates a dictation grammar.

Public WithEvents RC As SpSharedRecoContext
Public myGrammar As ISpeechRecoGrammar

Private Sub Command1_Click()
    If RC.Recognizer.State = SRSActive Then
        RC.Recognizer.State = SRSInactive
        Command1.Caption = "SRSInactive"
        RC.Recognizer.State = SRSActive
        Command1.Caption = "SRSActive"
    End If
End Sub

Private Sub Form_Load()
    Set RC = New SpSharedRecoContext

    Set myGrammar = RC.CreateGrammar
    myGrammar.DictationSetState SGDSActive

    Command1.Caption = "SRSActive"
End Sub

Private Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult)
    Label1.Caption = Result.PhraseInfo.GetText
End Sub

Private Sub RC_RecognizerStateChange(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal NewState As SpeechLib.SpeechRecognizerState)
End Sub