在PowerShell 5.1.18362.752中,当我尝试执行以下命令时:Add-Type -AssemblyName System.Speech; $x = New-Object System.Speech.Synthesis.SpeechSynthesizer; $x.Speak('Hello. This is a sentence.')
我似乎无法在讲话时用Ctrl + C中断它。整个输入被大声读出。有什么办法可以阻止它自己完成吗?我知道我可以关闭PowerShell来立即停止讲话,但是我正在寻找更优雅的方法,尤其是因为PS重新启动需要花费一秒钟或几秒钟的时间-对于我的用例,我需要能够快速中断讲话无需用户等待几秒钟即可开始其他操作。
最佳答案
您应该调用SpeakAsync()
异步方法,而不是阻塞的Speak()
。
然后,您可以使用SpeakAsyncCancelAll()
轻松停止讲话
Add-Type -AssemblyName System.Speech;
$x = New-Object System.Speech.Synthesis.SpeechSynthesizer;
$x.SpeakAsync('Hello. This is a very very very very long sentence.')
Start-Sleep 1
$x.SpeakAsyncCancelAll()
在microsoft docs中可以找到许多有用的信息。
关于powershell - 如何在PowerShell完成之前中断和停止TTS引擎?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61708360/