Apéndice B. Capturar audio en Arduino
El siguiente texto recorre el código de captura de audio de la aplicación "despertar-palabra" del Capítulo 7. Como no está directamente relacionado con el aprendizaje automático, se proporciona como apéndice.
El Arduino Nano 33 BLE Sense tiene un micrófono integrado. Para recibir datos de audio del micrófono, podemos registrar una función de llamada de retorno que se llame cuando haya un trozo de nuevos datos de audio listo.
Cada vez que esto ocurra, escribiremos el trozo de datos nuevos en un búfer que almacena una reserva de datos. Como los datos de audio ocupan mucha memoria, el búfer sólo tiene espacio para una cantidad determinada de datos. Estos datos se sobrescriben cuando la memoria intermedia se llena.
Siempre que nuestro programa esté listo para ejecutar la inferencia, puede leer los datos del último segundo de este búfer. Mientras sigan llegando nuevos datos más rápido de lo que necesitamos acceder a ellos, siempre habrá suficientes datos nuevos en el búfer para preprocesarlos e introducirlos en nuestro modelo.
Cada ciclo de preprocesamiento e inferencia es complejo, y tarda cierto tiempo en completarse. Por eso, sólo podremos ejecutar la inferencia unas pocas veces por segundo en un Arduino. Esto significa que será fácil que nuestro búfer se llene.
Como vimos en el capítulo 7, audio_provider.h implementa estas dos funciones:
-
GetAudioSamples()
, que proporciona un puntero a un fragmento de datos de audio sin procesar -
LatestAudioTimestamp() ...
Get TinyML now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.