在Python中录制多个麦克风
我在使用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 个回答
1
我在问题中犯了一个挺傻的错误。在我发的代码里,我指定了 output_device_index,但其实应该用 input_device_index 来选择录音设备。试着换了不同的输入设备后,我找到一个可以录下所有插入的麦克风。