【问题标题】:Asio, c#, recording sound from microphone and line inputs simultanouslyAsio,c#,同时从麦克风和线路输入录制声音
【发布时间】:2016-05-15 10:20:48
【问题描述】:

我正在尝试从单个声卡的多个接口捕获声音。我可以得到不相对于彼此移动的数组吗?我想使用 4 个麦克风(每个通道的一个接口中有 2 个麦克风)来检测声音发射器的位置。我使用 Windows,所以我无法创建聚合设备。我还录制了来自不同线程的声音,但数组之间的延迟非常随机。这是主要问题,因为我想对数组应用互相关函数以获得给出最大值的延迟(移位),这种移位定义了声源的角度,所以我可以使用任何与 ASIO 不同的东西,但它必须对所有人都稳定记录间隔。如果没有 c# 的解决方案,我知道 c++。请告诉我如何解决我的问题。

【问题讨论】:

    标签: c# audio asio


    【解决方案1】:

    如果所有麦克风都连接到同一个硬件设备,您可以使用 ASIO,假设该设备实际上有 ASIO 驱动程序。如果没有,您可以尝试 ASIO4All(但我不知道它是否会同步独立设备)或使用 WASAPI 并手动执行同步。 WASAPI 的 IAudioCaptureClient::GetBuffer 方法将为您提供流位置和记录位置的流时间,从那里您应该能够计算出 4 个麦克风之间的时间偏移,然后自己执行“取消偏移”。

    【讨论】:

    • 感谢您的回答,我使用 ASIO4ALL 解决了我的问题,它给出了每个输入通道的值列表,我收到的数组之间几乎没有区别(常量值大约 17 个样本和 1-6 个样本随机移位)。所以我决定只使用 3 个麦克风(其中一个向线路输入和麦克风输入发送相同的信号,所以我可以在阵列之间进行转换)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多