Я пытаюсь записывать с нескольких микрофонов одновременно с использованием python. Я требую, чтобы записи были почти точно одновременно, поскольку я собираюсь перекрестно сопоставить аудиосигналы с помощью scipy, чтобы получить направление, из которого пришел звук. Пока, когда я рисую результаты записанного звука на графике, записи не синхронизированы, даже если 2 микрофона находятся на одинаковом расстоянии от источника звука. Вот мой код:Запись с нескольких микрофонов python
import alsaaudio
import numpy
inp1 = alsaaudio.PCM(alsaaudio.PCM_CAPTURE,alsaaudio.PCM_NORMAL,'Set')
inp1.setchannels(1)
inp1.setrate(44100)
inp1.setformat(alsaaudio.PCM_FORMAT_S16_LE)
inp1.setperiodsize(1024)
inp2 = alsaaudio.PCM(alsaaudio.PCM_CAPTURE,alsaaudio.PCM_NORMAL,'Set_1')
inp2.setchannels(1)
inp2.setrate(44100)
inp2.setformat(alsaaudio.PCM_FORMAT_S16_LE)
inp2.setperiodsize(1024)
i = int(raw_input('How many samples of recording?'))
amp1 = []
amp2 = []
while i > 0:
l, data1 = inp1.read()
a = numpy.fromstring(data1, dtype='int16')
amp1.extend(abs(a))
l, data2 = inp2.read()
b = numpy.fromstring(data2, dtype='int16')
amp2.extend(abs(b))
i -= 1
Это дает мне 2 аудиосигнала как amp1 и amp2. Я новичок, когда дело доходит до программирования, и я думаю, что, возможно, есть лучший способ сделать это ...
Вы можете попытаться настроить размер периода (setperiodsize) и установить его на меньшее число. Функция read() блокирует, так что может вызывать задержку, которую вы получаете. В качестве альтернативы вы можете попробовать использовать один вход, но записать на 2 канала и использовать один микрофон для каждого канала. Если это будет работать с вашей настройкой, вы обязательно получите синхронную запись. – jeremiahbuddha
Хммм, изменение setperiodsize не помогло. Я не уверен, что могу заставить оба микрофона вести себя как один вход, поскольку каждый USB-микрофон распознается как отдельная звуковая карта от Alsa. – user2961850
Когда я записывал музыку, я использовал бы моно-стерео конвертер, такой как [this] (http://www.amazon.com/Monster-MCL-MST2MF-Female-Adapter/dp/B000HHIOIO/ref=sr_1_28? s = электроника, т.е. = UTF8 & qid = 1383864213 & sr = 1-28 & keywords = mono + to + stereo + adapter) для запуска двух микрофонов на одну стереодорожку. Я коротко осмотрел сеть и не видел ничего подобного для USB, но, возможно, вы могли бы установить что-то с помощью серии 1/4/USB-конвертеров. Если я получу шанс в этот уик-энд, я вырву свои микрофоны и попробую сам код. – jeremiahbuddha