SpObjectToken MatchesAttributes Method (SAPI 5.3)

Speech API 5.3
Microsoft Speech API 5.3

Object: SpObjectToken

MatchesAttributes Method

The MatchesAttributes method indicates whether the token matches specified attributes.

     Attributes As String
) As Boolean


Specifies the Attributes.

Return Value

A Boolean variable. If True, the token matches the specified attributes; if False, it does not match.


The following Visual Basic form code demonstrates the use of the MatchesAttibutes method. To run this code, create a form with the following controls:

  • A combo box control called Combo1
  • A command button called Command1
  • A list box called List1

Paste this code into the Declarations section of the form.

The Form_Load procedure initializes a new SpObjectTokenCategory object to the voices category, selects all voices into an ISpeechObjectTokens collection, and loads Combo1 with several attribute declarations. These attributes are intentionally irregular with regard to capitalization, spacing, and spelling.

The Command1 procedure contains a loop that performs a MatchesAttibutes call on each available voice. The name of each voice and the Boolean result of the MatchesAttibutes method is displayed in the list box.

Option Explicit

Dim C As SpeechLib.SpObjectTokenCategory
Dim E As SpeechLib.ISpeechObjectTokens
Dim T As SpeechLib.SpObjectToken

Private Sub Form_Load()
    On Error GoTo EH

    With Combo1
        .AddItem "vendor=microsoft"
        .AddItem "gender=female"
        .AddItem "Gender = Male"
        .AddItem "gender!=male"
        .AddItem "name=Microsoft sam"
        .AddItem "Name != microsoft Sam"
        .AddItem "name=MICROSOFT SAM,gender=female"   'no possible matches
        .AddItem "gedner = male"          'no possible matches
        .ListIndex = 0
    End With

    Set C = New SpObjectTokenCategory   'create new token category object
    C.SetId SpeechCategoryVoices        'init ID of voices category
    Set E = C.EnumerateTokens()         'no parameters -- get all voices

    If Err.Number Then ShowErrMsg
End Sub

Private Sub Command1_Click()
    On Error GoTo EH

    Dim Vname, Vmatch

    List1.AddItem "Test for voices matching """ & Combo1.Text & """"
    List1.AddItem ""

    For Each T In E
        Vname = T.GetDescription
        Vmatch = T.MatchesAttributes(Combo1.Text)
        List1.AddItem "   " & Vname & "  " & Vmatch

    If Err.Number Then ShowErrMsg
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