在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/

10-11 08:42