2014-09-02 150 views
0

我在使用兩個以上的麥克風usig pyaudio時遇到了一些麻煩。我有一個Scarlett 18i20混音設備,我想連接幾個麥克風(最多8個),然後通過pyaudio捕捉音頻流。進口pyaudio後,我得到以下標準輸入設備:在python中錄製多個麥克風

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

在我的問題中有一個相當愚蠢的錯誤。在我發佈的代碼中,我指定了output_device_index,而這當然應該是用於選擇記錄設備的input_device_index。用不同的輸入設備玩耍,我找到了一個,我可以記錄所有插入的麥克風。