我在python中找到解决问题的方法有些困难。我有一个使用文本到语音的功能,说出给定的短语。我希望能够在中间过程中中断该功能。例如,我的电脑说了很长的段落,我希望它停止说话。我该怎么做有可能吗?
这就是我在做TTS的方式:
os.system('say -v Oliver "' + text + '"')
此致
答案 0 :(得分:2)
您可以使用KeyboardInterrupt异常来结束发言权。你需要使用Popen [subprocess]的函数来产生说法,并附加一个进程ID,以便稍后在触发异常时将其终止。
import signal
import subprocess
try:
# spawn process
proc = subprocess.Popen(["say", "-v Oliver \"{}\"".format(text)],
stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
# Terminal output incase you need it
(out, err) = proc.communicate()
except KeyboardInterrupt:
# function to kill the subprocess
os.killpg(os.getpgid(proc.pid), signal.SIGTERM)
pass