Конечно, первым шагом в коде является проверка наличия микрофона.
Это сложнее, чем вы думаете. Используя пакет pyaudio , относительно легко обнаружить доступные устройства ввода ...
import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
dev = p.get_device_info_by_index(i)
if dev.get('maxInputChannels', 0) > 0:
print('Input device: ', dev.get('name'))
... но в моей системе есть как минимум четыре различных устройства ввода ... одноэто микрофон для конференций, один - это микрофонный вход от моей гарнитуры, один - микрофон на моей камере, а другой - микрофон на звуковом устройстве USB, которое я использую только для управления набором динамиков. Нет никакого способа программно решить, какой из них я действительно хочу использовать.
Если вы предполагаете простую настройку (например, только один микрофон), вы можете просто попросить PyAudio записать, и он будет использоватьустройство ввода по умолчанию. См. Пример в документации PyAudio для получения более подробной информации:
stream = p.open(input=True, ...)
Кажется, это соответствует вашим требованиям. Если устройства ввода недоступны, произойдет сбой:
>>> s = p.open(input=True, rate=44100, channels=2, format=pyaudio.paInt16)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.7/site-packages/pyaudio.py", line 750, in open
stream = Stream(self, *args, **kwargs)
File "/usr/lib64/python3.7/site-packages/pyaudio.py", line 441, in __init__
self._stream = pa.open(**arguments)
OSError: [Errno -9996] Invalid input device (no default output device)