2016-05-15 151 views
0

我試圖從單個聲卡的幾個接口捕獲聲音。我可以獲得不相對於彼此移位的數組嗎?我想使用4個麥克風(每個通道一個接口有2個麥克風)來檢測聲音發射器的位置。我使用Windows,所以我無法創建聚合設備。我還錄製了不同線程的聲音,但是陣列之間的延遲非常隨機。這是主要的問題,因爲我想應用數組的互相關函數來獲得最大值的延遲(shift),這個移位定義了聲源的角度,所以我可以使用與ASIO不同的任何東西,但它必須是穩定的記錄間隔。如果沒有解決方案的C#,我知道C++。請告訴我如何解決我的問題。Asio,c#,同時錄製來自麥克風和線路輸入的聲音

回答

0

如果所有話筒都連接到同一個硬件設備上,你可以使用ASIO,假設設備實際上有ASIO驅動。如果沒有,您可以嘗試ASIO4All(但我不知道它是否會同步獨立設備)或使用WASAPI並手動執行同步。 WASAPI的IAudioCaptureClient :: GetBuffer方法將爲您提供記錄位置的流位置和流時間,從那裏您應該能夠計算出4個話筒之間的時間偏移,然後自己執行「不移動」。

+0

謝謝你的回答,我使用ASIO4ALL解決了我的問題,它給出了每個輸入通道的值列表,我接收的數組之間幾乎沒有區別(約17個樣本的常量值和1-6個隨機移位樣本)。所以我決定只使用3個麥克風(其中一個發送相同的信號到線路輸入和麥克風輸入,所以我可以在陣列之間切換)。 – roma2341