Outil de visualisation FFT

rtsys-ut-colour.webp

1) Qu'est-ce que ce projet ?

Stage de 10 semaines chez RTsys (Lanester), entreprise spécialisée en acoustique sous-marine et drones marins. La mission consistait à développer de zéro un outil complet de traitement et de visualisation FFT pour la bouée acoustique RUBHY-AI — un système de surveillance sous-marine multicanal intégrant de l'IA pour la bioacoustique marine.

images.jpeg

Un prototype basé sur Chart.js avait été réalisé avant mon arrivée, mais ses limites structurelles (calcul FFT en JavaScript, rendu DOM, architecture sans séparation DSP/rendu) le rendaient inexploitable sur les flux réels du SDA14.

Mon périmètre couvrait la totalité du backend Rust (pipeline DSP, serveur WebSocket, sources audio WAV et SDA14 via ZeroMQ) et les composants de visualisation frontend (spectre fréquentiel et spectrogramme en WebGL).

<aside>

Spectre temps réel

image.png

</aside>

<aside>

Spectrogramme temps réel

image.png

</aside>

2) Mon approche du projet

J'ai organisé le travail en étapes progressives : valider chaque étape du pipeline sur un signal WAV sinusoïdal à fréquence et amplitude connues, puis monter en complexité vers le flux temps réel SDA14. Cette méthode permettait de détecter les incohérences dans le pipeline sans dépendre du matériel réel.

La décision de repartir de zéro plutôt que de patcher le prototype a été argumentée et validée lors des premières réunions avec mon maître de stage. La nouvelle architecture, Rust pour le DSP, WebSocket pour la communication, WebGL pour le rendu GPU, répond aux contraintes de latence et de débit qu'imposait le flux acoustique temps réel sans surcharger le navigateur ( car prévus pour tourner sur des PC très peu puissants ).

Le pipeline DSP suit une chaîne linéaire avec des étapes clairement délimitées (accumulation → normalisation → fenêtrage → FFT → conversion en magnitudes → mise à l'échelle logarithmique), ce qui permet de tester et valider chaque étape indépendamment.