首页 > 解决方案 > Linux中的speech_recognition模块不起作用,因为它一直在听并且不前进

问题描述

问题是speech_recognitionpython3中的模块一直在监听并且没有在代码中进一步前进......这里是: -

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"\033[1m  YOU:  \033[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!从上面的代码中永远不会打印出这句话。如果您能够提供帮助,或者即使您正在阅读本文,请提前致谢!

标签: pythonpython-3.xspeech-recognitionalsa

解决方案


好的....所以我所做r.adjust_for_ambient_noise(source)的只是在之前添加r.listen(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 问题仍然存在......另外,这可能是因为我的麦克风质量不好......嗯,就是这样!:)


推荐阅读