Linux 中的 speech_recognition 模块不工作,因为它一直在监听并且不前进

The speech_recognition module in Linux does not work as it keeps listening and does not advance

问题是 python3 中的 speech_recognition 模块一直在监听,并没有在代码中进一步推进……这里是:-

import speech_recognition as sr

def takeVoiceInp():
    # Input Voice, Output Text (String)

    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening")
        audio = r.listen(source)
    print("Listened!")
    try:
        print("Recognising!")
        query = r.recognize_google(audio)
        print(f"3[1m  YOU:  3[0m {query}\n")

    except Exception:
        print("Try Again!")
        print("Error:", Exception)

        return "None"
    
    return query


print(takeVoiceInp())

当我 运行 这段代码时,它会在控制台中抛出:-

ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
Listening

就是这样!它永远留在那里!

我打开“设置”,发现 Ubuntu 检测到我的麦克风正常。此外,当我 运行 这个程序时,它还在设置中使用我的麦克风或扬声器的应用程序列表中显示 ALSA plug-in [python3.6](这是唯一一个使用我的麦克风的应用程序)。

由于上面的代码从未打印出 Listened! 句子,因此我可以在这里做什么才能使其正常工作。如果您能提供帮助,或者即使您正在阅读本文,也请提前致谢!

好的....所以我所做的就是在 r.listen(source) 之前添加 r.adjust_for_ambient_noise(source) 并且它工作得很好...看起来在 Windows 中,它有一些自动或环境噪声的默认阈值...好吧,现在的问题是音频的前几秒出现故障或被篡改,因此,如果我立即开始讲话,它会抛出 0 索引错误(未收到音频)。如果你说的时间足够长,它就不会捕捉到你说的前几个词……这可能是因为 Ubuntu/Linux 默认附带的 ALSA 麦克风驱动程序。所以一个大胆的解决方案是:-

from time import sleep

r = sr.Recogniser()
with sr.Microphone() as source:
    audio = r.listen(source)

sleep(1.5)
print("Say something...")

query = r.recognise_google(audio)

这解决了!但是...... ALSA 问题仍然存在......另外,这可能是因为我的麦克风质量不好......好吧就是这样! :)