¿Por qué usar la rápida transformación de Fourier para la reducción de ruido en lugar de un filtro electrónico clásico?

17

Me gustaría saber cómo eliminar el ruido ambiental de una grabación de voz.

Investigué un poco y noté que la mayoría de los métodos propuestos utilizan la transformación rápida de Fourier. Pero, ¿por qué no puedes usar un filtro electrónico clásico para eliminar las frecuencias de ruido? ¿Por qué molestarse en hacer una FFT?

Jazis
fuente
¿Porque fft da una salida de mejor calidad?
Solar Mike
44
Compare el precio de un sistema DSP 5GS / s con el de un montón de indicadores y tapas ...
PlasmaHH
1
Tal vez pueda hacer un filtrado más complejo con un fft. Los "filtros electrónicos clásicos" simplemente eliminan todas las frecuencias en un cierto rango. Además, aquí está tu credencial de estudiante, un regalo mío para ti.
Andrew Pikul
1
Tengo 2 problemas con su pregunta: (1) ¿Qué quiere decir con "filtro electrónico clásico"? (2) El hecho de que algo se haga de una manera (FFT) NO significa que NO SE PUEDE hacer de otra manera (filtro); Puede haber algunas desventajas para hacerlo de la otra manera. Sin embargo, asume que no es posible hacerlo con el filtro electrónico clásico (lo que quiera decir con eso), lo que probablemente sea incorrecto.
Cuajada
¿Cuál es el formato de su grabación de voz (analógica versus digital)? ¿Es la latencia un problema (en vivo versus después del hecho)? ¿Cuánto dura la grabación (una canción vs. días de grabación)?
cobre. El

Respuestas:

25

Me gustaría saber cómo eliminar el ruido ambiental de una grabación de voz.

Bueno, ahora está almacenado digitalmente, ¿verdad? entonces, ¿planeas poner tu micrófono al lado del altavoz después de un filtro analógico para volver a grabarlo?

Basta de perder el tiempo, voy a hablar en serio.


Para hacer que un filtro se atenúe más en un rango más pequeño de frecuencias, es decir, hacer que la curva de respuesta de frecuencia sea más vertical, entonces solo necesita aumentar el orden del filtro.

Eso es algo que es razonablemente fácil de hacer en Matlab. También es algo que es factible hacer postprocesamiento. También se trata de la repetibilidad, si aplica el filtro en un día soleado hoy, entonces espera que funcione de manera idéntica para mañana cuando esté lloviendo. Esperas que funcione exactamente igual, ¿verdad?

En los circuitos analógicos, tiene todos estos "5% de resistencia", "1% de condensador" y todo lo demás. Entonces, si desea hacer algo exacto , definitivamente necesitará recortar el circuito después para que coincida perfectamente con el filtro deseado. Si desea aumentar el orden del filtro ... entonces, lamentablemente, hará que el filtro sea mucho más grande físicamente. En lugar de ocupar el tamaño de una tarjeta de crédito, ocupará el tamaño de, no sé, depende del orden del filtro y de lo que está de acuerdo.

Con respecto a la repetibilidad, hacer algo hoy ... cálido ... mañana ... más frío ... las resistencias cambiarán muy ligeramente, la respuesta de frecuencia cambiará, un par de Hz allí, algunos allí, cuantos más componentes tenga en sus circuitos , lo más probable es que sus componentes cambien sus valores. Y luego tienes humedad, oxidante ...

Y aquí está la frase clave que debería haber dicho primero, realmente no se puede procesar posteriormente, a menos que tenga cintas de cassette. No estoy 100% seguro de qué medio musical analógico se está utilizando para grabar / eliminar fácilmente. Los discos LP serían una pesadilla ...

Y no olvidemos el precio. Uno es el software, si lo escribe usted mismo, entonces es esencialmente gratuito, el otro requiere componentes, partes físicas.

Pero no piense que los filtros analógicos son malos, tienen sus usos, como eliminar armónicos desagradables en grandes motores de CC o hacer motores paso a paso ultra silenciosos para impresoras 3D al suavizar la corriente. Y toneladas de otros usos. - Además, si lo resolviera con un filtro analógico, nadie pensaría que sería una mala solución.

Creo que estoy respondiendo indirectamente por qué FFT es una mejor manera de hacerlo, después del procesamiento. La conclusión es que es mucho más barato hacerlo. También puede aplicar un filtro de muesca si sabe a qué frecuencia está el ruido. O un filtro más ancho, también conocido como bandtop.

Y lo último que quiero agregar ... wow, esta respuesta es tan larga, lo siento. Pero si usas un filtro analógico y ... te equivocas con tus cálculos y luego piensas que todo está bien y elegante y lo usas en algún evento serio, como entrevistar al rey de Suecia (Knugen). Y te equivocaste con el tamaño de un condensador, en lugar de filtrar el ruido de 16 kHz, estás filtrando el "ruido" de 4 kHz. Si en cambio lo manejas digitalmente, entonces solo es cuestión de cambiar algunas variables, no necesitas desoldar -> soldar otro componente. También la entrevista está arruinada.

Harry Svensson
fuente
44
Hans Majonnäs Honung Carl XVI Gustaf
pipa
@pipe Tackar, det behövdes. (Gracias, necesitaba eso.)
Harry Svensson
Pregunta de seguimiento (porque esta respuesta depende demasiado de una definición literal de analógico). ¿Por qué elegir FFT para filtrar el ruido en lugar de los filtros polinomiales clásicos?
slebetman
@Slebetman no esperes que responda eso.
Harry Svensson
¡Esa fue una respuesta bastante sólida! Gracias hermano, y gracias a todos los que respondieron, ¡no esperaba tanta ayuda! Seguramente haré más preguntas en este foro. ¡Gracias de nuevo!
Jazis
7

Pero, ¿por qué no puedes usar un filtro electrónico clásico para eliminar las frecuencias de ruido?

¿Quién dice que no puedes? Es así como se hizo esto en los días previos al procesamiento de la señal digital. El problema es que filtrar el ruido siempre es un compromiso entre mantener intacta la señal deseada (voz, música) mientras se reduce el ruido.

Para las cintas de cassette y otras grabaciones analógicas se utilizaron sistemas como DNL y Dolby que filtran solo cuando la señal es débil, lo que significa que el ruido es más audible. Luego, cuando la señal es más fuerte, el filtro se desvanece. Ver: Artículo de Wikipedia sobre reducción de ruido

El habla se puede limitar a una banda de frecuencia estrecha, como 300 Hz a 3 kHz, sin dejar de ser perfectamente comprensible. Podría hacer un filtro analógico simple para esa banda, pero eso limitaría la cantidad de ruido que se suprime. Para filtrar más efectivamente las frecuencias fuera de esta banda se requeriría un filtro analógico complejo. Dichos filtros son difíciles de diseñar, construir y fabricar.

Aquí es donde entra el procesamiento de la señal digital. En el dominio digital es mucho más fácil implementar filtros complejos con muchos polos y ceros. Además, dado que la ubicación (en el dominio de la frecuencia) de estos polos y ceros está vinculada al reloj del DSP (Procesador de señal digital), que es un reloj preciso (cristal), el filtro será mucho más preciso en comparación con una implementación analógica .

Bimpelrekkie
fuente
+1 por mencionar el compromiso entre mantener las señales deseadas y eliminar las no deseadas. El problema es que el habla y el ruido ocupan las mismas frecuencias, por lo que un filtro FFT puede eliminar el ruido de "línea de base", es decir, después de analizar la amplitud del ruido en cada frecuencia sin voz , que puede eliminarse cuando hay voz. Así es como funcionan los filtros de ruido FFT en Audacity, etc., etc.
Ingeniero invertido
No estoy seguro de qué hace que los filtros analógicos sean especialmente difíciles de diseñar y construir. Todo lo que básicamente necesita es uno o dos opamps y algunas resistencias y condensadores. Y dado que los opamps generalmente vienen en paquetes duales, solo necesita un chip. Por lo general, usaría un filtro analógico para hacer un filtrado de paso bajo para asegurarme de que haya poca señal de alta frecuencia con alias en la señal. No puedes deshacerte de eso con FFT después. Por otro lado, no hay problema en hacer un filtro de paso de banda FFT cuando tiene una "grabación" limpia para procesar.
Barleyman
@Barleyman no estoy seguro de qué hace que los filtros analógicos sean especialmente difíciles de diseñar y construir Me refería a filtros de alto orden como el cuarto orden y superiores. Estoy de acuerdo en que un par de opamps. las resistencias y los condensadores pueden hacer casi cualquier filtro de pedido, pero ¿ha intentado diseñar uno todavía? Tengo, OK, en un simulador, pero ya te encuentras con condensadores estándar que no son lo suficientemente precisos . En órdenes más altas, el valor preciso de los componentes se vuelve cada vez más importante.
Bimpelrekkie
Además, el alias ya no es un problema, ya que ahora tenemos ADC sigma-delta y DAC con frecuencias de muestreo muy altas, por lo que todo lo que se necesita es un RC simple.
Bimpelrekkie
@Bimpelrekkie He diseñado varios, nada en estos días. En el pasado, usarías un libro con algunas opciones de parámetros precalculadas con las que pasarías algún tiempo jugando para obtener algunos valores de componentes razonables. La precisión no es un gran problema si no estás tratando de ser demasiado selectivo. RC realmente no hace el trabajo si está tratando de hacer, por ejemplo, grabación de audio. Con -20dB / década, tendría que poner el filtro a 2.2kHz para obtener algún tipo de filtración a la frecuencia Nyquist. Cherbychew de tercer orden lo haría mejor a 12kHz fc. El quinto orden lo llevaría a -46dB, que es "lo suficientemente bueno"
Barleyman
5

Bueno, el primer paso para comprender por qué necesitamos FFT es comprender cómo funciona el filtrado digital.

Entonces, básicamente, tiene una estructura, como un registro de desplazamiento, con varios elementos de memoria, una entrada y una salida. Un valor de muestra entra en la entrada, se desplaza a través del registro y se mueve a la salida. En cada etapa del registro, se multiplica por un número llamado coeficiente de filtro.

Esta idea funciona bien cuando tienes un registro rápido haciendo multiplicaciones rápidas y tienes muestras entrando lentamente una por una.

En la vida real, en lugar de eso, lo más probable es que obtenga un marco que consta de una serie de muestras. Cuando desee filtrar eso, convolverá las muestras con los coeficientes del filtro. Es lo mismo que hacer el enfoque anterior, pero se ve un poco diferente.

Ahora viene la parte FFT. Resulta que la convolución crece en complejidad numérica muy rápidamente con el número de muestras. Por otro lado, la FFT es en principio numéricamente complicada, pero el número de operaciones necesarias crece mucho más lentamente con el aumento de los coeficientes de filtro en comparación con la convolución.

Lo que significa lo anterior es que por encima de un cierto número de muestras, va a ser mucho más rápido convertir una señal en el dominio de frecuencia usando una FFT, filtrar la señal en el dominio de frecuencia y luego volver a convertirla usando IFFT. El truco que estamos usando es una de las propiedades de la convolución, a saber, que la convolución en el dominio del tiempo puede, en algunas circunstancias, modelarse como multiplicación en el dominio de la frecuencia.

En resumen, si el número de coeficientes de filtro que tiene es lo suficientemente grande, FFT es más rápido. El "grande" podría ser tan pequeño como cien.

AndrejaKo
fuente
3
Creo que por "filtro electrónico clásico" se refería a un filtro analógico, no a una convolución.
jalalipop
1
@jalalipop Podría ser, pero explícitamente quería explicar la parte de FFT. En ese momento, ya hemos recibido una respuesta que explica por qué nos gustaría tener filtros digitales en lugar de analógicos.
AndrejaKo
2

Los métodos basados ​​en FFT (aún tendrá que trabajar con las modificaciones de ventanas y superposición-adición o superposición-cambio) tienen como ventaja principal que el diseño está sólidamente en el dominio de la frecuencia, y un filtro Wiener o sustracción espectral o una serie de otros sistemas que dependen de estadísticas de señal y un modelo realmente funcionan fundamentalmente en el dominio de la frecuencia.

Por el contrario, la cancelación de eco y varias variantes no se basan en un modelo del ruido sino en una grabación imperfecta altamente correlacionada con el ruido. Estos se realizan utilizando filtros variables (generalmente FIR) para restar una estimación de ruido de la señal y actualizar los filtros a fin de mantener la correlación de la señal restante con el canal de ruido mínimo. Para esas técnicas, FFT no es tan útil (cuando se permiten retrasos considerables de la señal resultante y de las actualizaciones del filtro, pueden emplearse como un componente en un FIR de caja negra con retraso por razones de rendimiento, pero no son realmente útiles por su capacidad de representación de dominio de frecuencia).


fuente
sólidamente en el dominio de la frecuencia . No sería una ventaja particular en eso si no fuera porque los tonos y las notas tienen el tono de fondo y las propiedades de sobretono.
mathreadler
2

Los filtros analógicos son bastante fáciles de diseñar, pero la limitación es que debe seguir agregando elementos de filtro físicos para lograr el filtrado de parada de banda de frecuencias dadas. Y debe ajustar los valores de los componentes si desea mover las muescas. Un solo opamp puede hacer una muesca de parada de banda, por lo que debe agregar otro amplificador para cada muesca que desee. Para una muesca más selectiva necesitaría dos amplificadores por muesca.

En términos prácticos, es probable que le sirva mejor un filtro de paso bajo de tercer orden que puede hacer con un solo amplificador operacional o quizás un filtro de paso bajo de quinto orden que requiere dos. Utilice los filtros de paso bajo para atenuar las frecuencias por encima de la frecuencia de Nyquist (1/2 frecuencia de muestreo) con cierto margen y tendrá una muestra digital de alta calidad para procesar posteriormente. Con una grabación limpia como esa, puede aplicar filtros FFT para crear filtros de paso alto, paso de banda y parada de banda según sea necesario.

Barleyman
fuente
1

El filtrado invariante de tiempo lineal que hace un "filtro electrónico clásico" es simplemente una multiplicación "tonta" en el dominio de Fourier. Pero la información que encuentra en un FFT le brinda más detalles que solo la respuesta de un filtro, que es solo una combinación lineal de esos componentes. Con esa información, puede dirigir el procesamiento de datos y adaptarlo a los datos. El ruido tiene algunas características que las voces claras y los tonos musicales no tienen, por ejemplo, la correlación entre armónicos no es casi la misma para el ruido que para la voz o la música.

Entonces, si podemos identificar las correlaciones entre los componentes de frecuencia, es decir, encontrar un "tono de fondo" de alguna manera, podemos dirigir el filtrado y adaptarlo más a los datos.

mathreadler
fuente