Intelligence Artificielle & Data

Logiciel de détection d'anomalies sonores de machines

Détection d'anomalies
CNN + LSTM 1D
Deep Learning
PySide6
Maintenance prédictive
Traitement du signal

Au départ un hackathon de master où notre groupe a fini 1ᵉʳ sur 10, que j'ai ensuite repris seul pour en faire une application desktop complète, entraînement du modèle, diagnostic, évaluation ROC et rapports. C'est un modèle CNN + LSTM 1D qui a finalement permis d'identifier de façon fiable les signaux de machines anormaux.

ContexteSons de machines, pannes rares
ApprocheCNN + LSTM 1D, appli desktop
Résultat17/17 pannes, AUC 0,956

Contexte

Le projet est né au hackathon du master Mécatronique, Énergie & Systèmes Intelligents (Université de Strasbourg, septembre 2025), en équipe de quatre (Robin Gras, Noa Hisler, Sylvain Wanke et moi), encadrés par Dominique Knittel. L'objectif, repérer automatiquement des signaux sonores anormaux de machines tournantes, ce qui est le cœur de la maintenance prédictive. On travaillait sur des enregistrements sans étiquettes et en temps limité, avec des anomalies rares et variées, impossibles à apprendre une par une. Le groupe a fini 1ᵉʳ sur 10. J'ai ensuite repris le sujet seul, chez moi, pour le transformer en un vrai logiciel utilisable, avec des données nettoyées et un modèle entraîné et validé proprement.

Approche / Solution

Au hackathon, on a exploré en parallèle plusieurs familles de méthodes sous MATLAB, distance cosinus sur spectres moyens, k-means, DTW, Isolation Forest, auto-encodeur et modèles profonds. C'est le modèle CNN + LSTM 1D qui a fait la différence, en séparant nettement les signaux sains des signaux en panne, et c'est lui qui a finalement permis de trouver les fichiers anormaux. Chez moi, j'ai industrialisé le tout dans une application desktop (Python, PySide6, PyTorch, scikit-learn). On y entraîne le modèle, on diagnostique un signal, on évalue les performances (courbe ROC, AUC) et on calibre le seuil de décision. L'application gère plusieurs machines, accepte tous les formats audio courants (wav, mp3, enregistrements de téléphone décodés par ffmpeg), enregistre au micro, journalise chaque diagnostic pour suivre la dérive dans le temps, génère des rapports PDF, et se construit en exécutable autonome sans Python installé. Le protocole reste honnête, le choix de la configuration se fait sur une validation labellisée seule, et les performances sont mesurées ensuite sur les jeux de test sans aucun réglage dessus.

Résultats

Sur la validation labellisée, le modèle atteint une AUC de 0,956. Surtout, l'application détecte 17 pannes sur 17, là où le groupe en repérait 13 sur 17 au hackathon, un rappel parfait sur les deux challenges (5 anomalies sur 5 au Challenge 1, 12 sur 12 au Challenge 2). Ce rappel parfait a un prix, quelques fausses alertes (7 au Challenge 1, 4 au Challenge 2), parce que j'ai réglé le seuil pour ne jamais rater une panne. En maintenance prédictive c'est le bon compromis, et un curseur permet de le déplacer. Mieux vaut inspecter une machine saine que laisser passer une panne. Ce que je retiens, passer d'un prototype de hackathon à un logiciel utilisable change presque tout, données propres, modèle validé, seuil calibré, interface claire. Ce que je pourrais encore faire, agrandir le jeu de données puisque c'est le vrai verrou, tester d'autres architectures temporelles, et suivre la dérive d'une machine réelle sur la durée.

Stack technique

Python
PyTorch
scikit-learn
PySide6 (GUI)
CNN + LSTM 1D
Traitement du signal (log-mel / FFT)
ffmpeg
Exécutable autonome (.exe)

Galerie