SpVoice EndStream event (SAPI 5.4)

Speech API 5.4
Microsoft Speech API 5.4

Object: SpVoice (Events)

EndStream Event

The EndStream event occurs when the text-to-speech (TTS) engine reaches the end of a stream while speaking for the SpVoice object.

The StartStream and EndStream events can be used together to determine the duration of a stream being spoken.

     StreamNumber As Long,
     StreamPosition As Variant


The stream number which generated the event. When a voice enqueues more than one stream by speaking asynchronously, the stream number is necessary to associate an event with the appropriate stream.
The ending character position in the output stream.


The following Visual Basic form code demonstrates the use of the StartStream and EndStream events. To run this code, create a form with the following controls:

  • A command button called Command1
  • A text box called Text1

Paste this code into the Declarations section of the form.

The Form_Load procedure puts a text string in Text1 and creates a voice object. The command1_Click procedure calls the Speak method. This will cause the TTS engine to send the EStream event and EndStream events to the voice. The StartStream event code changes the color of the text in the text box to red; the EndStream event changes the color back to black.

The text color change in this example has no significance other than showing the duration of the text stream.

Option Explicit

Public WithEvents vox As SpeechLib.SpVoice

Private Sub Command1_Click()
    vox.Speak Text1.Text, SVSFlagsAsync
End Sub

Private Sub Form_Load()
    Set vox = New SpVoice
    Text1.Text = "This text turns red while being spoken."
End Sub

Private Sub vox_EndStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
    Text1.ForeColor = vbBlack
End Sub

Private Sub vox_StartStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
    Text1.ForeColor = vbRed
End Sub