<aside>
▶︎ Les apprentissages critiques
<aside>
Rappel : stage de 10 semaines chez RTsys (Lanester) consistant à développer un outil de visualisation et de traitement FFT pour la bouée acoustique RUBHY-AI.
L’objectif était de remplacer un prototype existant basé sur Chart.js, limité par son architecture et incapable de gérer efficacement des flux audio temps réel.
Le système développé comprend :
</aside>
J’ai travaillé de manière progressive en partant d’une validation sur des signaux simples (WAV sinusoïdaux avec fréquence et amplitude connues), avant de passer aux flux temps réel SDA14.
Une décision importante a été de repartir d’une architecture complète plutôt que de corriger le prototype existant. Celui-ci reposait sur du calcul FFT côté JavaScript et un rendu DOM, ce qui ne permettait pas d’atteindre les contraintes de performance et de latence. Cette décision a été discutée puis validée avec mon maître de stage.
J’ai ensuite structuré le développement autour d’un pipeline DSP clairement découpé (accumulation → normalisation → fenêtrage → FFT → conversion → mise à l’échelle logarithmique), afin de pouvoir isoler et tester chaque étape indépendamment.
J’ai combiné les notions de traitement du signal, d’architecture logicielle et de programmation système pour construire un système cohérent de bout en bout.
Le backend a été développé en Rust avec Tokio pour gérer les flux temps réel et la concurrence. Le rendu a été réalisé en WebGL/GLSL afin d’exploiter le GPU et garantir une fluidité suffisante pour l’affichage du spectrogramme. Le tout est synchronisé via WebSocket.
Les notions de séparation des couches (acquisition / traitement / rendu) ont été essentielles pour garder un système testable et évolutif.
AC21.01 — Spécifications et contraintes :
Les contraintes ont été intégrées dès la conception (temps réel, faible latence, compatibilité flux SDA14). Elles ont guidé le choix de Rust et WebGL ainsi que la refonte complète de l’architecture.
AC21.03 — Bonnes pratiques de conception :
Le système est organisé en modules indépendants : acquisition, DSP, communication et rendu. Le pipeline est linéaire et testable étape par étape, ce qui facilite le debug et l’évolution.
AC21.04 — Validation par les tests :
Des tests ont été réalisés à partir de fichiers WAV synthétiques dont les valeurs théoriques sont connues (fréquence, amplitude, bruit contrôlé). Les résultats FFT ont été comparés aux attentes pour valider chaque étape du pipeline.