2015-06-19 3 views
-2

Я пишу программу для распознавания речи с микрофона, и код будет обрабатываться соответствующим образом. Код, который я написал для этой цели, приведен ниже.Как я могу заставить 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 Говоря получение распечатаны. Вместо сна, есть ли хороший способ захватить речь в микрофоне и ждать, пока что-нибудь скажет что-нибудь или долгое молчание?

+4

Почему вы используете сон? Это не поможет. Вы должны установить пороговое значение для 'audio', которое возвращается' r.listen (source) ', и если' audio' больше порога, тогда вы говорите что-то иначе, это долгое молчание. – ZdaR

+0

Cory .. Не могли бы вы дать мне знать, как я могу установить порог? –

+0

Не существует прямого предположения, так как оно сильно зависит от значений, возвращаемых 'r.listen (source)', вам нужно немного поэкспериментировать и проанализировать вывод для выборки голоса разных высот и выбрать соответствующий. – ZdaR

ответ

2

Этот метод:

 engine.runAndWait() 

ждет речи, чтобы закончить. Вы должны использовать его не только после engine.say("Shall i open the Facebook page for you ?"), но и после engine.say("Hi How can i help you ?") вместо sleep

Смежные вопросы