SpVoice VoiceChange event (SAPI 5.3)
Microsoft Speech API 5.3
Object: SpVoice (Events)
The VoiceChange event occurs when the text-to-speech (TTS) engine detects a change of voice while speaking a stream for the SpVoice object.
SpVoice.VoiceChange( StreamNumber As Long, StreamPosition As Variant, VoiceObjectToken As SpObjectToken)
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 character position in the output stream at which the change of voice occurs.
The ObjectToken of the new voice.
The following Visual Basic form code demonstrates the use of the VoiceChange event. 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 code creates an SpVoice object. The Command1_Click procedure sets the object's Voice property to three different voices, and enqueues a short sentence in each voice. Each time the TTS engine speaks with a new Voice property, a VoiceChange event is raised. The VoiceChange event code displays the name of the new voice in Text1.
Option Explicit Public WithEvents vox As SpeechLib.SpVoice Const cstrText = "my voice just changed." Private Sub Command1_Click() Set vox.voice = vox.GetVoices("name = microsoft mary").Item(0) vox.Speak cstrText, SVSFlagsAsync Set vox.voice = vox.GetVoices("name = microsoft mike").Item(0) vox.Speak cstrText, SVSFlagsAsync Set vox.voice = vox.GetVoices("name = microsoft sam").Item(0) vox.Speak cstrText, SVSFlagsAsync End Sub Private Sub Form_Load() Set vox = New SpVoice End Sub Private Sub vox_VoiceChange(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, _ ByVal VoiceObjectToken As SpeechLib.ISpeechObjectToken) Text1.Text = VoiceObjectToken.GetDescription End Sub