我在 VB.net 中使用 SpeechSynthesizer()
如何检测说话者何时说出所有数据?
我有这个代码:
repetitionCounter = 0
Do
speaker.SpeakAsync(textIntroduction.Text)
repetitionCounter += 1
If repetitionCounter = repeatXNumberOfTimes Then
MsgBox("Done")
Exit Do
End If
Loop
但是,只要 Do 开始,MsgBox 就会立即出现。我认为这是因为它将 .SpeakAsync 命令加载到内存中,因此,repeatXNumberOfTimes 立即完成。
我可以将代码更改为:
speaker.Speak(textIntroduction.Text)
这现在有效。但是,表单“锁定”,然后我无法与表单交互。我已经尝试实现 Application.DoEvents(),但表单仍然“锁定”。
当演讲者完成演讲而不锁定表格时,如何获得通知?
另外,如果我希望扬声器无限次播放某些文本,我应该如何实现呢?
*更新
这是我的代码:
Dim speaker As New SpeechSynthesizer()
Public Event SpeakCompleted As EventHandler(Of SpeakCompletedEventArgs)
Dim handler As EventHandler(Of SpeakCompletedEventArgs)
在 Form_Load() 中,我添加了以下代码:
AddHandler speaker.SpeakCompleted, handler
那应该怎么做?当 SpeakCompleted 事件被触发时,我在哪里编写要执行的代码?