SpVoice AudioLevel event (SAPI 5.4)
Microsoft Speech API 5.4
Object: SpVoice (Events)
The AudioLevel event occurs when the text-to-speech (TTS) engine detects an audio level change while speaking a stream for the SpVoice object.
SpVoice.AudioLevel( StreamNumber As Long, StreamPosition As Variant, AudioLevel As Long )
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 audio level change occurs.
The new audio level.
The following Visual Basic form code demonstrates the use of the AudioLevel event. To run this code, create a form with the following controls:
- A command button called Command1
- A text box called Text1
- A list box called List1
Paste this code into the Declarations section of the form.
The Form_Load code creates an SpVoice object, adds AudioLevel to its event interests, and places sample text in Text1. The Command1_Click procedure speaks the text in Text1. The Word event code displays each word spoken. The AudioLevel event code converts each new audio level to a string of asterisks, effectively displaying the audio levels in a graph format.
Option Explicit Public WithEvents vox As SpeechLib.SpVoice Private Sub Command1_Click() List1.Clear vox.Speak Text1.Text, SVSFlagsAsync + SVSFIsXML End Sub Private Sub Form_Load() ' SVEAudioLevel not in default EventInterests -- must be added! Set vox = New SpVoice vox.EventInterests = vox.EventInterests Or SVEAudioLevel Text1.Text = "audio levels change often" End Sub Private Sub vox_AudioLevel(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, _ ByVal AudioLevel As Long) List1.AddItem String(AudioLevel, "*") 'AudioLevel value sets length of string End Sub Private Sub vox_Word(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, _ ByVal CharacterPosition As Long, ByVal Length As Long) List1.AddItem Mid(Text1.Text, CharacterPosition + 1, Length) End Sub