POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Clasificador de Sonido en Edge AI (Parte 2): Extracción y Entrenamiento

Extracción de Características y Entrenamiento del Clasificador de Sonido en Edge AI (Parte 2)

Publicado el 30/08/2025

En la Parte 1 preparamos un conjunto equilibrado de fragmentos de audio cortos. En esta Parte 2 convertimos esos fragmentos en características numéricas compactas y entrenamos un modelo ligero apto para ejecutarse en un Raspberry Pi Pico.

Resumen de lo que cubrimos

1 Conjunto de características de 33 dimensiones y razones de selección.

2 Cómo calcularlas de forma eficiente en entornos embebidos.

3 Entrenamiento de una regresión logística multinomial con normalización adecuada.

4 Métricas reales de evaluación y matriz de confusión.

5 Exportación de pesos a un encabezado C++ para el firmware del Pico.

Conjunto de características 33 dimensiones

Para objetivos MCU preferimos características diseñadas a mano y de bajo coste computacional que mantengan la esencia de cada clase. Por fragmento de audio de 1.5 a 2.0 segundos, enmarcado con ventana Hann de 25 ms y hop de 10 ms, usamos las siguientes estadísticas por snippet

12 energías de banda aproximadas mediante Goertzel que cubren aproximadamente 300 a 4800 Hz, calculando la media y la desviación estándar en el tiempo para cada banda, lo que aporta 24 dimensiones

RMS media y desviación estándar 2 dimensiones

Centroid espectral media y desviación estándar 2 dimensiones

Rolloff espectral al 85 por ciento media y desviación estándar 2 dimensiones

Tasa de cruces por cero media y desviación estándar 2 dimensiones

Planitud espectral media 1 dimensión

Total 33 dimensiones

Por qué Goertzel

Goertzel es más ligero que un banco denso de filtros y se adapta bien a plataformas embebidas. Las estadísticas temporales añaden robustez frente a variaciones de voz, sala y dispositivo.

Preprocesado y enmarcado

Normalizamos por pico para consistencia y aplicamos pre énfasis para realzar las frecuencias altas, lo que ayuda a detectar alarmas y timbres. Después se generan tramas superpuestas con ventana Hann de 25 ms y hop de 10 ms y se aplican las operaciones por trama necesarias para las métricas espectrales y temporales.

Bandas Goertzel eficientes

Para aproximar la energía de cada banda calculamos unas pocas frecuencias por banda con el algoritmo de Goertzel y promediamos los resultados. Luego hacemos pooling temporal para obtener media y desviación estándar por banda. Importante: no aplicamos estandarización global en este paso; solo hacemos una normalización interna tipo z score dentro de cada vector de 12 bandas para eliminar sesgos de escala por banda. La estandarización global se ajusta sobre el conjunto de entrenamiento y se aplica más tarde.

Composición de las características

Calculamos transformadas por trama para derivar magnitudes, de las cuales extraemos centroides espectrales y rolloff al 0.85 por ciento. La tasa de cruces por cero se obtiene por cambios de signo en las tramas y la planitud espectral con su media temporal. Finalmente ensamblamos el vector de 33 dimensiones con orden consistente y serializamos a un CSV llamado featuresv1.csv con columnas path, label, source, feat donde feat es una lista JSON de 33 valores flotantes.

Entrenamiento con regresión logística multinomial

Flujo práctico y amigable con MCU

Cargamos las características y las etiquetas, ordenamos las etiquetas para conservar el mismo orden que será exportado al firmware como etiquetas legibles, y generamos una partición de entrenamiento y prueba. Si cada clase dispone de al menos dos fuentes distintas, hacemos un split por origen para evitar fugas de datos; en caso contrario usamos stratified split para preservar equilibrio de clases.

Normalización ajustada solo con datos de entrenamiento

Calculamos la media y la desviación estándar en el subconjunto de entrenamiento y aplicamos la transformada z sobre entrenamiento y prueba. Se añade un epsilon pequeño para evitar divisiones por cero, lo mismo que hace el firmware en tiempo de ejecución.

Entrenamiento del clasificador

Entrenamos una regresión logística multinomial con pesos de clase balanceados para compensar desequilibrios, con un número de iteraciones aumentado para garantizar convergencia. Este modelo es compacto y fácil de ejecutar en el Pico: básicamente normalización z, una capa lineal y softmax.

Evaluación real

Tras predecir sobre el conjunto de prueba calculamos informe de clasificación y matriz de confusión. En una ejecución representativa obtuvimos precisión 0.87 y F1 ponderado 0.86. La clase mejor detectada fue alarma de humo con F1 cercana a 0.99 y la más difícil fue baby con recall alrededor de 0.69.

Exportación a encabezado para firmware

Tras el ajuste ensamblamos una matriz de parámetros que incluye sesgos y pesos por clase, así como los vectores MU y SIGMA usados para la normalización. Estos se serializan en un archivo model_params.hpp que define constantes con el número de clases, número de características, vectores MU y SIGMA, la matriz de pesos con bias y un array de etiquetas. El código en el dispositivo realiza normalización z por característica seguida de producto punto con cada fila de pesos y softmax para obtener probabilidades.

Exportación para el Pico y eficiencia runtime

El runtime en el Raspberry Pi Pico queda reducido a aplicar (x - MU) dividido por SIGMA para cada característica, luego el cálculo de la capa lineal y la función softmax. Esto mantiene el bucle de inferencia extremadamente pequeño y eficiente en RAM y tiempo CPU.

Errores comunes y consejos prácticos

Evitar doble normalización: no aplicar la estandarización global en el flujo de alimentación desde PC si el Pico ya realiza (x - MU) sobre SIGMA.

Comprobar tasa de muestreo: asegurar que la extracción y el streaming en tiempo real usen la misma frecuencia de muestreo, por ejemplo 16 kHz, para evitar desajustes en las características.

Latencia frente a estabilidad: tramos más cortos y hops reducen la latencia pero pueden afectar estabilidad de detección. Ajustar umbrales y cantidad de frames consecutivos en la FSM del firmware para cada clase como se explicará en la Parte 3.

Próximo paso Parte 3 firmware y demo en vivo

En la Parte 3 desplegaremos el modelo en el Pico incluyendo bucle C++ de inferencia, FSM con histéresis por clase, indicación por LED, logs serie y demo con micrófono en vivo.

Acerca de Q2BSTUDIO

Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida. Ofrecemos soluciones de inteligencia artificial para empresas, agentes IA y desarrollo de modelos ligeros para edge devices. También somos expertos en ciberseguridad, servicios cloud aws y azure, servicios de inteligencia de negocio y visualización con power bi. Integramos proyectos de IA empresarial, automatización y analítica para transformar datos en decisiones y productos escalables.

Por qué trabajar con Q2BSTUDIO

Proporcionamos servicios end to end que cubren consultoría, diseño y desarrollo de aplicaciones a medida, implementación de soluciones de inteligencia artificial, despliegue seguro en la nube con AWS y Azure y cuadros de mando con Power BI. Nuestros equipos combinan experiencia en seguridad y en modelos eficientes para edge computing, lo que resulta ideal para productos IoT con requisitos de privacidad y latencia reducida.

Palabras clave para posicionamiento

aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi

Recursos y contacto

Repositorio GitHub Edge-AI-Sound-Classifier-on-Raspberry-Pi-Pico en github.com/Ertugrulmutlu/Edge-AI-Sound-Classifier-on-Raspberry-Pi-Pico LinkedIn del autor en linkedin.com/in/ertugrul-mutlu Para proyectos a medida y consultas sobre soluciones de inteligencia artificial y seguridad contactar Q2BSTUDIO a través de nuestros canales corporativos

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio