Angenommen, ich habe ein Audiosignal mit Hz abgetastet und möchte einen Tiefpassfilter entwerfen, der alles unter ~ 60 Hz isoliert . In der digitalen Welt ist dies ein Tiefpassfilter mit einem Durchlassbereich von [ - π. Auch das Übergangsband sollte angemessen sein. Der Aufbau eines FIR-Filters dafür kann viele Abgriffe haben, die auf lange Sicht die Präzision beeinträchtigen. Ein IIR-Filter ist ebenfalls nicht ideal, da Audio in Filtern unter einem nichtlinearen Phasengang leidet. Wenn das Signal nicht gefiltert, dann umgekehrt und erneut gefiltert wird, ist dies keine Option.
Könnte eine Wavelet-Transformation diesbezüglich besser sein als eine reguläre In-One-Go-Filterung?
Antworten:
Wenn Sie die Engineering-Zeit optimieren und sich auf einer Plattform befinden, die große FFTs gut unterstützt (dh kein Fixpunkt), befolgen Sie die Empfehlungen von hotpaw2 und verwenden Sie die schnelle Faltung . Es ist viel leistungsfähiger als eine naive FIR-Implementierung und sollte relativ einfach zu implementieren sein.
Wenn Sie andererseits etwas Zeit haben, um die beste Implementierung zu erzielen , oder wenn Sie sich auf einer Festkomma-Plattform befinden, sollten Sie eine Multiraten- Down-Filter-Up-Subtrahier-Struktur verwenden. Aber es ist etwas schwieriger, alles richtig zu machen.
Ich habe Zugriff auf vertrauenswürdige und hochoptimierte Implementierungen von Tools für schnelle Faltung und Multiraten-Filterung. Die schnelle Faltung dauert etwa dreimal länger, um eine im Vergleich zur Multiratenstruktur gleichwertige Signalleistung zu erzielen. Darüber hinaus ist das sogar auf einer Gleitkommaplattform. Ab einem festen Punkt dsp würde sich die Lücke erheblich vergrößern.
Allgemein gesagt:
Down-Konvertierung:
Verwenden Sie 8 Halbband-Dezimierungsfilter, um Ihr 48-kHz-Signal in ein 187,5-Hz-Signal umzuwandeln. Die erste Stufe dieses Downsamplings kann ein sehr breites Übergangsband aufweisen, das es ermöglicht, dass die Energie einen Alias aufweist, solange sie nicht in den Bereich unter 60 Hz zurückkehrt. Mit fortschreitenden Stufen muss die Anzahl der Abgriffe erhöht werden, sie werden jedoch mit zunehmend niedrigeren Abtastraten angewendet, sodass die Gesamtkosten für jede Stufe gering bleiben.
Filterung:
Führen Sie Ihre enge Filterung bei 60 Hz durch, um die Energie zu erhalten, die Sie eventuell subtrahieren möchten. Es gibt einen doppelten Vorteil, wenn Sie Ihre Filterung mit der niedrigen Rate durchführen:
Up-Conversion:
Im Wesentlichen ist dies die Umkehrung der Dezimierungsstufen. Jede der 8 Interpolatorstufen verdoppelt die Rate durch Schätzen des Abtastwerts, der zwischen aufeinanderfolgenden Eingangsabtastwerten liegt. Das Übergangsband wird breiter, wenn die Abtastrate höher wird.
Subtrahieren:
Subtrahieren Sie Ihr tiefpassgefiltertes Signal mit voller Rate vom Originalsignal. Wenn Sie alle Gruppenverzögerungen richtig eingestellt haben, ist die Gesamtstruktur ein Hochpassfilter mit einer schmalen Übergangsbandbreite.
quelle
Versuchen Sie es mit einem Überlappungsfilter zum Hinzufügen / Speichern von Faltungen mit der längsten FFT / IFFT, die Ihren Latenz- und Rechenleistungseinschränkungen entspricht. Sie können extrem lange FIR-Filter entwerfen, wenn Sie diese Methode mit noch längeren FFTs verwenden.
Wenn Sie den gesamten Song oder Ihre gesamte Audiosignaldatei in einer sehr langen FFT + IFFT FFT (es gibt spezielle FFT-Algorithmen für lange Vektoren, die nicht in den Cache oder RAM passen) können, müssen Sie keine FFT ausführen Überlappen Sie die Add / Save-Verarbeitung, und Sie erhalten ein sehr schmales Übergangsband.
quelle
Es gibt eindeutig zwei Möglichkeiten: FIR & IIR. Wie bereits erwähnt, erfordert FIR eine SEHR lange Impulsantwort (1000 Taps) und ist hinsichtlich des Speichers teuer. MIPS und Latenz mit überlappendem Add / Save sind die effizienteste Wahl. Die Latenz kann jedoch ein echtes Problem sein. Wenn Sie dies als Hochpass für einen Heimkino-Subwoofer verwenden möchten, ist die Latenz so hoch, dass Sie die Lippensynchronisation mit dem Video verlieren.
IIR ist um mehrere Größenordnungen günstiger und wird daher häufig eingesetzt. Es hat zwar eine nicht flache Phasenantwort, aber in vielen Fällen ist dies kein Problem oder kann umgangen werden. Wenn Sie beispielsweise einen Hochpassfilter zum Schutz der Treiber in einer Bassbox benötigen, ist der Phasengang nicht sehr wichtig, da der Treiber, das Gehäuse und die Raumakustik den Phasengang des Gesamtsystems bestimmen. Der Filter spielt hier nur eine untergeordnete Rolle. In vielen Fällen müssen Sie auch die "relative" Phase und nicht die absolute Phase beibehalten. Angenommen, Sie möchten den Hochpass auf Signal A anwenden, aber nicht auf Signal B. Sie können einfach einen passenden Allpass auf Signal B anwenden, damit die relative Phase von A und B gleich bleibt. Die Gesamtlatenz und Gruppenverzögerung dieses Ansatzes ist immer noch viel geringer als die der FIR-Methode.
quelle