問題タブ [kissfft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1319 参照

android - AndroidのリアルタイムFFTから可能な限り最も正確な可聴周波数データを取得するにはどうすればよいですか?

そこで私は、特定の音の検出とフィルタリングを含むプロジェクトの前兆として、リアルタイムオーディオアナライザーとして機能するAndroidアプリを構築しようとしています。

ですから、離散フーリエ変換の基本は理解できたと思いますが、リアルタイムの周波数解析を行うために最適なパラメーターは何かわかりません。

理想的な状況(無制限の計算能力)では、AudioRecordクラスから取得した44100サンプル/秒のPCMストリームからすべてのサンプルを取得し、44100要素のFIFO「ウィンドウ」( 2 ** 16は0で、おそらくテーパー関数ですか?)、新しいサンプルが入るたびにウィンドウでFFTを実行します。これにより、(私は)0〜22KHzのスペクトルが1秒あたり44100回更新されます。 。

これはスマートフォンでは起こらないようです。問題は、可能な限り多くの品質を維持しながら、Galaxy Nexusで扱いやすくするために、計算のどのパラメーターを減らす必要があるかわからないということです。最終的には、より感度の高い外部マイクを使用したいと思います。

FFTを取得する間にウィンドウを複数のサンプルで移動する必要があると思いますが、どの時点で、これが小さいウィンドウでFFTを実行するよりも、精度/エイリアシング/その他に悪影響を与えるかどうかはわかりません。私が見落としているオプション。

libgdxから使用しているネイティブに実装されたKissFFTを使用すると、44100サンプルあたり30〜42の44100要素FFTを実行でき、それでも応答性があります(つまり、AudioRecord.readを実行しているスレッドからバッファーがいっぱいになります) ()は、fftを実行しているスレッドがそれを排出できるよりも速くいっぱいになりません)。

だから私の質問は:

  1. 私が現在得ているパフォーマンスは、私が得ようとしている最高のものでしょうか?それとも、はるかに速い速度が可能であるため、私は何か愚かであるに違いないように思われますか?
  2. これに対する私のアプローチは少なくとも根本的に正しいですか、それとも私は完全に間違った木を吠えていますか?

質問に答えるのに役立つコードがあれば喜んで表示しますが、たくさんあるので、すべてを投稿するのではなく、選択的に表示することにしました。

0 投票する
1 に答える
1421 参照

opencv - FFTW fftwf_plan_r2r_2d() と同等の FFTW_REDFT01

FFTW を使用するコードを KissFFT を使用するように移植しようとしています。
コードはfftwf_plan_r2r_2d()with をFFTW_REDFT01使用します。

KissFFT での同等の呼び出しは何ですか?

この呼び出し ( with ) が DCT と同等である場合、代わりにOpenCVFFTW_REDFT01などの直接 DCT 変換を使用できますか? 反射や対称化など、必要な入力データの変更はありますか?cv::dct

0 投票する
1 に答える
453 参照

c++ - Tizen のリアルタイム FFT から可能な限り正確なオーディオ周波数データを取得するにはどうすればよいですか?

現在Tizen IDEに取り組んでいます。

マイクから入力データを読み取り、それに FFT を適用しました...しかし、毎回 nan 出力を取得します。

ここに私のコードがあります..

FFT を適用します。

0 投票する
2 に答える
317 参照

c++ - std::vector を変換するにはどうすればよいですか& samples2 を kiss_fft_scalar* サンプルに変換しますか?

現在、入力データにkissFFTを使用しています..

std::vector& samples2 に入力データがあり、KissFFT で必要な形式に変換したい..

これを変換するために次のコードを使用しています。

しかし、最後に私は差分値を取得しています助けてください..

ここに私のコードがあります

助けてください

0 投票する
2 に答える
2148 参照

c++ - KissFFT を使用してピークを計算するにはどうすればよいですか?

実機にFFTをかけ、そこからピークを算出したい

ここに私のコードがあります..

ここで、コードを使用してピックを計算します。しかし、毎回0を返します

ここでは常にpeak=0になります。助けてください

最初の 25 個の FFT サンプルのスペクトル出力は次のとおりです。

0 投票する
1 に答える
301 参照

fft - Kiss FFTで計画を定義して実行するにはどうすればよいですか

次の内容に間違いはありませんか?

次と等しいか: ?

cfg = fftw_plan_dft_c2r_1d(dim, in , out, FFTW_ESTIMATE);
fftw_execute(cfg);

0 投票する
1 に答える
213 参照

gcc - Kissfftr の異なる結果 x86 - Atheros AR9331

これはstackoverflowに関する私の最初の質問であり、残念ながら私の英語は貧弱です。でもやってみたい。

Kissfft の twotonetest のカスタマイズされたルーチンは、2 つの異なるシステムで非常に異なる結果をもたらします。

x86 プログラムの gcc で変換された ubuntu の下では、正しい値が得られます。Arduino YUN (Atheros AR9331) プログラム用に変換された openWRT SDK では、誤った値が表示されます。FIXED_POINT の定義が無視されているようです。

定義は次のとおりです。

関数:

同じファイルからの 16 ビット サウンドの入力サンプルとして使用されます。結果は、たとえば-3dBから-15dBまで異なります。Aどこからトラブルシューティングを開始できますか?