ISpeechRecoGrammar DictationSetState method (SAPI 5.4)

Speech API 5.4
Microsoft Speech API 5.4

Interface: ISpeechRecoGrammar

DictationSetState Method

The DictationSetState method sets the dictation topic state.

     State As SpeechRuleState


A SpeechRuleState constant that specifies the dictation topic state.

Return Value



The following Visual Basic form code demonstrates the use of the DictationLoad, DictationSetState, and DictationUnload methods. It creates a grammar, configures the grammar to perform both dictation and command and control (C and C) recognition, and toggles between the two types of recognition.

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

  • A command button called Command1

Paste this code into the Declarations section of the form.

The Form_Load procedure creates a grammar object, associates it with the system dictation lexicon and the Solitaire C and C grammar, and begins recognition in dictation mode. The Command1_Click procedure toggles the recognition mode between dictation and C and C. The Form_Unload procedure unloads the dictation grammar and deactivates the C and C grammar.

Option Explicit

Dim MyRecoContext As SpeechLib.SpSharedRecoContext
Dim MyGrammar As SpeechLib.ISpeechRecoGrammar

Private Sub Command1_Click()
    On Error GoTo EH

    If Command1.Caption = "&Dictation;" Then
        MyGrammar.CmdSetRuleIdState 0, SGDSInactive     'C&C; off
        MyGrammar.DictationSetState SGDSActive          'Dictation on
        Command1.Caption = "&C; and C"
        MyGrammar.DictationSetState SGDSInactive        'Dictation off
        MyGrammar.CmdSetRuleIdState 0, SGDSInactive     'C&C; on
        Command1.Caption = "&Dictation;"
    End If

    If Err.Number Then ShowErrMsg
End Sub

Private Sub Form_Load()
    On Error GoTo EH

    'Create a RecoContext and its Grammar
    Set MyRecoContext = New SpSharedRecoContext
    Set MyGrammar = MyRecoContext.CreateGrammar

    'Get dictation grammar and set it inactive
    MyGrammar.DictationLoad "", SLOStatic
    MyGrammar.DictationSetState SGDSInactive

    'Get Command & Control grammar, and set it inactive
    MyGrammar.CmdLoadFromFile "C:\SOL.XML", SLOStatic
    MyGrammar.CmdSetRuleIdState 0, SGDSInactive

    'Set dictation active and set up Command1.Caption
    MyGrammar.DictationSetState SGDSActive
    Command1.Caption = "&C; and C"

    If Err.Number Then ShowErrMsg
End Sub

Private Sub Form_Unload(Cancel As Integer)
    On Error GoTo EH

    MyGrammar.CmdSetRuleIdState 0, SGDSInactive

    If Err.Number Then ShowErrMsg
End Sub

Private Sub ShowErrMsg()

    ' Declare identifier:
    Dim T As String

    T = "Desc: " & Err.Description & vbNewLine
    T = T & "Err #: " & Err.Number
    MsgBox T, vbExclamation, "Run-Time Error"

End Sub