Я пишу программу для распознавания речи с микрофона, и код будет обрабатываться соответствующим образом. Код, который я написал для этой цели, приведен ниже.Как я могу заставить python ждать, пока я закончу разговор?
import speech_recognition as sr
import webbrowser
import pyttsx
from time import sleep
engine = pyttsx.init()
engine.setProperty('rate', 70)
r = sr.Recognizer()
def recognize(audio):
try:
return r.recognize(audio)
except LookupError, e:
print e
return ''
with sr.Microphone() as source:
while True:
engine.say("Hi How can i help you ?")
sleep(0.15)
print "Start Speaking"
audio = r.listen(source)
words = recognize(audio)
print("You said " + words)
if words == "Facebook":
engine.say("Shall i open the Facebook page for you ?")
engine.runAndWait()
audio = r.listen(source)
words = recognize(audio)
if words == "Yes":
webbrowser.open('https://www.facebook.com')
elif words == "stop":
break
Здесь я попытался спать также, но прежде, чем говорит двигатель я могу видеть текст Start Говоря получение распечатаны. Вместо сна, есть ли хороший способ захватить речь в микрофоне и ждать, пока что-нибудь скажет что-нибудь или долгое молчание?
Почему вы используете сон? Это не поможет. Вы должны установить пороговое значение для 'audio', которое возвращается' r.listen (source) ', и если' audio' больше порога, тогда вы говорите что-то иначе, это долгое молчание. – ZdaR
Cory .. Не могли бы вы дать мне знать, как я могу установить порог? –
Не существует прямого предположения, так как оно сильно зависит от значений, возвращаемых 'r.listen (source)', вам нужно немного поэкспериментировать и проанализировать вывод для выборки голоса разных высот и выбрать соответствующий. – ZdaR