オーディオのダウンサンプリングローパスフィルター:FIRまたはIIR?


8

私は、リアルタイムのオーディオ処理プロジェクトに取り組んでいます。このプロジェクトでは、計算の複雑さを減らすために、44.1 kHzをまだ決定されていない低いサンプリングレートにダウンサンプリングする必要があります。まともなダウンサンプリングフィルターを探しています。IIR(主に楕円)とFIR(主に最小位相)の両方を示唆する記事を見つけました。線形位相フィルターが必要なため、FIR最小位相フィルターは必ずしも機能しません。したがって、オプションは、かなりのレイテンシが発生する可能性がある線形位相FIRかfiltfilt、最初に前方にフィルター処理してから後方にフィルター処理する二重フィルター処理IIR(MATLAB コマンド)のいずれかです。

ダウンサンプリングフィルターとしてのFIRおよびIIRの長所と短所は何ですか?リアルタイムアプリケーションではどちらがより実用的ですか?

回答:


10

線形位相が要件である場合、それはおそらくFIR実装へとあなたを導くでしょう。近似線形位相を持つIIRフィルターを作成することは可能ですが、線形位相FIRを設計することは簡単です。

レイテンシが気になる場合は、のように前方後方フィルタリングを行うのfiltfiltはあまり良い方法ではありません。一般に、これは実際にはオフラインプロセスで使用することを目的としています。この手法を正確に実装するには、信号全体を順方向に実行し、次に逆方向に実行する必要があるためです。これは、信号全体に一度にアクセスできることを意味します。これは、低遅延に見合うものではありません。

一般に、FIRフィルターは、所定のパフォーマンス要件のセットに対してより高い次数を必要とします。ただし、FIRフィルターには、安定性の保証、丸め誤差の影響を受けにくいなどの実際の利点があります(量子化誤差はフィルターを通じてフィードバックされないため、複雑さを増すことでこれ補正できます)。線形位相応答。さらに、多くのプロセッサアーキテクチャで効率的なFIRフィルターの実装が利用できるため、追加のタップのコストが多少軽減されます。

状況でFIRフィルターの追加タップコストを軽減する別の方法は、効率的なマルチレート信号処理技術を利用することです。具体的には、多相間引きアプローチを使用して、信号を間引きするプロセスで実行する計算の数を大幅に減らすことができます。これには、デシメーションフィルターの有効なタップ数(計算の複雑さ)を減らす効果があります。さらに、大きな要因で間引きする必要がある場合は、マルチステージアプローチで負荷をさらに削減できます。Lyonsの紹介DSPブックには、これらのトピックに関する読みやすい資料がいくつかあります。

システムのより具体的なパラメーターを考えると、より鋭い推奨を行うことができます。フィルターの設計要件は何ですか?プラットフォームにはどのような計算機能がありますか?あなたはどのサンプルレートを間引きしますか?


多相間引きはまさに私が探していたものです!ありがとう=)
Phonon

@Phononさらにキックアップしたい場合は、「CIC」(Cascade Integrator Comb)の実装を調べてください。これは、サンプリングレートの差が非常に大きい場合に通常使用される手法です。
Spacey

CICフィルターは、乗算およびFPGAのような乗算を必要とせず、遅延と加算のみを必要とするため、ハードウェア実装(FPGAなど)で人気があります。これには、フィルターの応答が実際にどのように見えるかについて、ある程度の自由度が犠牲になります。デシメータの周波数応答に対する厳しい要件がある場合、ワークロードに対応できれば、CICアプローチよりも優れた方法を実行できます。
Jason R

@JasonR Youveは私の好奇心をかきたてました-CICより優れているものは何ですか?(私はあなたがまだFPGAのCICより良いことを話していると思いますか、それともオフラインについて話しているのでしょうか?)
Spacey

私のコメントは、一般的なFIRフィルターと比較した場合、CICフィルターの周波数応答を比較的制御できないという事実に言及しています。これは、十分なタップを与えると、任意の鋭いカットオフを持つように設計できます。ほとんどのフィルター設計問題と同様に、最適なアプローチを選択するには、表にあるすべてのパフォーマンス仕様が必要です。
Jason R

1

「低レイテンシ」とはどのくらい低いですか?

サンプルレートを大幅に下げて1 mS未満にする場合は、最小位相FIRが必要になることがあります。1/30秒程度の場合、FFTオーバーラップ加算/保存(高速畳み込み)アプローチを使用して、効率的な線形位相FIRフィルターを実装することもできます。


1

時間の複雑さに関するちょっとした落とし穴:FIRフィルターはベクトル化可能であり、これは現代のCPUアーキテクチャで本当に役立ちます。さらに、現在の出力値は以前の出力値に依存するため、IIRフィルターはパフォーマンスに影響し、パイプラインの利点がなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.