Чтение вывода звуковой карты с помощью Python
Я успешно использовал pyaudio для чтения и записи данных с микрофона. Я хотел бы сделать то же самое для вывода звуковой карты. (т.е. воспроизведение wavfile и открытие потока с помощью pyaudio и считывание покадрового вывода звуковой карты).
Для чтения микрофона я открыл поток pyaudio, как показано ниже
stream = pyaud.open(
format = pyaudio.paInt16,
channels = 1,
rate = 22050,
input_device_index = 0,
input = True)
когда я изменяю input_device_index на 1, я получаю следующую ошибку
IOError: [Errno Неверное количество каналов] -9998
Ниже system_info для звуковой карты MacBook
Default Devices:
================
Default Input Device : 0
defaultSampleRate: 44100.0
defaultLowOutputLatency: 0.01
defaultLowInputLatency: 0.00199546485261
maxInputChannels: 2
structVersion: 2
hostApi: 0 (Core Audio)
index: 0
defaultHighOutputLatency: 0.1
maxOutputChannels: 0
name: Built-in Microph
defaultHighInputLatency: 0.0121541950113
--------------------------------
Default Output Device: 1
defaultSampleRate: 44100.0
defaultLowOutputLatency: 0.00655328798186
defaultLowInputLatency: 0.01
maxInputChannels: 0
structVersion: 2
hostApi: 0 (Core Audio)
index: 1
defaultHighOutputLatency: 0.0167120181406
maxOutputChannels: 2
name: Built-in Output
defaultHighInputLatency: 0.1
--------------------------------
Любая помощь приветствуется!!
П.
1 ответ
Некоторые звуковые карты имеют каналы Capture, которые являются выходными данными звуковой карты. Они могут работать, а могут и не работать правильно (похоже, музыкальная индустрия пыталась ликвидировать эти порты).
Следующее для Linux... Например. в моей системе только стандартный встроенный аудиопорт ALC887. В /proc/asound/card0 я нахожу порт pcm2c со следующей информацией:
card: 0
device: 2
subdevice: 0
stream: CAPTURE
id: ALC887-VD Alt Analog
name: ALC887-VD Alt Analog
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1
Эти устройства захвата должны появиться в вашем аудио микшере.