Python,语音识别停留在 'Listening...'

Python, Speech Recognition stuck at 'Listening...'

代码停留在监听(audio=r.listen(source) 行)并且没有超出它。没有错误消息或其他任何内容。

我的代码:

import speech_recognition as sr

def takeCommand():
    '''
    It takes user's voice as input
    '''
    r=sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening...")
        r.pause_threshold = 1
        audio=r.listen(source)

try:
    print("Recognizing...")
    query = r.recognize_google(audio, language="en-in")
    print(f"Recognized Command: {query}")

except Exception as e:
    print(e)
    print("I didn't recognize what you said please repeat")
    return "None"

return query


takeCommand()

我没有使用这个库;但我认为 r.listen(source) 是一个阻塞函数(方法)。阻塞方法是一种阻止代码继续执行直到完成 (returned) 的方法。您的应用正在等待 r.listen(source) 完成。

你应该在它前面加上print("Recognizing...")。此外,当我阅读 here 时,r.listen(source) 将在检测到静音(可能在语音之后)时 return 结果(完成)。所以你的代码应该在检测到静音后继续执行。

我刚刚查看了您在评论中发布的link

有这个代码:

with mic as source:
    audio = r.listen(source)

如果此代码不起作用,原因之一可能是麦克风拾取了过多的环境噪音。

解决方案可能是

with mic as source:
    r.adjust_for_ambient_noise(source)
    audio = r.listen(source)

解决方案是您必须在 listen() 方法中设置一些参数。

例如:

audio=r.listen(source,timeout=8,phrase_time_limit=8)