从多个麦克风录制python

时间:2013-11-06 18:59:50

标签: python audio-recording pcm alsa

我正在尝试使用python同时从多个麦克风录制。我要求录音几乎完全同步,因为我将使用scipy交叉关联音频信号,以便获得声音来自的方向。到目前为止,当我在图表上绘制录制声音的结果时,即使2个麦克风与声源等距,录制也不同步。这是我的代码:

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。在编程时我是初学者,我想也许有更好的方法来做到这一点......

1 个答案:

答案 0 :(得分:0)

要强制两台设备同时启动,ALSA C API已snd_pcm_link

pyalsaaudio不会公开此功能。

相关问题