Downsampling-Tiefpassfilter für Audio: FIR oder IIR?


8

Ich arbeite an einem Echtzeit-Audioverarbeitungsprojekt, bei dem ich 44,1 kHz auf eine noch zu bestimmende niedrigere Abtastrate heruntertasten muss, um die Rechenkomplexität zu verringern. Ich suche nach einem anständigen Downsampling-Filter und habe Artikel gefunden, die sowohl IIR (hauptsächlich elliptisch) als auch FIR (hauptsächlich minimale Phase) vorschlagen. FIR-Minimalphasenfilter würde bei mir nicht unbedingt funktionieren, da ich einen linearen Phasenfilter benötige. Die Optionen sind also entweder lineare Phasen-FIR, die eine beträchtliche Latenz aufweisen können, oder ein doppelt filterndes IIR (MATLAB- filtfiltBefehl), das zuerst vorwärts und dann rückwärts filtert.

Was sind einige Vor- und Nachteile von FIR und IIR als Downsampling-Filter? Was ist in einer Echtzeitanwendung praktischer?

Antworten:


10

Wenn eine lineare Phase erforderlich ist, werden Sie wahrscheinlich zu einer FIR-Implementierung geleitet. Es ist möglich, IIR-Filter mit einer ungefähren linearen Phase zu erstellen, aber es ist einfach, eine FIR mit linearer Phase zu entwerfen.

Wenn Sie sich Sorgen über die Latenz machen, ist das Vorwärts-Rückwärts-Filtern wie in filtfiltkeine gute Option. Im Allgemeinen ist es eigentlich als Offline-Prozess gedacht, da Sie zur genauen Implementierung der Technik das gesamte Signal vorwärts und dann rückwärts durchlaufen müssen. Dies bedeutet, dass Sie auf einmal auf das gesamte Signal zugreifen können, was nicht mit einer geringen Verzögerung angemessen ist.

Im Allgemeinen erfordert ein FIR-Filter eine höhere Ordnung für einen bestimmten Satz von Leistungsanforderungen. FIR-Filter bieten jedoch einige echte Vorteile, wie z. B. garantierte Stabilität, geringere Anfälligkeit für Rundungsfehler (da der Quantisierungsfehler nicht durch den Filter zurückgemeldet wird, obwohl Sie dies mit einer erhöhten Komplexität kompensieren können ) und sind einfach zu erreichen lineare Phasenantwort. Darüber hinaus sind für viele Prozessorarchitekturen effiziente FIR-Filterimplementierungen verfügbar, wodurch die Kosten für die zusätzlichen Abgriffe etwas gesenkt werden.

Eine andere Möglichkeit, die zusätzlichen Kosten für FIR-Filter in Ihrer Situation zu verringern, besteht darin, effiziente Multirate-Signalverarbeitungstechniken zu nutzen. Insbesondere können Sie einen mehrphasigen Dezimierungsansatz verwenden , um die Anzahl der Berechnungen, die Sie beim Dezimieren Ihres Signals ausführen, erheblich zu reduzieren. Dies hat den Effekt, dass die Anzahl der effektiven Abgriffe (in Bezug auf die Rechenkomplexität) im Dezimationsfilter verringert wird. Wenn Sie außerdem um einen großen Faktor dezimieren müssen, können mehrstufige Ansätze dazu beitragen, Ihre Last weiter zu reduzieren. Lyons DSP-Einführungsbuch enthält einige gute, leicht zu lesende Materialien zu diesen Themen.

Angesichts spezifischerer Parameter Ihres Systems könnte man gezieltere Empfehlungen aussprechen. Was sind Ihre Anforderungen an das Filterdesign? Welche Rechenfunktionen verfügt Ihre Plattform? Auf welche Abtastrate werden Sie dezimieren?


Mehrphasendezimierung ist genau das, wonach ich gesucht habe! Danke =)
Phonon

@Phonon Und wenn Sie es noch weiter verbessern möchten, schauen Sie sich die CIC-Implementierungen (Cascade Integrator Comb) an. Das ist eine Technik, die normalerweise verwendet wird, wenn der Unterschied in den Abtastraten sehr groß ist.
Spacey

CIC-Filter sind bei Hardware-Implementierungen (z. B. in FPGAs) beliebt, da sie keine Multiplikation erfordern, sondern nur Verzögerungen und Additionen. Dies geht zu Lasten einiger Freiheitsgrade für die tatsächliche Reaktion des Filters. Wenn Sie strenge Anforderungen an den Frequenzgang des Dezimators haben, können Sie dies besser als bei CIC-Ansätzen, vorausgesetzt, Sie können die Arbeitslast berücksichtigen.
Jason R

@ JasonR Du hast meine Neugier geweckt - was ist besser als CIC? (Ich gehe davon aus, dass Sie immer noch davon sprechen, CIC für FPGA besser zu machen, oder sprechen wir von Offline?)
Spacey

Mein Kommentar bezog sich auf die Tatsache, dass Sie im Vergleich zu einem allgemeinen FIR-Filter, den Sie so gestalten können, dass er einen willkürlich scharfen Cutoff aufweist, wenn Sie ihm genügend Taps geben, vergleichsweise wenig Kontrolle über den Frequenzgang eines CIC-Filters haben. Wie bei den meisten Filterdesignproblemen benötigen Sie alle Leistungsangaben auf dem Tisch, um den besten Ansatz zu finden.
Jason R

1

Wie niedrig ist mit "geringer Latenz" gemeint?

Wenn Sie unter 1 mS mit einer großen Reduzierung der Abtastrate meinen, ist möglicherweise eine minimale Phase FIR erforderlich. Wenn Sie eine 1/30 Sekunde meinen, können Sie möglicherweise sogar ein effizientes FIR-Filter mit linearer Phase mithilfe eines FFT-Überlappungs-Add / Save-Ansatzes (schnelle Faltung) implementieren.


1

Ein kleines Problem in Bezug auf die Zeitkomplexität: FIR-Filter sind vektorisierbar, was in modernen CPU-Architekturen sehr hilfreich ist. Darüber hinaus erleiden IIR-Filter einen Leistungseinbruch, da der aktuelle Ausgabewert von früheren Ausgabewerten abhängt, wodurch der Vorteil des Pipelining beseitigt wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.