2

WinampやWindowsMediaPlayerで見られるように、オーディオデータでFFTを使用してアナライザーを出力しています。ただし、出力はそれほど見栄えがよくありません。対数目盛を使用してプロットしており、FFTからの線形結果を対応する対数ビンに平均化します。例として、私は次のようなビンを使用しています。

16k、8k、4k、2k、1k、500、250、125、62、31、15 [hz]

次に、周波数[hz]に対して振幅(dB)をプロットします。グラフは間違いなく音楽に「反応」し、ドラムサンプルや高音の声の反応を見ることができます。ただし、グラフは低周波数に非常に「飽和」しており、全体的には、より均等に分散される傾向があるアプリケーションで見られるものとはあまり似ていません。視覚的な出力を表示するアプリは、データの見栄えを良くするためにデータに対してさまざまなことを行う傾向があると思います。

データを一般的な音楽プレーヤーアプリのように見せるために、データにどのようなことができますか?

いくつかの有用な情報:私はシングルチャネル、32kHzにダウンサンプリングし、35msの時間ウィンドウを指定します。これは、FFTが最大1100ポイントを獲得することを意味します。これらの値を実験のために変更します(つまり、16kHzを試し、間隔の長さを増減します)が、同様の結果が得られます。

4

3 に答える 3

4

FFTが1100ポイントの場合、多くの周波数分解能で低周波数をキャプチャすることはおそらく不可能です。

考えてみてください。30Hzは33msの周期に相当し、32kHzでは約1000サンプルです。したがって、この時間でキャプチャできるのは約1期間のみです。

したがって、これらの低周波数を鋭い周波数分解能でキャプチャするには、より長いFFTウィンドウが必要になります。

低周波数で著しく高い周波数分解能を得るには、4000サンプル以上の時間枠が必要になる可能性があります。1秒あたり約8〜10のスペクトル更新を取得できるため、これも問題ありません。

高周波ビンの非常に高速な更新が必要であるが、低周波数での良好な周波数分解能が必要な場合の1つのオプションも、高周波ビンをより迅速に更新することです(現在使用しているウィンドウなど)が、低周波数を計算しますビンの頻度は低くなります(また、良好な周波数分解能のために必要なウィンドウが大きくなります)。

于 2011-10-20T04:27:11.433 に答える
0

一般的なビジュアライザーは、単一のFFTではなく、一定Qのバンドパスフィルターを使用します。

FFTの結果に周波数領域での一定Qのフィルター応答のセットを乗算し、合計することで、一定のQバンドパスフィルターのセットをエミュレートできます。低周波数の場合、最低周波数フィルターの有意なインパルス応答よりも長いFFTを使用する必要があります。高周波の場合は、応答性を高めるために短いFFTを使用できます。データをオーバーラップ(再利用)することにより、任意の長さのFFTを任意の更新レートでスライドさせることができます。または、補間を検討することもできます。また、周波数帯域間の「スペクトル漏れ」を減らすために、各FFTを事前にウィンドウ処理することもできます。

于 2011-10-20T15:47:44.397 に答える
0

これらのアプリケーションの多くには可変FFTビンがあると思います。

あなたができることは、あなたが持っているように非常に広い等間隔のFFTビンから始めて、次に各FFTビンに配置された要素の数を追跡することです。一部のビンがまったく使用されていない場合(通常はより高い周波数)、それらのビンを広げて大きくし(したがって、より多くの周波数エントリを持ちます)、低周波数のビンを細断します。

私はプロジェクトに取り組んできましたが、特定の入力ソースのビンを調整するのに多くの時間を費やしましたが、ソフトウェアをリアルタイムで調整する方がはるかに優れています。

于 2011-10-20T00:21:49.370 に答える