LONDE Tristan
๐ Hello!
Iโm an Artificial Intelligence engineering student at ENIB (รcole Nationale dโIngรฉnieurs de Brest), passionate about signal processing, computer vision, and building intelligent systems.
In my free time, I design and develop projects in various fields that interest me (AI, Data Science, software Engineering,โฆ)
For example I have created a fatigue detector (FatiguEye) and AI powered application that recognizes emotions in the human speech (EmotionAI-Voice). I am currently developping an AI local assistant (Numa) and a reverse engineering AI tool for Printed Circuit Boards (PCB) (BoardMapper) with Florian Pasco.
On my GitHub you will find various projects using various technologies, probably mostly Data Science and Machine Learning but not only , as I am curious by nature and always looking forward to learning new technologies and acquiring new skills.
๐ Interests
- ๐ป AI & Machine Learning: Real-time models, voice AI, local-first systems
- ๐ค Speech Synthesis: Custom voice assistants, voice-to-voice pipelines
- ๐๏ธ Computer Vision: Fatigue detection, facial analysis, eye tracking
- ๐ก๏ธ Cybersecurity: Deepfake detection, audio anti-spoofing
- And a lot more !
EmotionAI-voice
An AI-powered application for detecting human emotions
EmotionAI Voice is an open-source deep learning project that classifies vocal emotions using raw .wav
audio.
Itโs designed for applications in mental health monitoring, UX analysis, and intelligent speech interfaces.
๐ฌ The model is trained from scratch, using spectrogram-based audio features, and aims to recognize 8 core emotions.
๐ฏ Features
- ๐ง Emotion recognition:
neutral
,calm
,happy
,sad
,angry
,fearful
,disgust
,surprised
- ๐ง Accepts
.wav
audio inputs (from RAVDESS dataset) - ๐ CNN and CNN+GRU models implemented in PyTorch
- ๐ Real-time evaluation with confusion matrix and accuracy tracking
- ๐ ๏ธ Fully open-source and customizable (no pre-trained models)
- ๐งช Includes SpecAugment for data augmentation (frequency/time masking)
๐ Dataset โ RAVDESS
We use the RAVDESS dataset, which includes:
- ๐ญ 24 professional actors (balanced male/female)
- ๐๏ธ 1440
.wav
files (16-bit, 48kHz) - 8 labeled emotions:
neutral
,calm
,happy
,sad
,angry
,fearful
,disgust
,surprised
Each .wav
file is preprocessed into a Mel spectrogram and stored as .npy
format.
๐ง Model Architectures
2 different models
โ CNN (Best Performance)
- 3x Conv1D + ReLU + MaxPool
- Fully connected layers
- Dropout regularization (adjustable)
๐ CNN + GRU
- CNN front-end for spatial encoding
- GRU (recurrent layers) to capture temporal dynamics
- Lower accuracy than CNN-only model
๐งช SpecAugment: Data Augmentation
To improve generalization, we implemented SpecAugmentTransform
which applies:
- ๐ Time masking: hides random time intervals
- ๐ก Frequency masking: hides random mel frequency bands
๐ Training Results
- Best Validation Accuracy: ~49.6%
- Training set: Actors 1โ20
- Validation set: Actors 21โ24
Confusion Matrix Example:
๐ Key Observations:
- Surprised, calm, and disgust are the most accurately predicted emotions.
- Neutral, happy, and sad tend to be confused with each other, which is common due to subtle acoustic variations.
- The model struggles with fearful and angry in some cases โ suggesting those may share overlapping vocal characteristics in this dataset.
- Emotion classes like happy and fearful are often misclassified due to variability in expression intensity among different actors.
๐ Interpretation
While the model captures general emotion cues, it suffers from class overlap and limited generalization. The accuracy remains significantly above random (12.5% for 8 classes), but there is still room for improvement.
๐ Getting Started
1. Install dependencies
pip install -r requirements.txt
2. Download dataset from Kaggle
Follow the instructions in the README.md located in the data folder
3 . Train the model
python src/train.py
4. Evaluation the performances with a confusion matrix
```bash python src/confusion_matrix.py
FatiguEye
Detection of fatigue using a webcam
A smart computer vision system that detects signs of fatigue, eye strain, and microsleep using a standard webcam.
๐ฏ Purpose
FatiguEye is a real-time fatigue detection system based on eye tracking and facial landmark analysis.
It helps identify early signs of drowsiness by measuring:
- ๐๏ธ Eye Aspect Ratio (EAR)
- ๐ Blink frequency
- โฑ๏ธ Prolonged eyelid closure
- โ ๏ธ Microsleep events
Ideal for driver monitoring, industrial safety, or ergonomic fatigue prevention.
๐ง How It Works
FatiguEye uses MediaPipe Face Mesh to extract eye landmarks, and computes the EAR (Eye Aspect Ratio) on each video frame.
๐ก Processing pipeline:
- ๐ฅ Webcam feed is captured in real-time
- ๐ง Facial landmarks (eyes) are detected with Mediapipe
- ๐ EAR is calculated per eye
- ๐งฎ Blink count and eye closure duration are analyzed
- ๐ Fatigue alerts are raised (visual + audio)
๐ Demo Preview
๐ป Technologies Used
Tech | Description |
---|---|
Python | Core language |
OpenCV | Webcam video processing + overlays |
MediaPipe | Face mesh & eye landmark detection |
NumPy | EAR computation |
Streamlit | Live web dashboard |
winsound | Audio alert (Windows only) |
๐ฆ Installation
```bash git clone https://github.com/Tirovo/fatigueye.git cd fatigueye python -m venv venv source venv/bin/activate # Or venv\Scriptsctivate on Windows
BoardMapper
๐ ๏ธ PCB placement map generator
BoardMapper is an open-source tool designed to automatically generate PCB layout. It labels component references (e.g. U1, R1, C1) directly on the circuit image, facilitating component identification for reverse engineering purposes.
๐ฏ Purpose
- ๐ค Automation: Eliminates the need for manual placement annotation on PCB layouts.
- โฑ๏ธ Efficiency: Saves time for engineers and makers working on PCB assembly and debugging.
- ๐ Clarity: Provides a clear visual reference for debugging, testing, and manufacturing.
- ๐ป Cross-Platform: Works on Windows, Linux, and macOS systems.
๐ Annotation
Position | Original | Annotated |
---|---|---|
Top | ![]() |
![]() |
Bottom | ![]() |
![]() |
๐ Requirements
- Python: Version 3.6 or higher
- Required Libraries:
opencv-python
(for image processing)lxml
(for XML parsing)
๐ Installation Instructions
๐ ๏ธ Setup
-
Clone the repository or Download the project to your local machine.
- Labeling the PCB:
- Step 1: Take a photo of both the top and bottom layers of the chosen PCB.
- Step 2: Place the
top.png
andbottom.png
images into theinput
folder. - Step 3: Install the latest version of LabelImg.
- Step 4: Open
top.png
in LabelImg and draw bounding boxes around each component. Label each component according to its type:- R: Resistor
- C: Capacitor
- L: Inductor
- F: Fuse
- POT: Potentiometer
- D: Diode
- LED: LED
- Q: Transistor (BJT, MOSFET)
- U: Integrated Circuit (IC)
- J: Connector
- K: Relay
- SW: Switch
- Y: Quartz / Resonator
- SP: Speaker
- ANT: Antenna
LabelImg Shortcuts:
- โ๏ธ W: Draw a new rectangular bounding box (RectBox)
- โ D: Delete the last drawn bounding box
- ๐พ Ctrl + S: Save the annotation as an XML file
- โช Ctrl + Z: Undo the last action
- ๐ Ctrl + C: Copy a bounding box
- ๐ Ctrl + V: Paste a copied bounding box
- ๐ Ctrl + A: Select all bounding boxes
- ๐ Ctrl + R: Rotate the image (for better labeling)
- ๐ซ Esc: Cancel the current operation or close a dialog box
- Step 5: After labeling the
top.png
, save the annotation astop.xml
. - Step 6: Repeat the labeling process for the
bottom.png
and save it asbottom.xml
. - Step 7: Place both
top.xml
andbottom.xml
into theinput
folder.
- Running the Tool:
- Windows: Double-click on
setup_and_run.bat
to automatically run the script. The tool will read the XML annotations, draw bounding boxes on the images, and save the annotated images. - Linux/macOS: You can run the script from the terminal:
chmod +x script.sh ./script.sh
- Windows: Double-click on
- ๐ Output:
- After the script has executed, navigate to the
output
folder to find the resulting annotated images:top_annotated.png
bottom_annotated.png
- After the script has executed, navigate to the
๐ค Contributions
If youโd like to contribute to the project, please follow these steps:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a pull request
We welcome any contributions to improve BoardMapper! ๐
VATN-WaterGame
๐ง A strategic game on water management!
VATN (from the Old Norse word for โwaterโ) is a game designed to raise awareness about water management. Players must make critical daily decisions to address major water-related issues in their country, influencing key parameters that determine the nationโs survival.
๐ฏ Purpose
- ๐ง Water Management Awareness: Educate players on the importance of sustainable water policies.
- ๐ฎ Engaging Decision-Making: Every day presents a new challenge that affects the nationโs status.
- ๐ Survival & Strategy: Keep your country alive as long as possible by maintaining stability.
- ๐ Progress Tracking: Visualize the evolution of key parameters through in-game graphs.
๐ Features
๐ท๏ธ Feature | ๐ Description |
---|---|
๐ Game Type | Strategic Decision-Making Simulation |
๐ Daily Choices | Players make decisions each day affecting country parameters |
๐ Dynamic Statistics | Key indicators fluctuate based on player actions |
๐ Game Over | The country collapses if the population reaches 0 |
๐ Save & Load | Resume previous games using saved files |
๐ Rankings | Compare results with previous local games |
๐ Graphical Summary | Track country status evolution over time |
๐บ Gameplay Overview
๐ฎ Main Menu | ๐ In-Game Statistics | ๐ Endgame Rankings |
---|---|---|
![]() |
![]() |
![]() |
AntiVuvuzelaFilter
๐ต Noise filter for clear audio ๐๏ธ
Anti-Vuvuzela Filter is an open-source project dedicated to second-order analog filters and beyond. This project was initially developed to design an โanti-vuvuzelaโ filter, aiming to attenuate the distinctive and persistent sound of vuvuzelas while preserving the clarity of commentatorsโ voices during the 2010 FIFA World Cup.
๐ฏ Purpose
- ๐ Targeted Noise Reduction: Specifically designed to attenuate vuvuzela noise while maintaining the intelligibility of speech.
- ๐ Second-Order Analog Filtering: Utilizing advanced filtering techniques for efficient noise cancellation.
- ๐ ๏ธ Open-source and Customizable: Modify and adapt the design for other audio filtering applications.
๐ Features
๐ท๏ธ Feature | ๐ Description |
---|---|
๐ผ Filter Type | Second-order analog filter |
๐ฏ Target Frequency | 233 Hz (typical vuvuzela frequency) |
๐ Voice Preservation | Maintains speech clarity |
๐ง Components | Resistors, capacitors, and operational amplifiers |
๐ฅ๏ธ Simulation Tools | Jupyter Notebook, LTSpice |
๐ Real-world Testing | Assembled and tested in real conditions |
๐ Input | Analog audio signal |
๐ Output | Cleaned audio signal with reduced vuvuzela noise |
๐ Use Cases | Audio signal processing, speech enhancement, noise reduction |
๐ Simulation & Testing
๐ ๏ธ LTSpice Circuit | ๐ Simulation |
---|---|
![]() |
![]() |
MotorControlShield
๐ Arduino shield for single DC motor control
The Motor Control Shield is an open-source project designed for controlling DC motors. It comes in the form of an Arduino shield mounted on an STM32 Nucleo board. The shield enables motor control via an NMOS transistor, current measurement with a shunt resistor, and rotation tracking using data from an incremental encoder.
๐ฏ Purpose
- ๐ Motor Control: Provides precise control over DC motors.
- ๐ Current Measurement: Monitors the current consumed by the motor.
- ๐ Rotation Tracking: Uses an incremental encoder to track motor rotation.
- ๐ ๏ธ Open-source & Customizable: Modifiable and adaptable for various projects.
๐ Features
๐ท๏ธ Feature | ๐ Description |
---|---|
๐ Motor Control | Uses an NMOS transistor to control motor speed and direction |
๐ Current Measurement | Shunt resistor for measuring the current consumed by the motor |
๐ Rotation Tracking | Incremental encoder to track motor position and rotation speed |
๐ Compatibility | Arduino shield compatible with STM32 Nucleo boards |
๐ฅ๏ธ PCB Design | Open-source and customizable |
๐ Use Cases | robots, embedded systems, and motor control applications |
๐ PCB Design Preview
๐ Functional diagram | ๐ Schematic | ๐ฅ๏ธ PCB Layout | ๐๏ธ 3D |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |