人間に近い精度でリアルタイムにオーディオ信号の周波数成分を抽出する最も効率的な方法
私はFFTのような方法で任意のオーディオサンプル(通常は音楽)の周波数成分を抽出する方法を(可能であれば)解決しようとしていますが、FFTアルゴリズムの研究では、いくつかの問題があることを学んでいますこの目的のための厳しい制限。 FFTが提示する3つの問題があります。 FFTビン解像度はウィンドウサイズと同等であるため、かなり妥当な精度(1 Hzなど)を達成するには、不当に長いウィンドウ(1秒など)が必要です。これは、トランジェントまたは新しく導入された周波数をすばやく検出できないことを意味します。また、より高速なCPUとより高いサンプルレートでは問題を解決できないことを意味します。制限は本質的に時間に関係しています。 人間は周波数を対数的に知覚しますが、FFTビンは直線的に間隔が空けられます。例えば私たちの公聴会のローエンドでは20Hzの違いがある巨大なハイエンドでは20Hzの差が知覚できないのに対し、。したがって、低周波数で必要な精度を得るには、高周波数で必要なものよりもはるかに多くを計算する必要があります。 これらの問題の一部は、FFTビン間を補間することで解決できます。これは、多くの音楽オーディオで機能する場合があります。これは、周波数が非常に離れていることが多く、1つの周波数しかビンのペアに漏れないためです。しかし、特にパーカッシブな楽器のような不協和音の場合、これは必ずしも当てはまりません。したがって、補間は実際には単なる当て推量です。 DFT / FFTアルゴリズムの理解から、出力(ビンの振幅)は事実上、各ビンの周波数でのサイン/コサインの相関です。ビンの周波数が非線形に間隔を空けるようにアルゴリズムを再設計できると(つまり、異なるサイン/コサインのセットを相関させると)、すべての周波数で音響心理学的に等しい解像度を達成できると思います。これは可能ですか、それとも関係する数学の私の不完全な理解に基づく空想ですか? 興味のあるすべての周波数でサイン/コサインを相関させることで、ブルートフォースで問題を解決することもできたと思います。これは可能ですか?どのような効率ですか?問題は解決しますか? 信号のより正確でリアルタイムの周波数分解を実現する別の方法はありますか?CPUの効率は懸念事項ですが、大きな懸念事項ではありません-理論的にはまったく実行できるかどうかに部分的に興味があります。ただし、最新のデスクトップマシンでリアルタイムで実行可能なものが理想的です。