Whistle apporte la reconnaissance vocale sur l'appareil (16,9 Mo) aux périphériques edge
Cactus Compute lance Whistle, un petit modèle de parole open-weight qui s'exécute sur CPU sans dépendances et s'intègre au moteur Needle pour l'appel direct d'outils.
Traduit automatiquement depuis l'original anglais.
Cactus Compute a publié Whistle, un nouveau modèle de reconnaissance vocale open-weight conçu spécifiquement pour les environnements à ressources limitées. Lancé le 2 octobre 2026, ce modèle de 16,9 Mo s'exécute entièrement sur le CPU sans dépendances externes, ciblant les mobiles, les wearables, les robots et les microcontrôleurs. Il partage son moteur C++ sous-jacent avec Needle, permettant aux développeurs de charger des capacités textuelles et vocales à partir d'un seul binaire.
Ce qui s'est passé
Whistle représente un changement significatif vers un traitement audio ultra-léger directement sur l'appareil. Contrairement aux modèles plus volumineux nécessitant une connexion cloud ou un stockage local important, Whistle fonctionne comme un fichier unique chargé directement en mémoire. Le modèle prend en charge la transcription jusqu'à 30 secondes d'audio dans sept langues : anglais, allemand, français, espagnol, italien, néerlandais et polonais. La détection de langue est automatique sauf si une langue spécifique est indiquée par le développeur.
La sortie met l'accent sur la confidentialité et l'efficacité. Les données audio ne quittent jamais l'appareil pendant le traitement. Au-delà de la simple transcription, Whistle fournit des horodatages au niveau du mot avec des métriques de début, de fin et de probabilité dérivées du mécanisme d'attention du décodeur. Il offre également des capacités d'embedding vocal, produisant une ligne par trame de 80 ms depuis l'encodeur sans générer de transcript complet. Cette flexibilité permet aux ingénieurs d'utiliser le modèle pour diverses tâches, de la reconnaissance de commandes à l'analyse sémantique audio.
L'intégration avec l'écosystème Needle existant est une fonctionnalité clé. La même fonction needle_load peut lire les modèles Whistle, les modèles texte Needle, ou les deux simultanément. Cette approche unifiée signifie qu'un seul binaire d'application peut gérer l'entrée vocale, la traiter en texte et exécuter immédiatement les appels d'outils correspondants sans intermédiaire de l'application hôte.
Comment cela fonctionne
L'architecture repose sur des composants partagés avec le modèle Needle afin de minimiser la duplication de code et l'empreinte mémoire. Le front-end traite l'audio mono 16 kHz en utilisant une fenêtre de 25 ms et un pas de 10 ms, créant 80 bins log-mel limités en bande à 250-3500 Hz. Une tige convolutive réduit considérablement le nombre de trames, résultant en 375 trames pour un clip de 30 secondes, chaque trame représentant 80 ms d'audio.
L'encodeur se compose de huit blocs Simple Attention utilisant des voies résiduelles mHC et un MLP Monarch Hadamard au lieu d'un réseau feed-forward traditionnel. Crucialement, le mécanisme d'attention n'est pas causal, permettant aux trames d'accéder au contexte futur au sein du clip. Le décodeur utilise huit blocs Laddered Simple Attention avec cross-attention à porte pour lire depuis l'encodeur. Cette conception permet aux projections de s'exécuter une fois par clip, signifiant que les opérations de beam search ne mettent en cache que des transcripts courts plutôt que de retraiter l'audio.
Le décodage utilise cinq beams scorés par probabilité logarithmique normalisée par la longueur. Un automate Aho-Corasick fonctionne parallèlement aux beams pour supporter le biais de mots-clés, augmentant la probabilité de phrases spécifiques lors de la recherche. Le modèle inclut un mécanisme de détection de silence qui mesure la plage de volume avant le début du décodage, renvoyant des résultats vides pour les entrées silencieuses afin d'économiser les calculs. La profondeur du décodeur est sélectionnable au chargement via --audio-depth, permettant des compromis supplémentaires entre précision et vitesse tout en gardant l'encodeur fixe.
Détails clés
- Taille du modèle : 16,9 Mo, nettement plus petit que Whisper base (145,3 Mo) et Moonshine tiny v2 (41,9 Mo).
- Performance : Atteint 11,1 ms de temps jusqu'au premier token et 1 319 tokens par seconde sur un CPU Apple M4 Pro.
- Langues : Prend en charge l'anglais, l'allemand, le français, l'espagnol, l'italien, le néerlandais et le polonais avec détection automatique.
- Sorties : Fournit la transcription, des horodatages au niveau du mot avec probabilités, et des embeddings vocaux.
- Déploiement : Binaires précompilés disponibles pour dix-sept cibles incluant macOS, Linux, Android, iOS, RISC-V et WASM.
- Intégration : Utilise le même format de conteneur
.cactque Needle, permettant des workflows combinés voix et texte dans un seul moteur.
Pourquoi c'est important
Pour les développeurs construisant des systèmes embarqués ou des applications mobiles, Whistle élimine le besoin d'API cloud complexes ou de bibliothèques locales lourdes. La capacité d'exécuter la reconnaissance vocale sur un microcontrôleur ou un wearable sans connectivité internet ouvre de nouvelles possibilités pour les produits axés sur la confidentialité et fonctionnant hors ligne. La faible empreinte signifie qu'il peut coexister avec d'autres logiques d'application sans consommer trop de mémoire ou d'autonomie batterie.
L'intégration avec Needle simplifie le développement d'agents contrôlés par la voix. Au lieu de construire des pipelines séparés pour la conversion voix-texte et la reconnaissance d'intention, les développeurs peuvent utiliser un seul moteur pour transcrire l'audio et déclencher directement des appels de fonctions. Cela réduit la latence et la charge d'ingénierie, car l'application n'a pas besoin d'analyser des chaînes de texte intermédiaires. L'approche binaire unifiée simplifie également le déploiement et les mises à jour sur des plateformes matérielles diverses.
Ce que vous pouvez faire
- Installez le package via pip en utilisant
pip install cactus-needlepour commencer à expérimenter avec l'API Python. - Testez la transcription en temps réel dans votre terminal en utilisant la commande
needle whistle playground. - Comparez les performances avec d'autres modèles en utilisant
needle whistle comparepour voir les différences de latence et de précision côte à côte. - Implémentez le biais de mots-clés en passant une liste de termes spécifiques pour améliorer la reconnaissance de noms ou de jargon technique.
- Déployez les binaires précompilés sur des appareils cibles tels que Android, iOS ou RISC-V.



