« SE5 ECEAI/eceai 2024/2025/cruchet-deryckere » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 22 : Ligne 22 :


Nous avons essayé de régler ce problème pour calculer rapidement en envoyant de grand bus de données en supprimant le délai de 1ms mis en place dans le firmware.
Nous avons essayé de régler ce problème pour calculer rapidement en envoyant de grand bus de données en supprimant le délai de 1ms mis en place dans le firmware.
[[Fichier:Nuage de points cruchetderyckere.png|vignette]]
{| class="wikitable"
{| class="wikitable"
|+
|+
!Nombres de points
!Taille du bus
!Score %
!Score (%)
!Graphique
|-
|-
|2
|''2''
|99.88
|''99.88''
| rowspan="5" |[[Fichier:Nuage de points cruchetderyckere.png|vignette|Score en fonction de la taille du bus]]
|-
|-
|64
|64
Ligne 40 : Ligne 41 :
|83.75
|83.75
|-
|-
|4096
|''4096''
|65.39
|''65.39''
|}
|}


Bien évidemment, le résultat pour un bus à 2 données est erroné (l'IA n'a pas assez d'information pour juger une voix avec seulement 2 données) et affiche donc qu'il recconnaît tout le temps la même voix à 100%.
A part cela, le résultat est croissant, à part pour un bus à 4096, qui doit sûrement être trop grand pour être précis sur ses résultats.





Version du 23 septembre 2024 à 15:42

Introduction

Notre projet est d'entraîner une IA à reconnaitre nos deux voix afin de déterminer quelle personne parle.

Pour ce faire, nous disposons de :

  • une carte Nucleo-F401RE
  • un microphone Adafruit MAX4466
  • une machine virtuelle
  • une Raspberry Pi 4 (IP : 172.26.145.209)
  • le logiciel Nanoedge AI

Firmware

Pour prendre en main le microphone, nous avons développé un programme python pour afficher le signal et sa FFT. On connecte le micro à la carte Nucleo avant d'envoyer les données (entre 0 et 4095) par liaison série. Le programme python intercepte ses données et les centre autour de 0 avant de les afficher sur un graphique.

Pour que l'IA comprenne ces données, nous envoyons un bus comprennant entre 2 et 4096 données (puissance de 2) séparées par des ";", qui seront ensuite découpées et placées dans un tableau sur Nanoedge AI.

Implémentation de l'IA

Nous avons enregistré séparément nos 2 voix (et, dans certains cas, un signal "autre", avec des bruits de fond et d'autres voix que les notres) et les avons donné à l'IA pour qu'elle les "apprenne". Nous nous sommes rendu compte d'un dilemme important pour notre utilisation de l'IA :

  • soit on choisit d'envoyer un grand bus de données : l'IA trouve plus souvent notre voix mais le temps de calcul est plus long
  • soit on choisit d'envoyer un petit bus de données : l'IA a plus de mal à avoir le bon résultat mais le temps de calcul est plus court

Nous avons essayé de régler ce problème pour calculer rapidement en envoyant de grand bus de données en supprimant le délai de 1ms mis en place dans le firmware.

Taille du bus Score (%) Graphique
2 99.88
Score en fonction de la taille du bus
64 56.37
512 78.94
2048 83.75
4096 65.39


Bien évidemment, le résultat pour un bus à 2 données est erroné (l'IA n'a pas assez d'information pour juger une voix avec seulement 2 données) et affiche donc qu'il recconnaît tout le temps la même voix à 100%.

A part cela, le résultat est croissant, à part pour un bus à 4096, qui doit sûrement être trop grand pour être précis sur ses résultats.



Lors de la 2eme séance, nous avons réalisé plusieurs tâches:

-Mise en place de la Raspberry Pi 4 (OS + configuration UART)

-Prise en main du capteur de Nucleo-53L5A1

-Réflexion des différents protocoles qui vont être utilisé pour ce projet

- Installation de mosquitto sur la vm

-Nous avons mis en place le point d'accès Wifi sur le Cisco pour la promo connexion sur cet AP avec la raspberry (ping possible depuis la vm)


Concernant la communication entre le capteur et la Raspberry Pi 4, elle se fera en UART car simple à mettre en oeuvre, puis la communication entre la Raspeberry Pi 4 et la Machine Virtuelle se fera via MQTT qui est un protocole de communication utilisé dans les réseaux privés.