OSError ошибка при использовании speech_recognition

есть код:

import speech_recognition as sr

def comm():
    r = sr.Recognizer()

    with sr.Microphone() as source:
        print("говорите")
        r.pause_threshold = 1
        r.adjust_for_ambient_noise(source, duration=1)
        audio = r.listen(source)

        try:
            command = r.recognize_google(audio).lower()
            print("вы сказали " + command)
        except sr.UnknownValueError:
            print("-----")
            command = comm()
        return command
comm()

он должен прослушивать микрофон, и выводить распознанную речь. но я получаю ошибку:

 Traceback (most recent call last):
 File "C:/Users/Danil/PycharmProjects/untitled4/voicq.py", line 22, in <module>
 comm()
 File "C:/Users/Danil/PycharmProjects/untitled4/voicq.py", line 9, in comm
 with sr.Microphone(device_index=0) as source:
 File "C:\Users\Danil\PycharmProjects\untitled4\venv\lib\site- 
 packages\speech_recognition\__init__.py", line 138, in __enter__
 self.audio.open(
 File "C:\Users\Danil\PycharmProjects\untitled4\venv\lib\site-packages\pyaudio.py", line 750, in open
 stream = Stream(self, *args, **kwargs)
 File "C:\Users\Danil\PycharmProjects\untitled4\venv\lib\site-packages\pyaudio.py", line 441, in 
 __init__
 self._stream = pa.open(**arguments)
 OSError: [Errno -9998] Invalid number of channels

кто знает почему так происходит и как это исправить, буду рад информации


Ответы (1 шт):

Автор решения: Максим Смирнов

У тебя в ошибке пишет что не тот канал.

import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
    print("Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format(index, name))

запусти и посмотри какой device_index у твоего микрофона и замени у себя в коде

→ Ссылка