18

Quiero desarrollar una aplicación para detectar viento de acuerdo con la transmisión de audio.
Necesito algunas ideas de expertos aquí, solo para darme líneas de guía o algunos enlaces, sé que esta no es una tarea fácil, pero estoy planeando poner mucho esfuerzo aquí.Detección de ruido de viento

Mi plan es detectar algunos patrones comunes en la secuencia, y si los valores son cercanos a estos patrones comunes del ruido del viento, notificaré que se encuentra la coincidencia, si los valores están más cerca del patrón conocido grande, I puede estar seguro de que se detecta viento, si los valores no coinciden con los patrones entonces supongo que no hay mucho viento ...

Ese es mi plan al principio, pero necesito aprender cómo esto las cosas están hechas. ¿Hay algún proyecto abierto que ya esté haciendo esto? ¿O hay alguien que está investigando sobre este tema?

La razón por la que escribo en este foro es porque no sé cómo googlearlo, las cosas que encontré no eran las que estaba buscando. Realmente no sé cómo comenzar a desarrollar este tipo de algoritmo.

EDIT 1:
traté de grabar un viento, y cuando abro el archivo de audio guardado para mí era sólo un montón de números :). Ni siquiera veo en qué formato debo guardar esto, ¿es lo suficientemente bueno? ¿Debo usar algo más, o qué pasa si convierto el archivo de audio de ruido de viento en mp3? ¿Esto ayudará con el análisis?

Bueno, tengo muchas preguntas, es porque no sé de dónde leer más sobre este tipo de tema. Etiqueto mi pregunta con guías, así que espero que alguien me ayude.

Debe haber algo que sea detectable, porque el ruido del viento es tan común, debe haber alguna manera de detectar esto, solo necesitamos que alguien me dé consejos, alguien que esté familiarizado con este tema.

+1

+1: pregunta interesante y honesta. – leppie

+1

¿Ya ha grabado algunas muestras de ruido del viento? ¿Como se ven? Me refiero a la serie de tiempo, los espectros de potencia ... – kol

+3

El viento es silencioso por sí mismo. Es la interacción con otros elementos lo que hace ruido: hojas, casas, oboes, micrófonos ... Así que primero tienes que reducir tu entorno. – mouviciel

Respuesta

3

La ciencia de su problema se denomina "clasificación de patrones", especialmente el subcampo de "clasificación de patrones de audio". La tarea se abstrae clasificando una grabación de sonido en dos clases (viento y no viento). Parece que aún no tiene mucha experiencia en el procesamiento de señales, así que permítame insertar una advertencia central: La clasificación de patrones no es tan fácil como parece al principio. Los humanos sobresalen en la clasificación de patrones. Las computadoras no.

Un buen primer acercamiento suele ser calcular la correlación de la transformada de Fourier de su señal y una muestra. Sin embargo, no sé cuánto dependerá de la velocidad del viento.

Es posible que desee echar un vistazo a la aproximación bag-of-frames, se utilizó con éxito para clasificar el ruido ambiental.

2

Como @thiton mencionó esto es un ejemplo de clasificación de patrones de audio.

Principales características para el viento: es un ruido blanco con forma (banda/hp filtrada) con pequeñas fluctuaciones semialeatorias en amplitud y tono. Al menos así es como la mayoría de los sintetizadores lo reproducen y suena bastante convincente.

Tienes que verificar el contenido espectral y cambiar en el archivo wave, por lo que necesitarás FFT. El formato de entrada realmente no importa, pero obviamente la materia prima (wav) es mejor.

Una vez que lo tienes, debes detectar que está cerca de algún tipo de ruido de color y luego quizás extraer series de tono y amplitud e intentar usar el algoritmo de clasificación de patrones clásico para ese conjunto de datos.Creo que el aprendizaje supervisado podría funcionar aquí.

3

Acabo de encontrar esta publicación Recientemente hice una biblioteca que puede detectar el ruido del viento en las grabaciones.

Hice un modelo de ruido del viento y creé una base de datos de ejemplos y luego entrené un algoritmo de Aprendizaje automático para detectar y medir el nivel de viento de una manera perceptualmente pesada.

¡El C++/C code is here si es útil para cualquier persona!

+0

¿Puede contarnos un poco más sobre su proyecto? Me gustaría saber cómo se licencia el código (¿es de código abierto, qué licencia?). La pregunta también requiere alguna orientación sobre cómo implementar esto. ¿Qué enfoque general tomaste? –

+1

Hola a mi proyecto se lo conoce como el buen proyecto de grabación, es un proyecto de investigación en la Universidad de Salford, Reino Unido www.goodrecording.net. Estamos buscando formas de determinar automáticamente la calidad del audio, especialmente en contenido generado por el usuario. El código es de código abierto, está licenciado bajo la Licencia MIT. El enfoque que utilicé fue hacer un modelo de ruido del viento, agregar el ruido a muchos ejemplos de música de voz y paisajes sonoros, luego extraer características de audio (MFCC) y entrenar un clasificador de bosque aleatorio con la relación señal/ruido cuantificada como etiqueta de clase. – Kenders2000

1

Esto es realmente un problema difícil de resolver.

Suponiendo que tiene un solo micrófono de datos. Los datos brutos que obtienes cuando abres un archivo de audio (señal de dominio de tiempo) tienen algo, pero no mucha información para este tipo de procesamiento. Debe ingresar al dominio de la frecuencia utilizando FFT y observar las estadísticas de los intervalos de frecuencia y usar eso para construir un clasificador utilizando SVM o Random Forests.

Con todo el debido respeto a @Karoly-Horvath, tampoco usaría ninguna grabación que haya sido comprimida, como mp3. Los algoritmos de compresión de audio siempre distorsionan las frecuencias más altas, lo que resulta ser una característica importante para detectar el viento ahora. Si es posible, obtenga los datos PCM brutos de un micrófono. También debe asegurarse de que su grabación se muestree a al menos 24 kHz para que tenga información de la señal hasta 12 kHz.

Finalmente, la forma del viento en el dominio de la frecuencia no es un simple ruido blanco filtrado. Las características son que generalmente tiene mucha energía en las bajas frecuencias (un tipo de sonido estruendoso) con sonidos de batido y aleteo en las frecuencias altas. La energía de alta frecuencia es bastante transitoria, por lo que si su tamaño de FFT es demasiado grande, perderá esta importante función.

Si tiene 2 datos de micrófono, entonces esto se vuelve un poco más fácil. El viento, cuando se registra, es un fenómeno local. Claro, en las grabaciones, se puede escuchar el crujido de las hojas o el sonido de campanas causadas por el viento. Pero eso no es ruido de viento y no debe filtrarse.

El molesto ruido del viento que escucha en una grabación es el aire que golpea la membrana de su micrófono. Ese efecto es un evento local, y puede explotarse si tienes 2 micrófonos. Puede explotarse porque el evento es local para cada micrófono individual y no está correlacionado con el otro micrófono. Por supuesto, donde los 2 micrófonos se colocan en relaciones entre sí también es importante. Deben estar razonablemente cerca el uno del otro (digamos, dentro de 8 pulgadas).

Un dominio de tiempo correlation se puede utilizar para determinar la presencia de ruido del viento. (Todos los otros sonidos grabados están correlacionados entre sí porque los micrófonos están bastante cerca el uno del otro, por lo que una alta correlación significa que no hay viento, baja correlación significa viento). Si va con este enfoque, su archivo de audio de entrada no necesita ser descomprimido. Un algoritmo de compresión razonable no afectará esto.

Espero que esta visión general ayude.