Détection sonore : un système embarqué pour localiser l’origine d’un bruit

Imaginez-vous en promenade dans les bois, un beau dimanche ensoleillé de novembre. L’air est frais, les feuilles crissent sous vos pas… mais soudain, des coups de feu résonnent partout. Vous êtes cerné par les chasseurs, avec l’impression de vous trouver en zone de guerre. Pas de panique ! Je vous présente ici un dispositif qui permet de localiser rapidement l’origine des détonations et de s’en éloigner en toute sécurité.

Bertrand Selva

11/22/20243 min read

Déterminer l’angle d’arrivée des sons

Le système repose sur un Raspberry Pi Pico, associé à un écran tactile de 3,5 pouces pour l’affichage. Quatre microphones analogiques sont disposés sur une structure imprimée en 3D.

J’utilise les quatre entrées analogiques du microcontrôleur disponibles sur les clones chinois des Pico (la version d’origine utilise une des quatre entrées analogiques pour mesurer la tension d’alimentation). Vous trouverez des détails sur la réalisation technique et le fonctionnement du dispositif sur mon portfolio : https://selvasystems.net/innovations

Lorsqu’un bruit suffisamment fort est détecté, le dispositif calcule les décalages temporels entre les signaux captés par les microphones. Ces décalages sont ensuite traités pour déterminer la position de la source sonore à l’aide d’une table précalculée. L’utilisation de la table précalculée et le calcul de corrélation croisée, réalisés dans le domaine fréquentiel, permettent un traitement rapide, même avec un matériel modeste : la complexité du calcul de corrélation est en N log(N) contre une identification temporelle en NxN ! Le résultat est affiché dès qu’il est disponible sur l’écran LCD, de la même manière qu’une aiguille pointant vers l’origine du son.

Démonstration

Vous pouvez voir ci-dessous que le traitement ne dure que quelques centaines de ms (la phase de traitement correspond à la led allumé en rouge). Un écran LCD permet d’afficher en temps réel le résultat de l’identification. On constate que l’identification est robuste et rapide ! C’est assez chouette d’arriver à un tel résultat avec une base matérielle si modeste.

Limitations

Il existe néanmoins des limitations inhérentes à ce mode de détection de l’angle d’arrivée :

  • Source sonore statique : La source sonore doit être statique puisque nous mesurons la différence de temps de vol des ondes sonores. Si la source est en mouvement, sa vitesse étant inconnue, notre analyse devient impossible.

  • Source unique : Le système fonctionne mieux avec une seule source sonore. Bien qu’il soit possible d’imaginer des améliorations avec un traitement du signal adapté, la présence de multiples sources peut compliquer l’identification.

Vers des applications étendues

Ce dispositif constitue la brique élémentaire pour plusieurs idées de développement :

  • Robotique : Il pourrait permettre à un robot de repérer une source sonore et ainsi de mieux percevoir son environnement, en ajoutant la directivité à la capture du son.

  • Sécurité : Il pourrait être utilisé pour trianguler la position d’une source sonore dans une zone étendue, en déployant plusieurs dispositifs communiquant entre eux (par LoRa, par exemple).

Deep learning et l’Audio Event Detection

Le passage à un microcontrôleur comme l’ESP32 permettrait également d’améliorer les performances en utilisant des micros MEMS sur les ports I2S de l’ESP32, à la fois plus sensibles et moins sujets au bruit. En utilisant les fonctions "DSP" de l'ESP32 (permises par les instructions SIMD des coeurs Xtensa LX7 en association à la librairie esp-dsp d’Espressif) pour les calculs des FFT, cela rendrait possible un traitement plus rapide et, pourquoi pas, de manière asynchrone, déterminer le type de son détecté : faire de l’Audio Event Detection (AED).

Les FFT sont déjà calculées, préparant l’extraction des features pour l’AED. J’ai déjà implémenté ce genre de solution sur un ESP32 avec succès. Vous pourrez voir dans la vidéo ci-dessous que le temps de détection est particulièrement rapide avec une inférence du réseau de neurones toutes les 250 ms. L’application est la détection du mot « Lumière », mais en réalité, j’extrais les features à base de spectrogramme comme pour l’AED (il existe d'autres méthodes pour le Keyword spotting que j'ai discuté dans un précédent billet sur mon blog : https://selvasystems.net/levolution-des-techniques-dextraction-de-features-pour-le-keyword-spotting) . L’intégration de méthodes de deep learning permettrait de différencier les sons captés, qu’il s’agisse d’un coup de feu, d’un éclat de voix ou d’un bruit mécanique, ce qui serait une réelle plus-value pour les applications liées à la sécurité, par exemple. Identification en plus de la détection de l'origine !

Un exemple d’innovation embarquée

Ce projet, qui ne coûte qu’une dizaine d’euros à reproduire, montre comment une conception optimisée peut dépasser des contraintes matérielles sévères et permettre d’accéder à un résultat intéressant. C’est une approche qui fonctionne car elle combine physique de la propagation des ondes, traitement du signal et programmation.

Vous trouverez des détails sur l'architecture du programme, l'implémentation et l'entrainement du modèle sur mon portfolio : https://selvasystems.net/deep-learning