-1

Mp3 ファイルのフーリエ変換を取得したい.このために、最初にそのファイルを使用して読み取りAudioInputStream、次に必要なオーディオ形式に変換します。

AudioFormat decodedFormat = newAudioFormat(AudioFormat.Encoding.PCM_SIGNED,
        baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
        baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);

それは私に配列の非常に巨大なバイトを与えています。次に、このバイト配列を小さなサイズのチャンク (4096 バイト) に分割し、それをフーリエ変換関数に渡し、配列全体に対して続行します。このプロセスはシステムを遅くします。単一の mp3 曲を処理するのに 15 分かかります。では、どうすればこの問題を解決できますか? 私はフーリエ変換のためにこのコードを使用しています- http://introcs.cs.princeton.edu/java/97data/FFT.java.html

4

1 に答える 1

1

4kポイントで9000FFTを生成するのに900秒(15分)かかる場合(つまり、FFTあたり100ms)、FFTの実装は壊れています。

(はるかに)より効率的なFFT実装を見つける必要があります。

于 2013-03-05T21:03:17.830 に答える