2

信号処理は初めてで、FFT を使用して 2 つのオーディオ ファイルを比較しようとしています。ファイルをバイト単位で読み取り、複素数に変換してから fft に送信します。次に、複素数の大きさを計算します(fftからの出力)。マグニチュードを比較しようとしていますが、一致していません。

何か不足している場合はお知らせください。

2 つのオーディオ ファイルを比較する他の方法はありますか?

4

1 に答える 1

1

一般に、完全なファイルの FFT は等しくありません - 40 秒を考慮してください。4 つの 10 秒を含むファイル。それぞれ 20Hz、40Hz、60Hz、80Hz の正弦波のセグメント。

ファイル全体の対応するスペクトルは、これら 4 つの周波数でピークを示しますが、任意の 10 秒です。抜粋には、それらのうちの最大 2 つが含まれます。したがって、それらは一致しません。

さて、あなたがやろうとしていることは Shazam に少し似ているように聞こえますが、幸いなことに、彼らはそれがどのように機能するかについての研究論文を発表しました。多分それはあなたの問題を解決するでしょう。

別のアプローチ (ピッチとスピードの変化を処理できない可能性がありますが) については、上記の例の意味を考慮してください。わずか10秒を表すものに。したがって、元のファイルのどの 10 秒セグメントから 2 番目のファイルが取得されたかを見つける必要があります。

これを実現するには、単純なスライディング ウィンドウ (1 秒から 10 秒、次に 2 秒から 11 秒、というようにデータから開始) を使用するか、2 番目のファイルをさらに小さなチャンクに切り刻み、最初のスライディング ウィンドウを文字列検索からのテクニック。

于 2013-10-29T16:24:22.310 に答える