Reducción de ruido de audio muy ruidoso


8

Estoy tratando de escribir un algoritmo que segmente automáticamente una pieza de audio con grabaciones de llamadas de pájaros. Mis datos de entrada son archivos wave de 1 minuto de duración y en la salida me gustaría recibir llamadas separadas para un análisis más detallado. El problema es que la relación señal / ruido es bastante terrible debido a las condiciones ambientales y la mala calidad de un micrófono (mono, muestreo de 8 kHz).

Le agradecería cualquier consejo sobre cómo continuar con la reducción de ruido.

Aquí hay un ejemplo de mi entrada, grabación de audio de un minuto en formato de onda: http://goo.gl/16fG8P

Así es como se ve la señal:

Mi señal de entrada (8 kHz).  Las áreas marcadas indican llamadas de pájaros

El filtrado de paso de banda, en el que mantengo solo cualquier cosa entre 1500 - 2500 Hz, mejora la situación, pero aún está lejos de las expectativas. En este espectro todavía hay mucho ruido presente.

Espectrograma

También tracé la energía promedio a largo plazo (más de 32 muestras) y eliminé algunos clics. Aquí está el resultado:

Energía promedio a largo plazo

Con todo el ruido restante, tengo que establecer un umbral muy bajo para el algoritmo de detección de inicio para elegir los últimos 10 segundos de llamadas de aves. El problema es que si lo modifico de tal manera, en la próxima grabación puedo obtener muchos falsos positivos.

El filtro de media móvil ayuda un poco con el ruido del viento. ¿Alguna otra idea? Estaba pensando en "Spectral Subtraction", pero aquí me parece que tengo un problema con el huevo y la gallina: para encontrar un área de solo ruido, tengo que segmentar el audio y segmentar el audio que necesito para eliminar el ruido. ¿Conoces alguna biblioteca que tenga este algoritmo o algunas implementaciones en pseudocódigo? Methinks Audacity utiliza dicho método para eliminar el ruido. Es muy efectivo, pero se deja al usuario marcar el área de solo ruido.

Estoy escribiendo en Python y es un proyecto gratuito de código abierto.

¡Gracias por leer!


Bienvenido a DSP.SE. ¡Esta es una pregunta increíble! Espero que puedas obtener algunas buenas pistas aquí.
Phonon

@Lukasz Tracewski Respetado señor: Aunque es demasiado tarde, pero estoy trabajando en el mismo proyecto, así que tengo problemas como cómo puedo hacer un espectrograma desde el archivo wav. Puede ahorrarme más tiempo ya que estoy tratando de resolver este problema de los últimos 2 meses. Gracias de
antemano

@MubeenKhan ¿Quiere decir ayuda para producir espectrograma a partir de un archivo de audio? Hay docenas de herramientas y bibliotecas adecuadas para este propósito, ¿necesita alguna recomendación? ¿O estás preguntando acerca de la reducción de ruido?
Lukasz Tracewski

Respuestas:


4

Al final, lo que ha demostrado ser la mejor solución fue la detección de inicio basada en alta frecuencia o contenido de energía. Antes de que pudiera funcionar, tuve que usar un filtro de paso alto para cortar primero 1 kHz, ya que contenía demasiado ruido.

Una vez que tuve un área de solo ruido, pude usar su perfil para reducir el ruido del resto de la muestra.

Una biblioteca que encontré particularmente útil fue Aubio . Tiene un buen conjunto de ejemplos y ofrece muchos algoritmos para elegir para la detección de inicio.


0

No sé mucho sobre la reducción de ruido de audio, pero después de una sustracción de ruido rápida y sucia del filtro de banda de paso (alrededor de 1500-3000 hz) obtengo esto:

https://dl.dropboxusercontent.com/u/98395391/signal_denoised.wav

Creo que suena un poco mejor de las señales filtradas y originales.

Con un filtro Wiener simple obtengo resultados muy similares.


A menos que te haya entendido mal, entonces parece que te estás refiriendo a algo que ya hice en el segundo párrafo de mi pregunta (justo debajo del primer gráfico). Con el método descrito en mi respuesta pude encontrar todos los inicios y luego aplicar la resta espectral, lo que da resultados aún mejores. Lamentablemente, también produce los llamados "tonos musicales", que ahora son mi principal preocupación. ¡Gracias de cualquier manera!
Lukasz Tracewski
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.