Speech_Recognition с помощью Python на компьютерных динамиках - OSError: [Errno -9998] Недопустимое количество каналов
Я пытаюсь использовать модуль Speech_Recognition в python (я использую python 3.7.0) для обнаружения речи, исходящей из динамиков моего компьютера (например, для обнаружения того, что кто-то говорит в звонке по скайпу)
import speech_recognition as sr
def get_speakers_index(list_microphone_names):
list_index = []
for i in range(len(list_microphone_names)):
if "speakers" in list_microphone_names[i].lower():
list_index.append(i)
return list_index
def main():
r = sr.Recognizer()
list_speakers_index = get_speakers_index(sr.Microphone.list_microphone_names())
for speakers_index in list_speakers_index:
mic = sr.Microphone(device_index=speakers_index)
with mic as source:
print("listening")
audio = r.listen(source)
text = ""
try:
text = r.recognize_google(audio)
except Exception as e:
print("Exception " + str(e))
if __name__ == '__main__':
main()
Но на каждом из вариантов динамиков я получаю эту ошибку:
Traceback (most recent call last):
File "C:/Users/User/Desktop/Project/mic.py", line 35, in <module>
main()
File "C:/Users/User/Desktop/Project/mic.py", line 21, in main
with mic as source:
File "C:\Python37\lib\site-packages\speech_recognition\__init__.py", line 141, in __enter__
input=True, # stream is an input stream
File "C:\Python37\lib\site-packages\pyaudio.py", line 750, in open
stream = Stream(self, *args, **kwargs)
File "C:\Python37\lib\site-packages\pyaudio.py", line 441, in __init__
self._stream = pa.open(**arguments)
OSError: [Errno -9998] Invalid number of channels
Я также пытался вводить индексы докладчиков один за другим, чтобы не создавать несколько Microphone()
экземпляров, но это не помогло.
заранее спасибо
1 ответ
Вместо этого попробуйте использовать только микрофон в качестве входа, который микрофон принимает от динамиков. Он упрощает и понятен. Вроде как вот эта программа...
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language='en-us')
print("User said: {query}\n")
except Exception as e:
print(e)
print("I can't hear you sir.")
return "None"
return query