Análisis de sonidos

#1
Hola amigos. Las temáticas alrededor de audio son absolutamente nuevas para mi. Busco recomendación de como meterme en la materia. La razón para este deseo es el poder analizar sie un ruido detectado por un micrófono proviene de un alarma, o si son otras de las muchas fuentes de sonido que pueden aparecer en mi taller.
Tengo una fuente de sonido, una alarma. Esta alarma tendrá ciertas características de frecuencia y de intensidad. Quiero poder detectar esa alarma analizando el sonido digitalizado en un micro controlador en su entrada ADC. Una flex cortando metal o limando madera causará un ruido diferente al de la alarma y quiero poder diferenciar entre ellos.
 
#2
Uno podria decir que, por ejemplo, te concentras en los elementos de frecuencia de la alarma y si esos elementos aparecen, decir que hay alarma. Pero un ruido de banda ancha te daria falsa deteccion porque contiene todas las frecuencias de la alarma. Por otra parte podrias decir que buscas que esten SOLO los elementos de la alarma, pero si la alarma aparece junto con otro sonido, tambien tendrias problemas.

Quiza te convenga tambien analizar la posibilidad de usar una funcion de correlacion.

Bueno, ese es mi aporte. No se si aporta o confunde
 
Última edición:

Fusatronica

Well-known-Thundercat
#4
Hola amigos. Las temáticas alrededor de audio son absolutamente nuevas para mi. Busco recomendación de como meterme en la materia. La razón para este deseo es el poder analizar sie un ruido detectado por un micrófono proviene de un alarma, o si son otras de las muchas fuentes de sonido que pueden aparecer en mi taller.
Tengo una fuente de sonido, una alarma. Esta alarma tendrá ciertas características de frecuencia y de intensidad. Quiero poder detectar esa alarma analizando el sonido digitalizado en un micro controlador en su entrada ADC. Una flex cortando metal o limando madera causará un ruido diferente al de la alarma y quiero poder diferenciar entre ellos.
Ahí si le tocaría documentarse o empaparse un poco mas del tema:unsure:

Como para meterse en la materia como usted lo dice. Yo en su caso empezaría a documentarme sobre la diferencia entre sonido, ruido, silencio y interferencias:unsure:
 

Adjuntos

#5
... Busco recomendación de como meterme en la materia. La razón para este deseo es el poder analizar sie un ruido detectado por un micrófono proviene de un alarma, o si son otras de las muchas fuentes de sonido que pueden aparecer en mi taller.
Puede llegar a ser tan simple como un filtro dentro de la banda de mayor energía de la alarma y disparar por amplitud, medianamente simple como filtrar y contar cruces por 0 (da idea de la frecuencia y su variación) o complicado como necesitar transformaciones de Fourier, correlaciones y aparataje probabilistico + librerías acordes. Todo dependerá de cuanto los demás ruidos enmascaren la señal.

Sea como sea, para ver donde estás parado se analiza primero en la PC, se graban muestras en situaciones ruidosas y con Matlab (por ejemplo) se la trata de "limpiar".
 
#6
Hola, no sé si tú requerimiento es analizar el sonido cómo lo planteas. O simplemente es detectar una alarma. Si es la 2da. opción. Pues conecta un par de cables a la salida de sirena, rectificas, filtras y listo.
 
#7
Siguiendo con la idea de Gudino... quiza la alarma tiene una salida digital, o una de contacto seco, que puedas usar para detectar en forma mucho mas simple (y fiable) que la alarma esta activa?
 

DOSMETROS

High 2m Modereitor
#8
Cómo la generación de frecuencias de la alarma seguramente sea digital , entonces será muy predecible ;)

Agregarle luz a la alarma y detectar dicha luz . . .

La conexion directa inclusive la inalámbrica me gusta más ;)
 
#9
Gracias por las respuestas dadas. La noción de lo que busco va en usar tecnologías como la de reconocer voces. Debe haber bibliotecas que puedan implementar tal función. En general. Pienso que la alarma del detector de humo usa una fuente de sonido basada en una componente "piezo"! Como he entendido hasta ahora, el máximo volumen con una fuente de sonido piezo requiere de una PWM con 50% de duty cicle. Empezando a jugar con el detector de humo y la placa ESP32-WROOM-32 voy a digitalizar la conexión a la componente piezo para reconocer la frecuencia del PWM que hace sonar el alarma. Conociendo esta frecuencia debería existir una biblioteca que reconozca un sonido correspondiente. Luego pienso ejecutar la misma software de análisis poniendo mi flex a causar "ruido" y "ver" que tal funciona el reconocer la alarma.

A ver si encuentro alguna biblioteca para analizar o reconocer la frecuencia del alarma.
 
#10
Aparentemente soy demasiado ajeno al tema para poder preguntar de tal forma que reciba la respuesta deseada, respectivamente necesito aproximarme al tema como ignorante total! Cosa que soy!

Buscando en el Internet me encontré el programa WavePad que para uso no comercial es gratis. Aparentemente este programa sera capaz de mostrarme imágenes que me permitan "ver" como es la señal que el micrófono graba. Según entiendo una señal en cada momento tiene un perfil de frecuencias y a la vez un perfil que muestra todo el tiempo que grabo la señal. Así yo podré grabar la alarma acústica del detector de humo para cada una de las formas causas de la creación de tal alarma acústica. Por ejemplo el "test" y el alarma "real" por nombrar 2 casos.

Esto me capacitará a tener una impresión. También podré grabar otros "ruidos" de mi taller como lo son el uso de la "Flex", etcétera. El programa también tiene funcionalidades como el del cómputo usando FFT' s para poder ver de que frecuencias se compone un ruido analizado.

Ahora viene de lo que no se como empezar!

1. Uso el micrófono de mi webcam para crear un archivo que contenga lo que graba:
El resultado supongo es el archivo que por ejemplo puedo analizar usando WavePad.

2. Usaré una placa ESP32-WROOM junto con un micrófono que conecto tal cual lo encuentro en ejemplos en YouTube. De allí resultan mis preguntas de ignorante total de la materia!

Existe algún programa para el ESP32 o el ESP8266 que me crea el archivo grabado de un alarma? Digo lo que creo que es lo que deseo, por si estoy totalmente equivocado!

Un programa que es ejecutado en ese SoC, sea ESP32 o ESP8266 tiene qua analizar datos grabados por el micrófono. Me imagino, que después de estudiar las imágenes de las alarmas en el programa WavePad, experimentaré para encontrar una rutina que reconozca que el micrófono ha detectado un sonido que requiere ser analizado!

Segundo: Grabo lo que detecta el micrófono hasta reconocer que el sonido ha terminado. El resultado debería ser ese archivo que ahora analizo en detalle!

Tercero: Donde encuentro un programa que puedo adaptar para verificar si el ruido es la alarma?

Quarto:En caso de que el analysis bajo el punto "Tercero" halla reconocido las características propias del alarma, entonces repite el punto "Tercero" cuando el alarma se repite y verifica que efectivamente hay un evento de alarma de humo.

Quinto: Transmito la información del alarma detectado al WiFi y a las otras placas ESP32-WROOM que adicionalmente a la función de detectar alarmas de "su" alarma de humo, forman una red "Mesh" que pasaría la información de una alarma detectada a las otras placas ESP32-WROOM.

Sexto: Activa una propia alarma acústica adicional durante las pausas del alarma intermitente del sensor de humo.

Séptimo: Pondré en lugares estratégicos ESP32-WROOM con pantalla OLED que son miembros de la red MESH y unidades conectadas al WiFi. donde un ser humano puede recibir la información de cual alarma fue activada primero y si se han sumado alarmas adicionales en posiciones distribuidas en la casa.

Pienso programar las placas ESP32 usando la IDE de Arduino con los módulos adicionales que permiten programar ESP32 y ESP8266.

Cierro esta pregunta repitiendo: Como puedo "empezar" a programar la ESP32 para analizar el archivo grabado. Realmente, no tengo idea alguna ni cargo con experiencia alguna en este campo del análisis de frecuencias!
 
#11
Hola, busca información acerca de la STFFT (Short-Time FFT) por ejemplo en la Wikipedia. Esta transformación puede ser ajustada para tener suficiente información tanto en tiempo como en frecuencia. Hay código en C para hacer STFFT que no creo que sea difícil portar a los ESP. El objetivo como he dicho, es obtener información útil tanto en tiempo como en frecuencia. Esta información puede ser la entrada a una red neuronal que clasifique el tipo de sonido en función de su categoría. Implementar una red neuronal artificial ya entrenada en un ESP no es difícil, es un algoritmo de operaciones con matrices.

Lo difícil es entrenar la red neuronal para que aprenda a distinguir los sonidos, pero eso se puede hacer con los archivos de sonido en un ordenador convencional y luego copiar la red neuronal en el ESP. Supongo que vas a usar varios sonidos de test y reales con su clasificación del tipo de sonido ya asignada de antemano. En ese caso lo lógico es usar una red neuronal de aprendizaje supervisado. La más popular es el Perceptron Multicapa.
 
#12
@palurdo: por tus informaciones va mi ruta de pensamientos! Pero igualmente deseo agradecer a Fusatronica y los otros por sus respuestas!

@chclau y DOSMETROS: Por ley y por responsabilidad también ante la ley no quiero meterme físicamente en las alarmas de humo. Estoy haciendo un curso de Microsoft via "edx.org": Introduction to Artificial Intelligence que de forma muy buena y con unos videos te lleva al punto de poder escribir los propios programas de IA. Voy por el estudio del aprendizaje de máquinas supervisado y no supervisado sobre datos numerales y el encontrar las estructuras en bases de datos no numerales, llamados "clusters". Quiero pasar con éxito los tests al final de este primer capítulo y ejecutar los ejemplos de laboratorio.

Recién cuando haya hecho esto con éxito me meteré en lo de las redes neuronales! Ya he estudiado un poco la materia de las redes neuronales y de la diferenciación dependiendo de cuantos planos de nudos neuronales se tienen. Veo que allí también se diferencia entre supervisados y no supervisados lo que según entiendo se define por como se hace el entrenamiento. Pero ya este primer capítulo del curso presenta 2 algoritmos y como se define el entorno del análisis de datos y se evalúan los resultados por medio de la medida de "error" que define la calidad. La herramienta que es una web aplicación que es posible usar de forma gratuita, "Azure Machine Learning Studio" apoya este proceso por la facilidad de cambiar de algoritmo y umbrales que definen la correcta respuesta o la errónea respuesta presentando los datos de forma gráfica. No mas que esto hace valioso mirarse los videos de forma gratuita.

Hay una herramienta similar a AZURE Machine Learning para redes neuronales?
 
#13
No sé si es similar a Azzure, y personalmente no lo he usado, pero en el trabajo he escuchado mencionar a TensorFlow como ambiente integrado para ML con redes neuronales.
 

Temas similares

Arriba