python脚本不等待文件中的输入

时间:2017-07-18 18:02:45

标签: python speech-recognition

我正在尝试使用语音识别制作脚本。所以我有3个文件。 1个文件正在听我正在说的内容,然后将其打印到文件中。另一个脚本正在读取文件并根据文件的说法进行回答。 第三个脚本只是启动另外两个脚本

第一个脚本(stt.py):

import os
import pyttsx
import sys
from pocketsphinx import LiveSpeech, get_model_path
engine = pyttsx.init()
voices = engine.getProperty('voices')

engine.setProperty('voice', 'english+f3')

f = open("test.out", 'w')
sys.stdout = f


model_path = get_model_path()

speech = LiveSpeech(
    verbose=False,
    sampling_rate=16000,
    buffer_size=2048,
    no_search=False,
    full_utt=False,
    hmm=os.path.join(model_path, 'en-us'),
    lm=os.path.join(model_path, 'en-us.lm.bin'),
    dic=os.path.join(model_path, 'cmudict-en-us.dict')
)

f = open("test.out", 'w')
sys.stdout = f
for phrase in speech:
    print (phrase)
    f.write ("end")

第2个脚本(speak.py):

import pyttsx
import sys

engine = pyttsx.init()
voices = engine.getProperty('voices')

f = open("test.out", 'w')
sys.stdout = f

volume = engine.getProperty('volume')
engine.setProperty('voice', 'english+f3')
engine.setProperty('volume', volume-0.10)
engine.say("good morning master, I'm Moas. How can I help you?")
engine.runAndWait



if 'start' in open('test.out').read():
    engine.say("Hello Admin")
else:
   engine.say("I did not understand")
engine.runAndWait()

第3个脚本(start.py)

execfile("speak.py")
execfile("stt.py")

所以当我开始“start.py” 它打开终端,说“早上好主人,即时通讯我怎么能帮助你,我不明白”。 然后它只是坐着等待什么。如果我只运行“speak.py”它就像上面那样说了然后关闭了。

我想要的文件是每隔10秒检查一次文件,看它是否已经改变,然后根据文件的说法进行回答。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我认为问题是您忘记了engine.runandwait

的第二个脚本中的括号