El problema fundamental que Whistle aborda es la necesidad creciente de procesamiento de lenguaje natural (PLN) en el edge, específicamente el reconocimiento automático de voz (ASR), con restricciones severas de recursos computacionales y energéticos. La ubicuidad de dispositivos como wearables, microcontroladores y sistemas embebidos en automoción demanda soluciones ASR que no dependan de la nube, garantizando baja latencia, privacidad y operación offline.
Tradicionalmente, los modelos ASR de alta precisión han sido grandes y computacionalmente intensivos, requiriendo GPUs o infraestructura de servidor. Whistle propone una arquitectura que, mediante el uso de cuantización y bloques de atención simplificados, logra un rendimiento competitivo en dispositivos con CPU, democratizando el acceso a capacidades ASR avanzadas en el edge. Esto se alinea con la tendencia de "computación pervasiva" y la necesidad de reducir la dependencia de la conectividad constante a la nube.
Arquitectura del Sistema
Whistle opera con una arquitectura de encoder-decoder basada en transformadores, optimizada para inferencia en CPU. El frontend procesa audio mono de 16 kHz, extrayendo 80 bins log-mel en ventanas de 25 ms con un hop de 10 ms, y aplica un stem convolucional para reducir la secuencia de frames a una por cada 80 ms.
El encoder utiliza ocho bloques de 'Simple Attention', que incorporan cuatro carriles residuales mHC y una red Monarch Hadamard MLP en lugar de la red feed-forward tradicional. A diferencia de los modelos causales, la atención del encoder no es causal, permitiendo que un frame en cualquier punto del audio atienda a frames posteriores.
El decoder emplea ocho bloques de 'Laddered Simple Attention' con una anchura de 512, ocho cabezas de query a dos cabezas KV, y convoluciones causales de 3-tap en Q, K y V. Una adición clave por capa es la atención cruzada (gated cross attention) que lee la salida del encoder, con proyecciones de K y V del clip precalculadas una vez y mantenidas para todo el proceso de decodificación. La decodificación utiliza un beam search de cinco haces, puntuados por probabilidad logarítmica normalizada por longitud. La funcionalidad de 'keyword biasing' se implementa mediante un autómata Aho-Corasick que ajusta las probabilidades de los haces. El modelo soporta detección de idioma y transcripción en siete idiomas, emitiendo el idioma detectado como un token. La característica 'laddered' permite seleccionar la profundidad del decoder en tiempo de carga, optimizando el trade-off entre latencia y precisión.
Flujo de Procesamiento de Audio en Whistle
- 1 Audio Input Audio mono 16 kHz, hasta 30 segundos
- 2 Frontend Processing Ventana 25ms, hop 10ms, 80 bins log-mel, stem convolucional (3000 -> 375 frames)
- 3 Encoder 8 bloques Simple Attention (mHC, Monarch Hadamard MLP), atención no causal
- 4 Cross Attention Projections K y V del encoder precalculadas y retenidas para el decoder
- 5 Decoder 8 bloques Laddered Simple Attention, atención causal, gated cross attention
- 6 Beam Search 5 haces, puntuación por log prob normalizada, keyword biasing con Aho-Corasick
- 7 Output Transcripción, timestamps de palabras, embedding de voz, idioma detectado
| Capa | Tecnología | Justificación |
|---|---|---|
| compute | C++ Engine | Runtime de inferencia de bajo nivel, sin dependencias, optimizado para CPU vs TensorFlow Lite, ONNX Runtime, PyTorch Mobile |
| data-processing | Log-mel filter banks | Extracción de características acústicas del audio vs MFCC, espectrogramas lineales 80 bins, banda limitada 250-3500 Hz |
| storage | .cact file format | Formato de archivo compacto para modelos de speech y texto vs ONNX, TFLite model format 16.9 MB para el modelo Whistle |
Trade-offs
Ganancias
- ▲▲ Tamaño del modelo
- ▲ Latencia en clips cortos
- ▲ Independencia de la nube
- ▲ Flexibilidad de despliegue (multi-plataforma)
Costes
- △ Precisión en ciertos benchmarks (TED-LIUM, AMI, MLS average)
Fundamentos Teóricos
La arquitectura de Whistle se basa en los principios fundamentales de los modelos Transformer, introducidos por Vaswani et al. en "Attention Is All You Need" (2017). La utilización de mecanismos de atención para capturar dependencias de largo alcance en secuencias es central. La optimización para el edge y la eficiencia en CPU resuenan con la investigación en modelos compactos y cuantizados, como los trabajos de Han et al. en "Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding" (2015), que exploran técnicas para reducir el tamaño y la complejidad computacional de las redes neuronales.
El uso de un autómata Aho-Corasick para el 'keyword biasing' es una aplicación clásica de algoritmos de búsqueda de patrones de cadenas, descrito por Aho y Corasick en "Efficient string matching: An aid to bibliographic search" (1975). Este algoritmo permite una búsqueda eficiente de múltiples patrones (palabras clave) en un texto (la secuencia de tokens del beam search), mejorando la probabilidad de las transcripciones que contienen las palabras clave deseadas. La estrategia de 'laddered decoder' para ajustar la profundidad del modelo en tiempo de carga es una forma de 'model pruning' o 'dynamic network' que busca optimizar el rendimiento para diferentes entornos de ejecución, un área activa de investigación en la eficiencia de modelos de IA.