Présentation du modèle
Whistle est un modèle de reconnaissance speech‑to‑text destiné aux appareils à ressources limitées (smartphones, wearables, microcontrôleurs). Le fichier binaire pèse 16,9 Mo, s’exécute exclusivement sur le CPU et ne requiert aucune dépendance externe. Il s’appuie sur le même moteur C++ que le modèle Needle, partageant quantisation et conteneur. Le modèle accepte jusqu’à 30 s d’audio 16 kHz mono et détecte automatiquement l’une des sept langues prises en charge : anglais, allemand, français, espagnol, italien, néerlandais et polonais.
Architecture et flux de données
Le pré‑traitement convertit le signal en log‑mel (80 bins, fenêtre 25 ms, hop 10 ms, bande 250‑3500 Hz) puis le passe à travers un « convolutional stem » de 128 canaux, kernel 9, qui réduit le nombre de trames de 3 000 à 375 (une trame chaque 80 ms). L’encodeur comporte huit blocs Simple Attention identiques à ceux de Needle, avec quatre voies résiduelles mHC et un MLP Monarch Hadamard en remplacement du FFN. L’attention n’est pas causale : une trame à 3 s peut consulter une trame à 12 s. Le décodeur utilise huit blocs Laddered Simple Attention, largeur 512, GQA 8q : 2kv, 48 d pour les requêtes/clefs, 64 d pour les valeurs, et une convolution causale à 3 taps sur Q, K et V. Chaque couche intègre une attention croisée gated :
x ← x + σ(g) · softmax(q̂ K̂ᵀ/√d) V où g est appris par couche et K, V proviennent de l’encodeur et sont projetés une fois par clip (375 trames × 8 couches). Le décodage s’effectue avec une recherche à cinq faisceaux, chaque faisceau conservant un cache de transcription sans répéter l’encodage. Un automaton Aho‑Corasick applique un biais de mots‑clés aux probabilités log des faisceaux.Performances et comparaisons
Sur les jeux de test LibriSpeech (clean / other), SPGISpeech, Earnings‑22 et la moyenne FLEURS, Whistle obtient un taux d’erreur de mots (WER) inférieur à Whisper base (145,3 Mo) et Moonshine tiny v2 (41,9 Mo). En revanche, Whisper base reste meilleur sur TED‑LIUM, AMI et la moyenne MLS. En termes de latence, Whistle génère le premier token en 11,1 ms, contre 73,2 ms pour Whisper base et 22,8 ms pour Moonshine tiny v2. La vitesse de décodage atteint 1 319 tokens/s, largement supérieure aux 266 tokens/s de Whisper base et aux 262 tokens/s de Moonshine tiny v2, mesurée sur un Apple M4 Pro avec 10 s d’audio. Le modèle ne transmet jamais l’audio hors de l’appareil, garantissant la confidentialité des données vocales.
Limites et perspectives
Whistle ne supporte que sept langues et limite la transcription à 320 tokens, ce qui peut restreindre les scénarios de dialogue long. Le modèle ne fournit pas de métriques détaillées pour les jeux de données TED‑LIUM, AMI et MLS, limitant l’évaluation exhaustive. L’utilisation d’un seul moteur C++ simplifie le déploiement mais empêche l’exploitation de GPU ou d’accélérateurs spécialisés, ce qui pourrait améliorer davantage la vitesse de décodage. Future work pourrait inclure l’extension à d’autres langues, l’augmentation du vocabulaire et l’intégration d’optimisations matérielles.