【问题标题】:Python, Speech Recognition stuck at 'Listening...'Python,语音识别卡在“正在听...”
【发布时间】:2021-06-05 21:20:29
【问题描述】:

代码停留在监听(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.pause_threshold = 1audio=r.listen(source) 之后插入 print("XYZ") 即可检测该行。
  • 此行下面的任何代码都没有执行。 “audio=r.listen(source)”。
  • 您的问题不是一个好问题(错误的标题、错误的文字……)。请查看help,了解如何提出好的问题。
  • 非常感谢您的建议,我一定会努力改进的。作为这个平台的新手,我的问题可能听起来很糟糕,但我的问题是真实的。

标签: python speech-recognition


【解决方案1】:

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

有这个代码:

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

如果此代码不起作用,一个原因可能是麦克风接收到过多的环境噪音。

解决办法可能是

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-12
        • 1970-01-01
        • 1970-01-01
        • 2012-07-15
        • 2021-07-15
        • 2017-06-30
        • 1970-01-01
        相关资源
        最近更新 更多