単一のオーディオ カードの複数のインターフェイスからサウンドをキャプチャしようとしています。互いに相対的にシフトされていない配列を取得できますか? 4 つのマイク (チャネルごとに 1 つのインターフェイスに 2 つのマイク) を使用して、サウンド エミッターの位置を検出したいのですが、Windows を使用しているため、集約デバイスを作成できません。異なるスレッドからのサウンドも録音しましたが、アレイ間の遅延は非常にランダムでした。これが主な問題です。配列に相互相関関数を適用して最大値を与える遅延(シフト)を取得したいためです。このシフトは音源に対する角度を定義するため、ASIO に対して異なるものを使用できますが、すべてに対して安定している必要があります。記録間隔。C# の解決策がない場合、私は C++ を知っています。私の問題を解決する方法を教えてください。
1 に答える
0
すべてのマイクが同じハードウェア デバイスに接続されている場合、デバイスに実際に ASIO ドライバーがあると仮定すると、ASIO を使用できます。そうでない場合は、ASIO4All を試すか (ただし、独立したデバイスを同期するかどうかはわかりません)、WASAPI を使用して手動で同期を実行できます。WASAPI の IAudioCaptureClient::GetBuffer メソッドは、ストリーム位置と位置が記録されたストリーム時間の両方を提供します。そこから、4 つのマイクのそれぞれの間の時間シフトを計算し、自分で「シフト解除」を実行できるはずです。
于 2016-05-25T22:00:44.120 に答える