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 у твоего микрофона и замени у себя в коде