SpeechRecoContext SetAdaptationData Method (SAPI 5.4)

Microsoft Speech API 5.4

Interface: ISpeechRecoContext

SetAdaptationData Method

The SetAdaptationData method passes the speech recognition (SR) engine a string of adaptation data.

An application can improve recognition accuracy for dictating uncommon words, or uncommon word groupings by training the SR engine for the new words or word groupings. An application creates or obtains typical text and sends the results to the engine using the SetAdaptationData method.

     AdaptationString As String


  • AdaptationString
    Specifies the AdaptationString.

Return Value



Applications using adaptation data should break the data into small sections (1KB or less) and submit the sections individually. First, specify interest in adaptation events using the ISpeechRecoContext.EventInterests method. The Adaptation event interest is on by default. Then, send a small data section to the SR engine using the SetAdaptationData method, and wait for an ISpeechRecoContext.Adaptation event, which indicates that the adaptation data has been processed. Send all successive data sections in this way. Finally, use the EventInterests method to turn off Adaptation events. Since this event is returned only after an explicit SetAdaptationData call, the event interest does not need to be removed unless an excessive number of words is added and the processing time becomes unacceptable. The Adaptation event indicates that the engine has processed the AdaptationString and that it is ready to accept another SetAdaptationData call.


The following Visual Basic form code demonstrates adding an uncommon word, which raises the recognition context's Adaptation event. To run this code, paste it into the Declarations section of a form that contains no controls.

Option Explicit

Public WithEvents RecoContext As SpSharedRecoContext

Private Sub Form_Load()

    Dim Grammar As ISpeechRecoGrammar
    Dim Recognizer As SpSharedRecognizer

    On Error GoTo EH

    ' Set up speech recognition and grammar:
    Set Recognizer = New SpSharedRecognizer
    Set RecoContext = Recognizer.CreateRecoContext
    Set Grammar = RecoContext.CreateGrammar(1)
    Grammar.DictationSetState SGDSActive

    ' Raise Adaptation event.
    RecoContext.SetAdaptationData "Simmiting"

    If Err.Number Then ShowErrMsg
End Sub

Private Sub RecoContext_Adaptation _
   (ByVal StreamNumber As Long, _
    ByVal StreamPosition As Variant)

    MsgBox "Adaptation data/word(s) just added.", vbInformation

End Sub

Private Sub ShowErrMsg()

    ' Declare identifiers:
    Dim T As String

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

End Sub