Un assistant vocal sans porte de sortie vers le cloud
Regardez ceci : un microcontrôleur ESP32-S3, déconnecté d'Internet, répond à votre voix. Dans une démonstration récente, une minuscule puce à 10 $ a entendu des commandes vocales en anglais ou en français et a changé la couleur de sa LED intégrée. Vous appuyez sur un bouton, parlez, et la carte traite votre demande localement — sans Wi-Fi, sans Bluetooth, sans connexion cloud.
Le matériel est remarquablement simple : un microcontrôleur ESP32-S3 d'environ 10 $ avec 16 Mo de stockage flash et 8 Mo de mémoire. Ajoutez un petit microphone numérique, un bouton-poussoir pour activer l'enregistrement et une LED RVB. L'ordinateur portable présenté dans la démonstration affiche simplement le résultat ; tout le travail lourd, de l'écoute à l'exécution, se fait directement sur la carte elle-même.
Cette reconnaissance vocale locale est importante car elle contourne les problèmes courants des assistants vocaux basés sur le cloud. Elle élimine la latence réseau, garantit la confidentialité en n'envoyant pas vos enregistrements vocaux vers des serveurs distants, et fonctionne entièrement hors ligne. Bien que cette démonstration présente une interface de commande limitée — comme « fais clignoter la lumière en violet » — c'est une étape puissante vers un contrôle vocal totalement indépendant sur du matériel minuscule et abordable, et non un haut-parleur intelligent polyvalent.
Le modèle était plus gros que la puce
Whistle, le modèle de synthèse vocale de Cactus Compute, a présenté un défi immédiat : son fichier de modèle unique pesait 16,9 Mo. C'est déjà plus grand que la totalité du stockage flash de 16 Mo de l'ESP32-S3, avant même de prendre en compte le firmware de l'appareil. Pour le contexte, le modèle de base Whisper d'OpenAI pèse 145 Mo, ce qui rend Whistle près de neuf fois plus petit, mais toujours trop volumineux pour notre minuscule puce.
Malgré sa taille compacte, Whistle est remarquablement performant. Il prend en charge sept langues :
- Anglais
- Français
- Allemand
- Espagnol
- Italien
- Néerlandais
- Polonais
Il détecte automatiquement la langue parlée, fournit des horodatages de mots précis et peut même générer des embeddings audio directement à partir de la parole, offrant bien plus qu'une simple transcription.
La clé pour faire tenir Whistle sur la puce réside dans son architecture unique en « échelle d'intelligence ». Alors que l'encodeur, qui traite l'audio brut, fonctionne toujours avec l'ensemble de ses huit couches, le décodeur, responsable de la transcription du texte, peut être élagué. Cactus Compute a conçu le décodeur avec des profondeurs sélectionnables, ce qui signifie qu'il fonctionne toujours correctement même avec moins de couches.
Le créateur a opté pour un décodeur à quatre couches, ce qui, après avoir soigneusement étendu la partition du modèle jusqu'à la toute fin de la puce flash, a laissé seulement 98 Ko de flash libre. Une option à deux couches aurait été plus facile à intégrer mais aurait introduit nettement plus d'erreurs de transcription, prouvant la valeur de ces couches supplémentaires.
Comment une minuscule carte transforme le son en action
Comment une minuscule puce peut-elle réellement vous « entendre » ? Le processus commence lorsque le microphone capture votre voix à 16 kHz. Cet audio brut se transforme en un spectrogramme de Mel, une « carte thermique » visuelle de la hauteur et de l'énergie de votre voix au fil du temps, découpée en segments de 10 millisecondes.
Ensuite, une série de couches convolutionnelles compresse cette carte thermique. Chaque tranche représente désormais environ 80 millisecondes d'audio, transformant une commande de deux secondes en seulement 25 images. Cette représentation efficace est cruciale pour l'ESP32-S3, aux ressources limitées.
Ensuite, l'encoder de Whistle prend le relais. Avec huit couches, il permet à chaque trame de 80 millisecondes de « voir » simultanément toutes les autres trames du clip. Cela signifie que le modèle comprend les mots dans le contexte de votre phrase entière, et non de manière isolée.
Enfin, le decoder génère la transcription, un élément à la fois. Il identifie d'abord la langue (l'anglais ou le français, par exemple) en utilisant un language token. À mesure qu'il produit chaque mot, il utilise le « cross-attention » pour vérifier la sortie de l'encoder, garantissant ainsi la cohérence avec ce qu'il a entendu.
Un petit analyseur, et non Needle, interprète ensuite le texte transcrit, en faisant correspondre des mots comme « rouge » ou « cinq secondes » à des couleurs LED et des motifs de clignotement spécifiques. Pour en savoir plus sur les capacités de Whistle, consultez Whistle: Speech to Text in 16.9 MB - Cactus Compute.
Les tentatives initiales pour traiter une commande de deux secondes prenaient près de 24 secondes, ce qui est beaucoup trop lent pour un assistant vocal. Des optimisations significatives étaient nécessaires. Les ingénieurs de Cactus Compute ont accéléré le processus en traitant plusieurs trames par passage, en répartissant la charge de travail sur les deux cœurs de l'ESP32-S3 et en utilisant des opérations sur entiers 8 bits sur l'unité vectorielle de la puce. Ces changements ont ramené les temps de réponse typiques à 10 secondes, une durée beaucoup plus utilisable.
Cet article vous plaît ? Recevez-en un comme celui-ci chaque matin.
un e-mail par jour · désinscription en deux clics · aucun traqueur tiers
Une démonstration convaincante, pas un remplaçant pour la dictée
Les affirmations concernant la précision de Whistle sont impressionnantes, mais le contexte est essentiel. Cactus Compute a rapporté environ 78 % de succès sur des commandes de couleurs synthétiques en anglais, comme « flash the light blue ». L'ajout de bruit de microphone enregistré à ces tests n'a guère entraîné de changement, démontrant une robustesse dans des environnements limités et contrôlés.
Les résultats pratiques soulignent les points forts du modèle avec des formulations spécifiques. Des phrases courtes telles que « make it red » ou « turn it green » ont fonctionné dans 82 à 93 % des cas lors des tests. Un seul mot de couleur, cependant, a obtenu une précision plus faible de 44 %. Le biais de mots-clés et la répétition avec une autre langue comme le français ont amélioré les résultats pour des ensembles de commandes fixes.
La version Apache 2.0 de Whistle et la conception de runtime partagé avec Needle pointent vers un avenir de systèmes voix-vers-outil privés sur des appareils en périphérie (edge devices). Cependant, la carte ESP32-S3 actuelle ne peut pas contenir les deux modèles simultanément, car ils nécessiteraient environ 24 Mo de mémoire flash. Sa latence d'environ 10 secondes et son accent sur la précision des commandes limitent également les applications plus larges.
Cette démonstration convaincante illustre une étape importante pour le contrôle vocal local, et non un remplaçant pour la dictée. Vous pouvez explorer davantage le projet dans le dépôt GitHub et consulter la fiche du modèle.
Foire aux questions
Qu'est-ce que Whistle ?
Whistle est le modèle compact de synthèse vocale de Cactus Compute, conçu pour transcrire l'audio localement dans sept langues.
Whistle peut-il fonctionner sur un ESP32-S3 ?
Oui, avec une version personnalisée et un décodeur élagué. La carte démontrée exécute une version à quatre couches dans sa limite de 16 Mo de mémoire flash.
Le projet vocal ESP32-S3 nécessite-t-il le Wi-Fi ?
Non. La capture vocale, la transcription et la logique de commande LED fonctionnent sur la carte sans Wi-Fi ni Bluetooth.
Quelle est la précision et la vitesse de la démonstration ?
Le créateur rapporte environ 78 % de précision sur les commandes de couleurs synthétiques en anglais et environ 10 secondes de traitement par commande en moyenne.
Whistle peut-il fonctionner aux côtés de Needle sur cette carte ?
Pas dans la configuration démontrée : les modèles combinés nécessiteraient environ 24 Mo, soit plus que les 16 Mo de mémoire flash de la carte.

