Python - 执行时中断函数

时间:2016-10-11 20:10:34

标签: python python-3.x text-to-speech voice-recognition

我在python中找到解决问题的方法有些困难。我有一个使用文本到语音的功能,说出给定的短语。我希望能够在中间过程中中断该功能。例如,我的电脑说了很长的段落,我希望它停止说话。我该怎么做有可能吗?

这就是我在做TTS的方式:

os.system('say -v Oliver "' + text + '"')

此致

1 个答案:

答案 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