Перехват ошибок из импортированного модуля

Есть модуль PyAudio в котором при запуске, если нет микрофона по переданному индексу устройства speech_recognition.Microphone(device_index=1). Но если данного устройства нет то появляется ошибка - OSError: [Errno -9998] Invalid number of channels. Вопрос заключается в том чтобы как-то перехватить эту ошибку в Try/Except.
Код взят и уменьшен отсюда --> Видео на YouTube

from time import sleep
import speech_recognition as sr
from fuzzywuzzy import fuzz


def callback(recognizer, audio):
    pass


try:
    r = sr.Recognizer()
    m = sr.Microphone(device_index=1)
    stop_listening = r.listen_in_background(m, callback)
################################################
except OSError:
    print("Микрофон не найден")
#    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#    |||||||||||||||||||||||||||||||||
#          то, что я попробывал
################################################
while True:
    sleep(0.1)

Ошибка:

Exception in thread Thread-1 (threaded_listen):
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\speech_recognition\__init__.py", line 690, in threaded_listen
    with source as s:
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\speech_recognition\__init__.py", line 138, in __enter__      
    self.audio.open(
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9998] Invalid number of channels

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

Автор решения: Kickwall

Ошибка все равно появляется, но теперь ее можно отловить

from time import sleep
import speech_recognition as sr
from fuzzywuzzy import fuzz


def callback(recognizer, audio):
    pass

r = sr.Recognizer()
m = sr.Microphone(device_index=1)

try:                                                       <---+++
    with m as source:                                          +++
        r.adjust_for_ambient_noise(source)                     +++
    except OSError:                                            +++
            print("Микрофон не обнаружен!!!")              <---+++

stop_listening = r.listen_in_background(m, callback)

while True:
    sleep(0.1)
Микрофон не обнаружен!!!
Exception in thread Thread-1 (threaded_listen):
Traceback (most recent call last):
...
OSError: [Errno -9998] Invalid number of channels
→ Ссылка