Un asistente de voz sin salida a la nube
Echa un vistazo a esto: un microcontrolador ESP32-S3, desconectado de internet, responde a tu voz. En una demostración reciente, un pequeño chip de 10 dólares escuchó comandos hablados en inglés o francés y cambió el color de su LED integrado. Presionas un botón, hablas y la placa procesa tu solicitud localmente: sin Wi-Fi, sin Bluetooth, sin conexión a la nube.
El hardware es notablemente simple: un microcontrolador ESP32-S3 de aproximadamente 10 dólares con 16 MB de almacenamiento flash y 8 MB de memoria. Añade un pequeño micrófono digital, un botón para activar la grabación y un LED RGB. La computadora portátil que se muestra en la demostración solo muestra la salida; todo el trabajo pesado, desde escuchar hasta ejecutar, ocurre directamente en la propia placa.
Este reconocimiento de voz local es importante porque evita los problemas comunes de los asistentes de voz basados en la nube. Elimina la latencia de la red, garantiza la privacidad al no enviar tus grabaciones de voz a servidores remotos y funciona completamente sin conexión. Aunque esta demostración muestra una interfaz de comandos limitada (como "haz que la luz parpadee en morado"), es un paso poderoso hacia un control por voz totalmente independiente en hardware pequeño y asequible, no un altavoz inteligente de uso general.
El modelo era más grande que el chip
Whistle, el modelo de voz a texto de Cactus Compute, presentó un desafío inmediato: su archivo de modelo único pesaba 16.9 MB. Eso ya es más grande que todo el almacenamiento flash de 16 MB del ESP32-S3, incluso antes de tener en cuenta el firmware del dispositivo. Como contexto, el modelo base Whisper de OpenAI es de unos considerables 145 MB, lo que hace que Whistle sea casi nueve veces más pequeño, pero aún demasiado grande para nuestro pequeño chip.
A pesar de su tamaño compacto, Whistle es notablemente capaz. Admite siete idiomas:
- Inglés
- Francés
- Alemán
- Español
- Italiano
- Holandés
- Polaco
Detecta automáticamente el idioma hablado, proporciona marcas de tiempo de palabras precisas e incluso puede generar incrustaciones de audio (audio embeddings) directamente desde el habla, ofreciendo más que solo transcripción.
La clave para ajustar Whistle en el chip reside en su arquitectura única de "escalera de inteligencia". Mientras que el codificador, que procesa el audio sin procesar, siempre se ejecuta con sus ocho capas, el decodificador, responsable de transcribir el texto, puede ser podado. Cactus Compute diseñó el decodificador con profundidades seleccionables, lo que significa que sigue funcionando correctamente incluso con menos capas.
El creador optó por un decodificador de cuatro capas, que, después de extender cuidadosamente la partición del modelo hasta el final del chip flash, dejó solo 98 KB de flash libre. Una opción de dos capas habría encajado más fácilmente, pero habría introducido notablemente más errores de transcripción, lo que demuestra el valor de esas capas adicionales.
Cómo una pequeña placa convierte el sonido en acción
¿Cómo te "escucha" realmente un chip pequeño? El proceso comienza cuando el micrófono captura tu voz a 16 kHz. Este audio sin procesar se transforma en un espectrograma Mel, un "mapa de calor" visual del tono y la energía de tu voz a lo largo del tiempo, dividido en segmentos de 10 milisegundos.
A continuación, una serie de capas convolucionales comprime este mapa de calor. Cada segmento representa ahora unos 80 milisegundos de audio, convirtiendo un comando de dos segundos en solo 25 fotogramas. Esta representación eficiente es crucial para el ESP32-S3, que tiene recursos limitados.
Entonces, el encoder de Whistle toma el control. Con ocho capas, permite que cada frame de 80 milisegundos "vea" todos los demás frames del clip simultáneamente. Esto significa que el modelo entiende las palabras en el contexto de toda la oración, no solo de forma aislada.
Finalmente, el decoder genera la transcripción, una pieza a la vez. Primero identifica el idioma (inglés o francés, por ejemplo) usando un language token. A medida que produce cada palabra, utiliza "cross-attention" para verificar la salida del encoder, asegurando la consistencia con lo que escuchó.
Un pequeño analizador, no Needle, interpreta entonces el texto transcrito, mapeando palabras como "rojo" o "cinco segundos" a colores LED y patrones de parpadeo específicos. Para más información sobre las capacidades de Whistle, consulta Whistle: Speech to Text in 16.9 MB - Cactus Compute.
Los intentos iniciales de procesar un comando de dos segundos tomaron casi 24 segundos, demasiado lento para un asistente de voz. Se necesitaban optimizaciones significativas. Los ingenieros de Cactus Compute aceleraron el proceso procesando múltiples frames por pasada, dividiendo la carga de trabajo entre ambos núcleos del ESP32-S3 y utilizando operaciones de enteros de 8 bits en la unidad vectorial del chip. Estos cambios redujeron los tiempos de respuesta típicos a unos 10 segundos mucho más utilizables.
¿Te está gustando? Recibe uno así en tu bandeja cada mañana.
un correo al día · date de baja en dos clics · sin rastreadores de terceros
Una demostración convincente, no un reemplazo para dictado
Las afirmaciones de precisión de Whistle son impresionantes, pero el contexto es clave. Cactus Compute reportó cerca de un 78% de éxito en comandos de color sintéticos en inglés, como “flash the light blue”. Agregar ruido de micrófono grabado a estas pruebas causó pocos cambios, demostrando robustez en entornos limitados y controlados.
Los hallazgos prácticos destacan las fortalezas del modelo con frases específicas. Frases cortas como “make it red” o “turn it green” funcionaron entre el 82% y el 93% de las veces en las pruebas. Sin embargo, una sola palabra de color tuvo un rendimiento menor, con un 44% de precisión. El sesgo de palabras clave y el reintento con otro idioma como el francés mejoraron los resultados para conjuntos de comandos fijos.
El lanzamiento de Whistle bajo licencia Apache 2.0 y su diseño de tiempo de ejecución compartido con Needle apuntan hacia un futuro de sistemas privados de voz a herramienta en dispositivos edge. Sin embargo, la placa ESP32-S3 actual no puede albergar ambos modelos simultáneamente, ya que requerirían aproximadamente 24 MB de flash. Su latencia de aproximadamente 10 segundos y su enfoque en la precisión de comandos también limitan aplicaciones más amplias.
Esta demostración convincente muestra un paso significativo para el control de voz local, no un reemplazo para dictado. Puedes explorar el proyecto más a fondo en el repositorio de GitHub y revisar la model card.
Preguntas frecuentes
¿Qué es Whistle?
Whistle es el modelo compacto de voz a texto de Cactus Compute, diseñado para transcribir audio localmente en siete idiomas.
¿Puede Whistle ejecutarse en un ESP32-S3?
Sí, con una compilación personalizada y un decoder reducido. La placa demostrada ejecuta una versión de cuatro capas dentro de su límite de 16 MB de flash.
¿El proyecto de voz ESP32-S3 necesita Wi-Fi?
No. La captura de voz, la transcripción y la lógica de comandos LED se ejecutan en la placa sin Wi-Fi ni Bluetooth.
¿Qué tan preciso y rápido es la demostración?
El creador reporta aproximadamente un 78% de precisión en comandos de color sintéticos en inglés y alrededor de 10 segundos de procesamiento por comando en promedio.
¿Puede Whistle ejecutarse junto a Needle en esta placa?
No en la configuración demostrada: los modelos combinados necesitarían alrededor de 24 MB, más que los 16 MB de flash de la placa.

