Comme la plupart d’entre nous, [Peter] a eu un peu plus de temps libre pendant la quarantaine et a décidé de revenir sur la technologie de reconnaissance vocale dans les années 1970. Rapidement, il a commencé à se dire: «Hmm… je me demande si je pourrais faire ça avec un Arduino Nano?» Nous avons probablement tous eu des pensées similaires, mais [Peter] a vraiment mis sa théorie à l’épreuve.

Le matériel lui-même est assez simple. Il existe un Arduino Nano pour exécuter l’algorithme de reconnaissance vocale et un amplificateur de microphone MAX9814 pour capturer les commandes vocales. Cependant, la beauté de [Peter’s] approche, réside dans sa mise en œuvre logicielle. [Peter] a un peu d’interaction entre un programme PC personnalisé qu’il a écrit et l’Arduino Nano. L’aspect apprentissage de son algorithme se fait sur un PC, mais l’implémentation se fait en temps réel sur l’Arduino Nano, une approche typique pour vraiment tout algorithme d’apprentissage automatique déployé sur un microcontrôleur. Pour capturer des exemples de commandes audio ou d’énoncés, [Peter] a d’abord dû optimiser l’ADC du Nano afin qu’il puisse obtenir des fréquences d’échantillonnage suffisantes pour le traitement de la parole. En faisant un peu de programmation de bas niveau, il a atteint une fréquence d’échantillonnage de 9kps, ce qui est très rapide pour le traitement audio.

Pour analyser les énoncés, il a d’abord divisé chaque énoncé d’échantillon en segments de 50 ms. Pensez à diviser un seul mot prononcé en ses différentes syllabes. Comme analyser le «se-» dans «sept» séparé du «-ven». 50 ms peut être trop long ou trop court pour capturer chaque syllabe proprement, mais j’espère que cela vous donne une bonne image mentale de ce [Peter’s] programme fait. Il a ensuite calculé l’énergie de 5 bandes de fréquences différentes, pour chaque segment de chaque énoncé. Normalement, cela se fait à l’aide d’une transformée de Fourier, mais le Nano n’a pas assez de puissance de traitement pour calculer la transformée de Fourier en temps réel, alors Peter a essayé une approche différente. Au lieu de cela, il a implémenté 5 ensembles de filtres passe-bande numériques, lui permettant de calculer plus facilement l’énergie du signal dans chaque bande de fréquences.

L’énergie de chaque bande de fréquence pour chaque segment est ensuite envoyée à un PC où un programme personnalisé crée des «modèles» basés sur les exemples d’énoncés qu’il génère. Le nœud de son algorithme est de comparer à quel point l’énergie de chaque bande de fréquence pour chaque énoncé (et pour chaque segment) est proche du modèle. Le programme PC produit un fichier .h qui peut être compilé directement sur le Nano. Il utilise l’exemple de la capacité de reconnaître les nombres 0-9, mais vous pouvez changer ces commandes en «start» ou «stop», par exemple, si vous le souhaitez.

[Peter] admet que vous ne pouvez pas implémenter le type de reconnaissance vocale sur un Arduino Nano que nous attendons de ces appareils d’écoute cachés, mais il mentionne que de petits appareils mains libres comme un multimètre monté sur la tête pourraient bénéficier d’un seul mot ou commande vocale à une seule phrase. Et peut-être que cela pourrait vous rassurer en sachant que tout ce que vous dites n’est pas immédiatement diffusé dans le cloud et donné à nos seigneurs IA. Ou peut-être que nous commençons tous à nous y habituer. Quelle que soit votre position sur l’état actuel de l’IA, j’espère que vous avez trouvé de l’inspiration pour votre prochain projet.