如何解决如何在讲话中停止 pyttsx3?
我想停止 pyttsx3。我尝试杀死多进程,但响应时间变慢,我不知道为什么。代码如下:
import pyttsx3
from multiprocessing import Process
def speakfunc(audio):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[0].id)
engine.setProperty('rate',140)
engine.say(audio)
engine.runAndWait()
def speak(audio):
p = Process(target=speakfunc,args=(audio,))
p.start()
while p.is_alive():
if keyboard.is_pressed('q'):
p.terminate()
else:
continue
p.join()
是否有任何选项或替代方法可以在中间停止讲话?
解决方法
尝试使用 try,except 语句,因为在这种情况下,当按下 Ctrl + C
时,它将终止进程。
def speak(audio):
try:
p = Process(target=speakfunc,args=(audio,))
p.start()
except KeyboardInterrupt:
p.terminate()
p.join()
,
try:
#abunchoflines
except('''nameoferror'''):
#anotherbunchoflines
等于说“try (#abunchoflines),如果有错误以error((偶尔,可以为空,解释为'所有错误'))的名字引发,执行(#anotherbunchoflines)”。不太方便,因为 ctrl+c
通常等于 sys. exit(0)
,甚至 os._exit(0)
。有一个 pynput
模块,特别是 pynput.keyboard
可以通过多(线程/处理)来实现。子类? Key
和 Listener
。
示例(没有多(线程/处理)):
from pynput.keyboard import Key,Listener
def show(key):
print('\nYou Entered {0}'.format( key))
if key == Key.delete:#delete key pressed
return False#stop listener
while 1:#collect events until released
with Listener(on_press = show) as listener:
listener.join()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。