OSError:没有可用的默认输入设备

Rhe*_*eaS 6 python speech-recognition

我正在尝试使用 python 中的 SpeechRecognition 包进行语音识别,并在尝试使用麦克风时遇到问题。

我测试了我的耳机麦克风,它工作正常并且正在被我的计算机检测到,但是我的脚本抛出错误,好像没有连接麦克风一样。当我在安装 pyAudio 后运行以下脚本时

$python -m speech_recognition
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

  Traceback (most recent call last):

   File "/home/harshita/anaconda3/lib/python3.6/runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)

    File "/home/harshita/anaconda3/lib/python3.6/runpy.py", line 85, in _run_code
        exec(code, run_globals)

    File "/home/harshita/anaconda3/lib/python3.6/site-packages/speech_recognition/__main__.py", line 4, in <module>
        m = sr.Microphone()

    File "/home/harshita/anaconda3/lib/python3.6/site-packages/speech_recognition/__init__.py", line 86, in __init__
        device_info = audio.get_device_info_by_index(device_index) if device_index is not None else audio.get_default_input_device_info()

    File "/home/harshita/anaconda3/lib/python3.6/site-packages/pyaudio.py", line 949, in get_default_input_device_info
        device_index = pa.get_default_input_device()

    OSError: No Default Input Device Available
Run Code Online (Sandbox Code Playgroud)

并且:

导入语音识别为 sr

sr.Microphone.list_microphone_names()

输出: [ ]

我哪里出错了?

另外,为什么它显示“OSError”?,我看到了其他相关查询,但所有查询都将其作为 IOError。

Kep*_*186 1

首先(对于 Linux 用户),检查以下链接并使用给定的存储库更新您的 Pyaudio 和 Portaudio,因为 Anaconda 的 Pyaudio 和 Portaudio 库中存在错误。

现在,如果它有效,但终端卡在“Speak everything..”上,则意味着库检测到太多噪音,您可以通过在语句后添加以下行来过滤掉它们with

r.adjust_for_ambient_noise(source)
Run Code Online (Sandbox Code Playgroud)

例如:

with sr.Microphone(device_index=2) as source:
    r.adjust_for_ambient_noise(source)
    print("Speak Anything :")
    audio = r.listen(source)
Run Code Online (Sandbox Code Playgroud)

请注意r这里是speech_recognition.Microphone()的实例。

另外,我建议您开始传递要使用的设备的索引,就像我在上面的示例中所做的那样(如下所示device_index=2),并且您可以尝试使用范围为 0 到 4 的索引(可能更多或更少,具体取决于取决于你有多少输入)。