2 つのチャネルを持つマイクから音を取得する場合、周波数スペクトルを計算するには、次のようにします。
- すべてのデータ入力の高速フーリエ変換を計算しますか?
- 左右の各チャネルの高速フーリエ変換を計算し、両方の平均を作成しますか?
- 左右の各チャネルの高速フーリエ変換を計算し、両方の最大値を取得しますか?
- 別の方法で計算しますか?
2 つのチャネルを持つマイクから音を取得する場合、周波数スペクトルを計算するには、次のようにします。
あなたの 2 チャンネルのマイクには、物理的に分離された入力があると思います。通常、講堂や劇場の反対側です。この場合、各チャネルのフーリエ変換は、そのチャネルの入力の物理的な位置での周波数成分を示します。単純にそれらを平均したり加算したりして意味のある結果を得ることはできません。
チャネル入力間の中間点でスペクトルを取得しようとしている場合、平均化は理にかなっていますが、それ以外の場合は、いくつかの大きな仮定 (要因ではなく反射など) と補間が必要になります。
このデータを意味のある分析を行うには、サウンドがサンプリングされる空間の物理的な形状を考慮する必要があります。探しているものを明確にします。
ああ、あなたの投稿を宿題としてタグ付けしてください。
FFT は線形変換です。したがって、平均化された左右の入力の FFT を取得することは、左右のチャネルごとに 2 つの FFT の平均を取得することと完全に同等です。
しかし、通常はそれらを別々にしておくか、チャネルの 1 つだけを使用するのが理にかなっています。
セットアップが何であるか、およびこの処理の目的を知らなければ、適切な答えを推測することしかできません. 異なる場所に 2 つのマイクがあることを意味していると仮定します。
最初に 2 つのチャネルを追加するか、それぞれをフーリエ変換してから追加すると、悪い結果が得られます。その理由は干渉です。一部の周波数では、ソースは一方のマイクロフォンからは整数の波長になりますが、もう一方のマイクロフォンからは整数と半分の波長になります。これは、オーディオ録音の一般的な初心者の問題です。
おそらく、両方のマイクで聞こえるソースの信号を測定したいのですが、各マイクにローカルなランダムノイズと無関係なソースは無視します。その場合、各チャネルでフーリエを実行し、各周波数で電力 (振幅の 2 乗) を計算し、その対数を取り、2 つのチャネルを平均します。これにより、干渉の問題が回避され、ランダム ノイズが統計的に減少します (完全ではありませんが)。