11

イコライザーについて多くの質問があることは承知していますが、探しているものがわかりませんでした。私がやりたいのは、次のような方法でオーディオ サンプルを変更するためのイコライザーです。

equalizer.eqAudio(audiosamples, band, gain)

私は DSP の実装に関してほとんど知らないので、それが私が望む正確なインターフェースであるかどうかはわかりません (私はフィルター、リミッター、コンプレッサーを使用しましたが、それらを作成しませんでした)。

これについてグーグルで調べたところ、サンプルに対してFFTを実行する必要があるため、振幅ではなく周波数範囲ごとにデータを取得し、必要な方法で処理してから、FFTの逆を作成して、オーディオサンプルで結果を再度取得する必要があることを読みました. この FFT の実装を探したところ、JTransform for Java が見つかりました。このライブラリには、Discrete Cosine Transform (DCT) と呼ばれる FFT 関連のアルゴリズムが実装されています。

私の質問は次のとおりです。

  • さて、私は正しい方法ですか?
  • FFT は周波数に関するデータを提供するので、サンプルのチャンクを FFT アルゴリズムに渡す必要があります。このチャンクはどのくらいの大きさでなければなりませんか?
  • イコライザーを説明する DSP プログラミングに関する良い本はありますか?

ありがとう!

4

2 に答える 2

18

FFT はオーディオ イコライゼーションの最初の選択肢ではありません。IIR または FIR フィルターを使用して EQ を構築するのがデフォルトです。FFT は、特別な状況で役立つ場合があります。

一般的に推奨されるリファレンスは、オーディオ EQ 双二次フィルター係数のクックブックの数式です

双二次フィルターをプログラミングするための Java チュートリアル。http://arachnoid.com/BiQuadDesigner/index.html

イコライザーを説明する DSP プログラミングに関する良い本はありますか?

デジタル信号処理を理解することは、DSP の良い入門書です。FIR および IIR フィルターに関する章があります。

Julius O. Smith III によるオーディオ アプリケーションを使用したデジタル フィルターの紹介。

Martin Holters と Udo Zolzer による、Higher-Order Recursive Filters を使用した Graphic Equalizer Designは、1 つの EQ フィルター設計アプローチを詳述した短い論文です。

于 2013-01-11T01:28:58.713 に答える
16

イコライザーを取得するにはさまざまな方法がありますが、シャノンが説明しているように、IIR/FIRフィルターの方法もその1つです。ただし、イコライザーをすばやく稼働させることが目標である場合は、リファレンス実装が豊富に存在するため、FFT方式を採用する方が簡単な場合があります。

FFTサイズの質問に関しては、イコライザーに必要な周波数分解能によって異なります。16のサイズを選択すると、0からfs / 2まで等間隔に配置された周波数領域で9(8複素数+ 1実数)チャネルが得られます。1つ目は0Hzを中心とし、9つ目はfs /2Hzを中心にしています。また、一部の実装では16チャネルが返され、上位部分はミラーリングされた複雑な共役バージョンの下位部分であることに注意してください。

イコライザー機能の実装に関しては、各チャネルに必要なゲインを掛けます。また、スペクトルにミラーリングされた部分がある場合は、ゲインもミラーリングします。これが行われない場合、次のIFFTの結果は実際の値の信号にはなりません。乗算後、IFFTを適用します。

FFTとフィルターベースのイコライザーの違いについては、FFTは、正弦波をインパルスとして、クリティカルにサンプリングされ(フィルターの長さでダウンサンプリングされ)、中心周波数が等間隔に配置されたFIRフィルターのセットを計算するための高速な方法であることを忘れないでください。

よろしく

于 2013-01-11T18:33:11.060 に答える