Downsampling filtro passa-basso per audio: FIR o IIR?


8

Sto lavorando a un progetto di elaborazione audio in tempo reale in cui devo sottocampionare un 44,1 kHz a una frequenza di campionamento inferiore ancora da determinare essenzialmente per ridurre la complessità computazionale. Sto cercando un discreto filtro di downsampling e ho trovato articoli che suggeriscono sia IIR (principalmente ellittica) sia FIR (principalmente fase minima). Il filtro di fase minima FIR non funzionerebbe necessariamente per me, perché ho bisogno di un filtro di fase lineare. Quindi le opzioni sono la FIR lineare che potrebbe avere una latenza considerevole o un IIR a doppio filtro ( filtfiltcomando MATLAB ) che prima filtra in avanti e poi indietro.

Quali sono alcuni pro e contro di FIR e IIR come filtri di downsampling? Qual è più pratico in un'applicazione in tempo reale?

Risposte:


10

Se la fase lineare è un requisito, ciò probabilmente ti guiderà verso un'implementazione FIR. È possibile costruire filtri IIR con fase lineare approssimativa, ma è facile progettare una FIR a fase lineare.

Se sei preoccupato per la latenza, il filtro avanti-indietro come in filtfiltnon è davvero una buona opzione. In generale, è davvero pensato per essere utilizzato un processo offline, poiché per implementare esattamente la tecnica, è necessario eseguire l'intero segnale in avanti, quindi fare lo stesso al contrario. Ciò implica che hai accesso all'intero segnale in una sola volta, il che non è commisurato al ritardo basso.

In generale, un filtro FIR richiederà un ordine superiore per un determinato set di requisiti di prestazione. Tuttavia, i filtri FIR offrono alcuni vantaggi reali, come stabilità garantita, minore suscettibilità agli errori di arrotondamento (poiché l'errore di quantizzazione non viene restituito attraverso il filtro, sebbene sia possibile compensarlo con una maggiore complessità) e ottenuto semplicemente risposta di fase lineare. Inoltre, sono disponibili implementazioni efficienti di filtri FIR per molte architetture di processori, riducendo in qualche modo il costo dei tocchi extra.

Un altro modo per mitigare il costo extra-tap per i filtri FIR nella tua situazione è sfruttare le efficienti tecniche di elaborazione del segnale multirate. In particolare, è possibile utilizzare un approccio di decimazione polifase per ridurre significativamente il numero di calcoli eseguiti durante il processo di decimazione del segnale. Ciò ha l'effetto di ridurre il numero di tocchi effettivi (in termini di complessità computazionale) nel filtro di decimazione. Inoltre, se è necessario decimare in larga misura, gli approcci multistadio possono aiutare a ridurre ulteriormente il carico. Il libro introduttivo di DSP di Lyons ha del buon materiale di facile lettura su questi argomenti.

Dati i parametri più specifici del tuo sistema, si potrebbero formulare raccomandazioni più mirate. Quali sono i requisiti di progettazione del filtro? Che tipo di capacità computazionali ha la tua piattaforma? A quale frequenza di campionamento deciderai?


La decimazione polifase è esattamente quello che stavo cercando! Grazie =)
Phonon,

@Phonon E se vuoi potenziarlo ulteriormente, guarda le implementazioni 'CIC' (Cascade Integrator Comb). Questa è una tecnica solitamente usata per quando la differenza nelle frequenze di campionamento è molto grande.
Spacey,

I filtri CIC sono popolari per le implementazioni hardware (come negli FPGA) perché non richiedono alcuna moltiplicazione, solo ritardi e aggiunte. Questo a scapito di alcuni gradi di libertà per come appare effettivamente la risposta del filtro. Se hai requisiti rigorosi per la risposta in frequenza del decimatore, puoi fare meglio degli approcci CIC, a condizione che tu possa adattarti al carico di lavoro.
Jason R,

@JasonR Hai raggiunto il picco della mia curiosità: cosa c'è di meglio del CIC? (Suppongo che stai ancora parlando di fare meglio di CIC per FPGA o stiamo parlando offline?)
Spacey,

Il mio commento era in riferimento al fatto che hai un controllo relativamente scarso sulla risposta in frequenza di un filtro CIC rispetto a un filtro FIR generale, che puoi progettare per avere un taglio arbitrariamente nitido se gli dai abbastanza tocchi. Come per la maggior parte dei problemi di progettazione del filtro, per scegliere l'approccio migliore sono necessarie tutte le specifiche delle prestazioni sul tavolo.
Jason R,

1

Quanto basso vuoi dire con "bassa latenza"?

Se si intende al di sotto di 1 mS con una forte riduzione della frequenza di campionamento, potrebbe essere necessaria una FIR di fase minima. Se intendi circa 1/30 di secondo, potresti persino essere in grado di implementare un efficiente filtro FIR a fase lineare usando un approccio add / save (convoluzione veloce) a sovrapposizione FFT.


1

Un piccolo problema per quanto riguarda la complessità temporale: i filtri FIR sono vettorializzabili, il che aiuta davvero nelle architetture CPU moderne. Inoltre, i filtri IIR subiscono un impatto sulle prestazioni perché il valore di uscita corrente dipende dai valori di uscita precedenti, il che elimina il vantaggio della pipeline.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.