フーリエ分解を使用すると、時間の任意の関数を取得して、それぞれが異なる振幅と周波数を持つ正弦波の合計として記述することができます。ただし、DFT を使用してこの問題に取り組みたい場合は、異なる周波数を区別するために、周波数ドメインで十分な解像度があることを確認する必要があります。それができたら、どの周波数が信号で支配的であるかを判断し、それらの周波数に対応する複数の正弦波で構成される信号を作成できます。サンプリング周波数が 44.1 kHz の場合、256 サンプルのみを見ると、それらの 256 サンプルで検出できる最低周波数は 172 Hz であると言うのは正しいです。
周波数領域で十分な解像度を得る:
「特定の周波数のみ、基本周波数の倍数」の周波数の振幅値は、特定の増分の周波数分解能を持つ DFT ではなく、フーリエ分解に当てはまります。DFT の周波数分解能は、DFT の計算に使用される時間領域信号のサンプリング レートとサンプル数に関連しています。周波数間隔を狭めることで、近接した 2 つの周波数を区別しやすくなります。これには 2 つの方法があります。
- サンプリング レートを下げますが、これにより周期的な繰り返しの周波数がより近くなります。(ここで NyQuist の定理を思い出してください)
- DFT の計算に使用するサンプル数を増やします。256 個のサンプルしか利用できない場合は、値が 0 のサンプルをデータの末尾に追加する「ゼロ パディング」を実行できますが、これには考慮が必要な影響がいくつかあります。
結論に至る方法:
異なるオーディオ信号の周波数成分を個々のグラフに表すと、振幅が少し異なることがわかります。これは、個々の信号のサウンドが同一ではなく、(周囲やハードウェア自体からの) どの信号にも固有のノイズが常に存在するためです。したがって、2 つ以上の DFT 信号の平均をとってノイズを除去し、周波数成分のより正確な表現を取得する必要があります。アプリケーションによっては、キャプチャしているサウンドが時間の経過とともに著しく急速に変化している場合 (スピーチや音楽など)、これが不可能な場合があります。したがって、平均化は、平均化するすべての信号のサウンドがほぼ等しい場合にのみ有効です (「同じもの」を個別に個別に録音した場合)。明確にするために、たとえば 4 つの時間領域信号から、4 つの周波数領域信号を (DFT 法を使用して) 作成し、4 つの周波数領域信号の平均を 1 つの平均周波数領域信号に計算します。これにより、ノイズが除去され、オーディオに固有の周波数がより適切に表現されます。
別の解決策:
信号に特定の数の主周波数 (多すぎない) が含まれていることがわかっていて、これらの周波数だけに関心がある場合は、ピサレンコの高調波分解 (PHD) または複数信号分類 ( MUSIC、素敵な略語です!) これらの周波数 (および対応する振幅値) を見つけます。これは、DFT よりも計算量が少なくなります。例えば。信号に 3 つの主な周波数が含まれていることがわかっている場合、Pisarenko はこれら 3 つの周波数値を返しますが、DFT はより多くの情報を明らかにし、より多くの結論を導き出すことができることに注意してください。