在python中录制多个麦克风

时间:2014-09-02 09:37:42

标签: python audio audio-recording pyaudio

我在使用两个以上的麦克风时遇到一些麻烦。我有一个Scarlett 18i20混音设备,我想连接几个麦克风(最多8个),然后通过pyaudio捕获音频流。导入pyaudio后,我得到以下标准输入设备:

In[34]:
s=pyaudio.PyAudio()
s.get_default_input_device_info()

Out[34]: 
{'defaultHighInputLatency': 0.18,
 'defaultHighOutputLatency': 0.18,
 'defaultLowInputLatency': 0.09,
 'defaultLowOutputLatency': 0.09,
 'defaultSampleRate': 44100.0,
 'hostApi': 0L,
 'index': 1L,
 'maxInputChannels': 18L,
 'maxOutputChannels': 0L,
 'name': u'Eingang (Scarlett 18i20 USB)',
 'structVersion': 2L}

我可以使用以下代码轻松访问前两个麦克风:

p = pyaudio.PyAudio()

stream = p.open(format=pyaudio.paInt16,
                channels=18,
                rate=44100,
                input=True,
                frames_per_buffer=1024,
                output_device_index=1)

for i in range(0, 1000):
    data = stream.read(CHUNK)
    frames.append(data)

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open('out.wav', 'wb')
wf.setnchannels(18)
wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))
wf.setframerate(44100)
wf.writeframes(b''.join(frames))
wf.close()

我试图为18个输入通道提供的所有不同输入设备执行该代码。结果总是一样的,我得到一个包含18个通道的wav文件,但只有前两个包含信号。其他渠道都是空的。 Focusrite设备工作正常,我可以通过设备附带的混音应用程序查看麦克风级别。

我真的很感激任何帮助......我不是编程专家,但我真的需要让这个工作起作用。

谢谢!

1 个答案:

答案 0 :(得分:1)

我的问题中有一个非常愚蠢的错误。在我发布的代码中,我指定了 output_device_index ,而这当然应该是用于选择录制设备的 input_device_index 。使用不同的输入设备,我找到了一个,我可以记录所有插入的麦克风。