2016-10-11 17 views
-2

を実行中の機能を中断します。私は、テキストを使用して、指定されたフレーズを言う機能を持っています。途中で機能を中断できるようにしたい。例えば、私のコンピュータは非常に長い段落を言っていて、話を止めたいと思っています。どうすればいい?出来ますか?Pythonは - 私はPythonで私の問題への解決策を見つけるいくつかの困難が生じています

これは私がTTSをやっている方法です:

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

敬具

+0

問題を解決する具体的な方法は、使用しているTTS APIに大きく依存します。 –

+0

実行しようとしているコードの例がありますか? – PrestonM

+0

私は、たとえば 'say" Hello World "@AlexeyGuseynov –

答えて

2

あなたが発言権を終了するKeyboardInterrupt例外を使用することができます。 Popen [サブプロセスの関数]を使ってsayを生成し、プロセスIDを添付して、例外がトリガーされたときにそれを後でkillできるようにする必要があります。

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