ISpeechVoiceStatus InputSentenceLength Property (SAPI 5.3)

Speech API 5.3
Microsoft Speech API 5.3

Interface: ISpeechVoiceStatus

InputSentenceLength Property

The InputSentenceLength property retrieves the length of the sentence currently being spoken by the text-to-speech (TTS) engine.

The InputSentenceLength property of an ISpeechVoiceStatus object is valid only when its RunningState property is SRSEIsSpeaking.


Set: (This property is read-only)
Get: Long = ISpeechVoiceStatus.InputSentenceLength


The owning object.
Set: (This property is read-only)
Get: A Long variable returning the sentence length.


The following Visual Basic form code demonstrates the use of the InputSentenceLength and InputSentencePosition properties of an ISpeechVoiceStatus object. To run this code, create a form with the following controls:

  • A command button called Command1
  • A text box called Text1
  • Set the HideSelection property of Text1 to False

Paste this code into the Declarations section of the form.

The Form_Load procedure creates a voice object and places sample sentences in the text box. The Command1_Click procedure speaks the contents of the text box asynchronously and loops until the voice finishes speaking. In this loop, the code uses InputSentencePosition and InputSentenceLength properties to highlight each sentence in the text box as it is spoken by the TTS engine. A RunningState property of SRSEDone indicates that the voice has finished speaking.

Option Explicit

Dim V As SpeechLib.SpVoice

Private Sub Command1_Click()

    Dim ii As Integer
    Dim S As SpeechLib.ISpeechVoiceStatus

    On Error GoTo EH

    V.Speak Text1.Text, SVSFlagsAsync   'Speak the user-editable text

    'Check status periodically
        For ii = 0 To 5000
        Next ii

        Set S = V.Status    'Get status in an ISpeechVoiceStatus object

        'Text1.HideSelection must be False for this selection to be seen!

        Text1.SelStart = S.InputSentencePosition
        Text1.SelLength = S.InputSentenceLength

    Loop Until V.Status.RunningState = SRSEDone 'Exit when voice stops

    Text1.SelLength = 0

    If Err.Number Then ShowErrMsg
End Sub

Private Sub Form_Load()

    On Error GoTo EH
    Set V = New SpVoice
    Text1.Text = "One sentence. Another sentence. Still one more sentence."

    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