在Python中录制多个麦克风

0 投票
1 回答
5546 浏览
提问于 2025-04-19 08:48

我在使用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 来选择录音设备。试着换了不同的输入设备后,我找到一个可以录下所有插入的麦克风。

撰写回答