Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Detecte eventos de audio con Amazon Rekognition

Cuando la mayoría de la gente piensa en usar el aprendizaje automático (ML) con datos de audio, el caso de uso que suele venir a la mente es transcripción, también conocido como conversión de voz a texto. Sin embargo, existen otras aplicaciones útiles, incluido el uso de ML para detectar sonidos.

El uso de software para detectar un sonido se llama detección de eventos de audio, y tiene una serie de aplicaciones. Por ejemplo, suponga que desea monitorear los sonidos del piso de una fábrica ruidosa, escuchando una campana de alarma que indica un problema con una máquina. En un entorno sanitario, puede utilizar la detección de eventos de audio para escuchar de forma pasiva los sonidos de un paciente que indican un problema de salud agudo. Las cargas de trabajo multimedia son una buena opción para esta técnica, por ejemplo, para detectar cuándo suena el silbato de un árbitro en un video deportivo. Y, por supuesto, puede usar esta técnica en una variedad de cargas de trabajo de vigilancia, como escuchar un disparo o el sonido de un accidente automovilístico desde un micrófono montado sobre una calle de la ciudad.

Esta publicación describe cómo detectar sonidos en un archivo de audio, incluso si hay sonidos de fondo significativos al mismo tiempo. Es más, quizás sorprendentemente, usamos técnicas basadas en visión por computadora para hacer la detección, usando Reconocimiento de amazonas.

Uso de datos de audio con aprendizaje automático

El primer paso para detectar eventos de audio es comprender cómo se representan los datos de audio. A los efectos de esta publicación, tratamos solo con audio grabado, aunque estas técnicas funcionan con transmisión de audio.

El audio grabado generalmente se almacena como una secuencia de muestras de sonido, que miden la intensidad de las ondas de sonido que golpean el micrófono durante la grabación, a lo largo del tiempo. Hay una amplia variedad de formatos con los que almacenar estas muestras, pero un enfoque común es almacenar 10,000 20,000, 40,000 0 o incluso 65535 XNUMX muestras por segundo, siendo cada muestra un número entero de XNUMX a XNUMX (dos bytes). Debido a que cada muestra mide solo la intensidad de las ondas de sonido en un momento particular, los datos de sonido generalmente no son útiles para los procesos de ML porque no tienen características útiles en su estado original.

Para que los datos sean útiles, la muestra de sonido se convierte en una imagen llamada espectrograma, que es una representación de los datos de audio que muestra la intensidad de diferentes bandas de frecuencia a lo largo del tiempo. La siguiente imagen muestra un ejemplo.

El eje X de esta imagen representa el tiempo, lo que significa que el borde izquierdo de la imagen es el comienzo del sonido y el borde derecho de la imagen es el final. Cada columna de datos dentro de la imagen representa diferentes bandas de frecuencia (indicadas por la escala en el lado izquierdo de la imagen), y el color en cada punto representa la intensidad de esa frecuencia en ese momento.

La escala vertical para espectrogramas se puede cambiar a otras representaciones. Por ejemplo, la escala lineal significa que el eje Y se divide uniformemente entre las frecuencias, la escala logarítmica usa una escala logarítmica, etc. El problema con el uso de estas representaciones es que las frecuencias en un archivo de sonido generalmente no se distribuyen de manera uniforme, por lo que la mayor parte de la información que nos puede interesar termina agrupada cerca de la parte inferior de la imagen (las frecuencias más bajas).

Para resolver ese problema, nuestra imagen de muestra es un ejemplo de un espectrograma de Mel, que está escalado para aproximarse mucho a cómo los seres humanos perciben el sonido. Observe los indicadores de frecuencia a lo largo del lado izquierdo de la imagen: dan una idea de cómo se distribuyen verticalmente y está claro que es una escala no lineal.

Además, podemos modificar la medición de intensidad por frecuencia por tiempo para mejorar varias características del audio que se está midiendo. Al igual que con la escala del eje Y que se implementa mediante un espectrograma Mel, otros enfatizan características como la intensidad de las 12 clases de tonos distintivos que se utilizan para estudiar música (croma). Otra clase enfatiza las características horizontales (armónicas) o las características verticales (de percusión). El tipo de sonido que se detecta debe impulsar el tipo de espectrograma utilizado para el sistema de detección.

El espectrograma de ejemplo anterior representa un clip de música que dura poco más de 2 minutos. Al acercar se revelan más detalles, como se muestra en la siguiente imagen.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Los números en la parte superior de la imagen muestran la cantidad de segundos desde el inicio del archivo de audio. Puede ver claramente una secuencia de sonidos que parece repetirse más de cuatro veces por segundo, indicados por los colores brillantes cerca de la parte inferior de la imagen.

Como puede ver, este es uno de los beneficios de convertir el audio en un espectrograma: los distintos sonidos a menudo son fácilmente visibles a simple vista e incluso si no lo son, con frecuencia se pueden detectar mediante algoritmos de detección de objetos de visión por computadora. De hecho, este es exactamente el proceso que seguimos para detectar sonidos.

Buscando sonidos discretos en un espectrograma

Dependiendo de la duración del archivo de audio que estamos buscando, encontrar un sonido discreto que dure solo uno o dos segundos es un desafío. Consulte el primer espectrograma que compartimos, porque estamos viendo 3:30 minutos completos de datos, los detalles que duran solo un segundo no son visibles. Hicimos un gran zoom para ver el ritmo que se muestra en la segunda imagen. Claramente, con archivos de sonido más grandes (y, por lo tanto, espectrogramas mucho más grandes), rápidamente nos encontramos con problemas a menos que utilicemos un enfoque diferente. Ese enfoque se llama ventanas.

La ventana se refiere al uso de una ventana deslizante que se mueve a lo largo de todo el espectrograma, aislando unos pocos segundos (o menos) a la vez. Al aislar repetidamente partes de la imagen general, obtenemos imágenes más pequeñas que se pueden buscar para detectar la presencia del sonido. Debido a que cada ventana podría dar como resultado solo una parte de la imagen que estamos buscando (como en el caso de buscar un sonido que no comience exactamente al comienzo de una ventana), la creación de ventanas a menudo se realiza superponiendo ventanas sucesivas. Por ejemplo, la primera ventana comienza a las 0:00 y se extiende 2 segundos, luego la segunda ventana comienza a las 0:01 y se extiende 2 segundos, y la tercera ventana comienza a las 0:02 y se extiende 2 segundos, y así sucesivamente.

La ventana divide una imagen de espectrograma horizontalmente. Podemos mejorar la efectividad del proceso de detección aislando ciertas bandas de frecuencia recortando o buscando solo ciertas partes verticales de la imagen. Por ejemplo, si sabe que la campana de alarma que desea detectar genera sonidos que van desde una frecuencia específica a otra, puede modificar la ventana actual para considerar solo esos rangos de frecuencia. Eso reduce enormemente la cantidad de datos a manipular y da como resultado una búsqueda mucho más rápida. También mejora la precisión, porque elimina posibles coincidencias de falsos positivos que ocurren en bandas de frecuencia fuera del rango deseado. Las siguientes imágenes comparan un eje Y completo (izquierda) con un eje Y limitado (derecha).

Eje Y completo

Eje Y completo

Eje Y limitado

Eje Y limitado

Ahora que sabemos cómo iterar sobre un espectrograma con un enfoque de ventana y filtrar a ciertas bandas de frecuencia, el siguiente paso es realizar la búsqueda real del sonido. Para eso, usamos Etiquetas personalizadas de Amazon Rekognition. La característica de etiquetas personalizadas de Rekognition se basa en las capacidades existentes de Amazon Rekognition, que ya está capacitado en decenas de millones de imágenes en muchas categorías. En lugar de miles de imágenes, simplemente necesita cargar un pequeño conjunto de imágenes de entrenamiento (normalmente, unos pocos cientos de imágenes, pero el tamaño óptimo del conjunto de datos de entrenamiento debe llegarse experimentalmente en función del caso de uso específico para evitar un entrenamiento insuficiente o excesivo del modelo). ) que son específicos para su caso de uso a través de la consola de etiquetas personalizadas de Rekognition.

Si sus imágenes ya están etiquetadas, se puede acceder a la capacitación de Amazon Rekognition con solo unos pocos clics. Como alternativa, puede etiquetar las imágenes directamente en la interfaz de etiquetado de Amazon Rekognition o utilizar Verdad fundamental de Amazon SageMaker para etiquetarlos por ti. Cuando Amazon Rekognition comienza a entrenar a partir de su conjunto de imágenes, produce un modelo de análisis de imágenes personalizado para usted en solo unas pocas horas. Detrás de escena, las etiquetas personalizadas de Rekognition cargan e inspeccionan automáticamente los datos de entrenamiento, seleccionan los algoritmos de ML correctos, entrenan un modelo y proporcionan métricas de rendimiento del modelo. A continuación, puede utilizar su modelo personalizado a través de la API de etiquetas personalizadas de Rekognition e integrarlo en sus aplicaciones.

Ensamblar datos de entrenamiento y entrenar un modelo de etiquetas personalizadas de Rekognition

En Repositorio de GitHub asociado con esta publicación, encontrará un código que muestra cómo escuchar el sonido de una alarma de humo, independientemente del ruido de fondo. En este caso, nuestro modelo de etiquetas personalizadas de Rekognition es un modelo de clasificación binaria, lo que significa que los resultados son "se detectó un sonido de alarma de humo" o "no se detectó un sonido de alarma de humo".

Para crear un modelo personalizado, necesitamos datos de entrenamiento. Esos datos de entrenamiento se componen de dos tipos principales: sonidos ambientales y los sonidos que desea detectar (como una alarma de humo que se dispara).

Los datos ambientales deben representar una amplia variedad de paisajes sonoros típicos del entorno en el que desea detectar el sonido. Por ejemplo, si desea detectar el sonido de una alarma de humo en el entorno de una fábrica, comience con los sonidos grabados en ese entorno de fábrica bajo una variedad de situaciones (sin que suene la alarma de humo, por supuesto).

Los sonidos que desea detectar deben aislarse si es posible, lo que significa que las grabaciones deben ser solo el sonido en sí mismo sin ningún sonido ambiental de fondo. Para nuestro ejemplo, ese es el sonido de una alarma de humo que se activa.

Una vez que haya recopilado estos sonidos, el código en el repositorio de GitHub muestra cómo combinar los sonidos ambientales con los sonidos de la alarma de humo de varias maneras (y luego convertirlos en espectrogramas) para crear una cantidad de imágenes que representen los sonidos ambientales. con y sin los sonidos de la alarma de humo superpuestos. La siguiente imagen es un ejemplo de algunos sonidos ambientales con un sonido de alarma de humo (las barras horizontales brillantes) superpuestas.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Los datos de entrenamiento y prueba se almacenan en un Servicio de almacenamiento simple de Amazon (Amazon S3) cubeta. La siguiente estructura de directorios es un buen punto de partida para organizar los datos dentro del depósito.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El código de muestra en el repositorio de GitHub le permite elegir cuántas imágenes de entrenamiento crear. Las etiquetas personalizadas de Rekognition no requieren una gran cantidad de imágenes de entrenamiento. Un conjunto de entrenamiento de 200 a 500 imágenes debería ser suficiente.

La creación de un proyecto de etiquetas personalizadas de Rekognition requiere que especifique los URI de la carpeta S3 que contiene los datos de entrenamiento y (opcionalmente) los datos de prueba. Al especificar las fuentes de datos para el trabajo de entrenamiento, una de las opciones es Etiquetado automático, como se muestra en la siguiente captura de pantalla.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

El uso de esta opción significa que Amazon Rekognition utiliza los nombres de las carpetas como nombres de etiquetas. Para nuestro caso de uso de detección de alarmas de humo, la estructura de carpetas dentro de las carpetas de tren y prueba se parece a la siguiente captura de pantalla.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Las imágenes de datos de entrenamiento van a esas carpetas, con los espectrogramas que contienen el sonido de la alarma de humo en la carpeta de alarma y los espectrogramas que no contienen el sonido de la alarma de humo en la carpeta no_alarm carpeta. Amazon Rekognition utiliza esos nombres como nombres de clase de salida para el modelo de etiquetas personalizadas.

El entrenamiento de un modelo de etiqueta personalizado suele tardar entre 30 y 90 minutos. Al final de ese entrenamiento, debe iniciar el modelo entrenado para que esté disponible para su uso.

Arquitectura de extremo a extremo para la detección de sonido

Después de crear nuestro modelo, el siguiente paso es configurar una tubería de inferencia, de modo que podamos usar el modelo para detectar si el sonido de una alarma de humo está presente en un archivo de audio. Para hacer esto, el sonido de entrada debe convertirse en un espectrograma y luego filtrarse por frecuencia, como se hizo para el proceso de entrenamiento. Cada ventana del espectrograma se entrega al modelo, que devuelve una clasificación que indica si la alarma de humo sonó o no.

El siguiente diagrama muestra una arquitectura de ejemplo que implementa esta canalización de inferencia.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Esta arquitectura espera a que se coloque un archivo de audio en un depósito de S3, lo que provoca un AWS Lambda función a invocar. Lambda es un servicio informático basado en eventos y sin servidor que le permite ejecutar código para prácticamente cualquier tipo de aplicación o servicio de back-end sin aprovisionar ni administrar servidores. Puede activar una función Lambda desde más de 200 servicios de AWS y aplicaciones de software como servicio (SaaS) y pagar solo por lo que usa.

La función Lambda recibe el nombre del depósito y el nombre de la clave (o nombre de archivo) del archivo de audio. El archivo se descarga desde Amazon S3 a la memoria de la función, que luego lo convierte en un espectrograma y realiza el filtrado de frecuencias y ventanas. Luego, cada parte del espectrograma con ventanas se envía a Amazon Rekognition, que utiliza el modelo de etiquetas personalizadas de Amazon entrenado previamente para detectar el sonido. Si se encuentra ese sonido, la función Lambda lo indica mediante el uso de un Servicio de notificación simple de Amazon (Amazon SNS) notificación. Amazon SNS ofrece un enfoque de publicación/suscripción en el que se pueden enviar notificaciones a Servicio de cola simple de Amazon (Amazon SQS), funciones de Lambda, puntos de conexión HTTPS, direcciones de correo electrónico, inserción móvil y más.

Conclusión

Puede usar el aprendizaje automático con datos de audio para determinar cuándo se producen ciertos sonidos, incluso cuando se producen otros sonidos al mismo tiempo. Para hacerlo, es necesario convertir el sonido en una imagen de espectrograma y luego buscar en diferentes partes de ese espectrograma mediante ventanas y filtrado por banda de frecuencia. Las etiquetas personalizadas de Rekognition facilitan el entrenamiento de un modelo personalizado para la detección de sonido.

Puede utilizar el Repositorio GitHub que contiene el código de ejemplo de esta publicación como punto de partida para sus propios experimentos. Para obtener más información sobre la detección de eventos de audio, consulte Detección de eventos de sonido: un tutorial.


Sobre los autores

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Greg Sommerville es arquitecto sénior de creación de prototipos en el equipo de ingeniería en la nube y creación de prototipos de AWS, donde ayuda a los clientes de AWS a implementar soluciones innovadoras para problemas desafiantes con el aprendizaje automático, IoT y tecnologías sin servidor. Vive en Ann Arbor, Michigan, y disfruta practicar yoga, atender a sus perros y jugar al póquer.

Detecte eventos de audio con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Jeff Harman es arquitecto sénior de creación de prototipos en el equipo de ingeniería en la nube y creación de prototipos de AWS, donde ayuda a los clientes de AWS a implementar soluciones innovadoras para problemas desafiantes. Vive en Unionville, Connecticut y disfruta de la carpintería, la herrería y Minecraft.

Sello de tiempo:

Mas de Aprendizaje automático de AWS