Filtro de paso bajo para muestreo de audio: FIR o IIR?

8

Estoy trabajando en un proyecto de procesamiento de audio en tiempo real en el que tengo que reducir la muestra de 44.1 kHz a una frecuencia de muestreo más baja aún por determinar, esencialmente para reducir la complejidad computacional. Estoy buscando un filtro de muestreo decente, y encontré artículos que sugieren tanto IIR (principalmente elíptico) como FIR (principalmente fase mínima). El filtro de fase mínima FIR no funcionaría necesariamente para mí, porque necesito un filtro de fase lineal. Entonces, las opciones son FIR de fase lineal que podría tener una latencia considerable o un IIR de doble filtrado ( filtfiltcomando MATLAB ) que primero filtra hacia adelante y luego hacia atrás.

¿Cuáles son algunos de los pros y los contras de FIR y IIR como filtros de disminución de resolución? ¿Qué es más práctico en una aplicación en tiempo real?

Phonon
fuente

Respuestas:

10

Si la fase lineal es un requisito, eso probablemente lo guiará hacia una implementación FIR. Es posible construir filtros IIR que tengan una fase lineal aproximada, pero es fácil diseñar un FIR de fase lineal.

Si le preocupa la latencia, el filtrado hacia adelante y hacia atrás como en filtfiltno es realmente una buena opción. En general, realmente está destinado a usarse como un proceso fuera de línea, ya que para implementar la técnica exactamente, debe ejecutar toda la señal hacia adelante y luego hacer lo mismo a la inversa. Eso implica que tiene acceso a toda la señal a la vez, lo cual no es acorde con un bajo retraso.

En general, un filtro FIR requerirá un orden superior para un conjunto dado de requisitos de rendimiento. Sin embargo, los filtros FIR brindan algunas ventajas reales, como estabilidad garantizada, menor susceptibilidad a errores de redondeo (ya que el error de cuantificación no se retroalimenta a través del filtro, aunque puede compensar esto con una mayor complejidad), y simplemente se logra Respuesta de fase lineal. Además, hay implementaciones eficientes de filtros FIR disponibles para muchas arquitecturas de procesadores, lo que mitiga un poco el costo de los toques adicionales.

Otra forma de mitigar el costo extra de derivación para los filtros FIR en su situación es aprovechar las técnicas eficientes de procesamiento de señales multirate. Específicamente, puede usar un enfoque de diezmado polifásico para reducir significativamente el número de cálculos que realiza en el proceso de diezmar su señal. Esto tiene el efecto de disminuir el número de tomas efectivas (en términos de complejidad computacional) en el filtro de diezmado. Además, si necesita diezmar por un factor importante, los enfoques de varias etapas pueden ayudarlo a reducir aún más su carga. El libro introductorio de DSP de Lyons tiene un buen material fácil de leer sobre estos temas.

Dados parámetros más específicos de su sistema, uno podría hacer recomendaciones más puntiagudas. ¿Cuáles son sus requisitos de diseño de filtro? ¿Qué tipo de capacidades computacionales tiene su plataforma? ¿A qué frecuencia de muestreo diezmarás?

Jason R
fuente
¡La aniquilación polifásica es exactamente lo que estaba buscando! Gracias =)
Phonon
@Phonon Y si quieres mejorar aún más, mira las implementaciones de 'CIC' (Cascade Integrator Comb). Esa es una técnica utilizada generalmente cuando la diferencia en las tasas de muestreo es muy grande.
Spacey
Los filtros CIC son populares para implementaciones de hardware (como en FPGA) porque no requieren ninguna multiplicación, solo retrasos y adiciones. Esto se produce a expensas de algunos grados de libertad para el aspecto real de la respuesta del filtro. Si tiene requisitos estrictos para la respuesta de frecuencia del decimador, puede hacerlo mejor que los enfoques CIC, siempre que pueda acomodar la carga de trabajo.
Jason R
@JasonR Has despertado mi curiosidad: ¿qué es mejor que CIC? (Supongo que todavía estás hablando de mejorar CIC para FPGA o estamos hablando de fuera de línea?)
Spacey
Mi comentario fue en referencia al hecho de que usted tiene relativamente poco control sobre la respuesta de frecuencia de un filtro CIC en comparación con un filtro FIR general, que puede diseñar para tener un corte arbitrariamente agudo si le da suficientes toques. Al igual que con la mayoría de los problemas de diseño de filtros, necesita todas las especificaciones de rendimiento de la tabla para elegir el mejor enfoque.
Jason R
1

¿Qué tan bajo quiere decir con "baja latencia"?

Si quiere decir menos de 1 mS con una gran reducción de la frecuencia de muestreo, entonces se puede requerir una FIR de fase mínima. Si se refiere a alrededor de 1/30 de segundo, incluso podría implementar un filtro FIR de fase lineal eficiente utilizando un enfoque de adición / guardado de superposición FFT (convolución rápida).

hotpaw2
fuente
1

Un pequeño inconveniente con respecto a la complejidad del tiempo: los filtros FIR son vectorizables, lo que realmente ayuda en las arquitecturas de CPU modernas. Además, los filtros IIR tienen un impacto en el rendimiento porque el valor de salida actual depende de los valores de salida anteriores, lo que elimina la ventaja de la canalización.

Mack martes
fuente