我正在使用speech_recognition和google gTTS库创建一个基于python的命令行个人助理。我目前正在实施的热门话题' Hey Siri'不断运行while循环并在每个循环中进行监听。
但它很慢而且不是很连续。因此它多次错过演讲,是否有更好的选择?
while True:
listen()
def listen():
with sr.Microphone() as source:
audio = Listen.r.listen(source)
try:
recog_speech = str(Listen.r.recognize_google(audio))
if 'Hey Siri' in recog_speech:
print('I am listening')
#listen and do stuff
except Exception as e:
print('Something bad happened')
解决问题的一个可能的解决方案是不说话时不运行循环。
答案 0 :(得分:0)
根据@handle的评论, 一个不拾取背景噪音并避免不必要地运行循环的解决方案是根据我SpeechRecogntion pypi的语音识别文档设置能量阈值。 此外,我不得不在Linux中调整麦克风的输入电平,以免放大输入。
import speech_recognition as sr
r = sr.Recognizer()
r.energy_threshold = 4000
答案 1 :(得分:0)
在我看来,这可行:
with sr.Microphone() as source:
#Calibrates the microphone to differentiate ambient noise from the voice
r.adjust_for_ambient_noise(source)
print("Aguardando por comandos de voz...")
audio = r.listen(source)