Machine Listener System is an audio classification project for machine fault recognition. The target task is 6-class prediction across machine ID and operating condition:
- 0: Machine 1, Normal
- 1: Machine 1, Abnormal
- 2: Machine 2, Normal
- 3: Machine 2, Abnormal
- 4: Machine 3, Normal
- 5: Machine 3, Abnormal
This repository currently focuses on Phase 1: Exploratory Data Analysis (EDA) and visual inspection of raw audio.
- Abdallah Ayman
- Karim Yasser
- Mohammed Bahgat
- Mohammed Abd-Elaziem
.
|- data/
| |- data_manifast/
| | |- train_split.csv
| | |- val_split.csv
| | \- test_split.csv
| |- Machine 1/machine_data/{Normal,Abnormal}
| |- Machine 2/machine_data/{Normal,Abnormal}
| \- Machine 3/machine_data/{Normal,Abnormal}
|- docs/
| |- PROJECT_CONTEXT.md
| |- VISUALIZATION_CONTEXT.md
| \- Project Findings/initial_strategy.md
|- outputs/
| \- eda/
\- src/
\- visualization/
\- eda_baseline.py
Use side-by-side visualizations to inspect differences between normal and abnormal machine sounds before defining preprocessing and modeling.
Primary visual diagnostics:
- Waveform (time domain): inspect silence, clipping, and amplitude variation.
- Mel-spectrogram (time-frequency): inspect frequency-band patterns and fault signatures.
This project is intended to run with Conda.
conda env create -f environment.yml
conda activate machine-sound-edaBrowse machines, state (Normal/Abnormal), graph type, and sample index in a single UI.
python .\src\visualization\eda_baseline.py --interactiveGenerates waveform and mel-spectrogram comparison images for one machine.
python .\src\visualization\eda_baseline.py --machine "Machine 1"Optional arguments:
--data-rootdataset root directory (default:data)--normal-filespecific normal WAV filename/path--abnormal-filespecific abnormal WAV filename/path--srtarget sampling rate (Nonekeeps original)--n-melsmel bins (default:128)--hop-lengthhop length (default:512)--out-diroutput directory (default:outputs/eda)
Before training, consolidate raw and augmented features into a single structured file to ensure lineage tracking and proper grouping:
python .\scripts\create_unified_dataset.pyThis generates data/kaggle_unified_features.csv which contains 4 versions of every recording: raw, denoised, added_noise, and time_shifted.
To execute the complete end-to-end model training pipeline:
# Run with full augmentations (default)
python .\scripts\run_training_pipeline.py
# Run without synthetic augmentations (only Raw + Denoised)
python .\scripts\run_training_pipeline.py --no-augmentationThis master script sequentially executes:
train_01_feature_engineering.py: Prunes features to the top 40 and assigns clustering IDs to prevent data leakage.train_02_model_training.py: Splits the data securely usingGroupKFold, fits aStandardScaler, and trains a GPU-acceleratedXGBClassifier.
The best model, scaler, and label encoder are saved to the outputs/ directory.
Detailed technical documentation is available in the docs/ folder:
- 01. Data Preprocessing & Augmentation
- 02. Feature Engineering
- 06. Clustering & Overfitting Analysis
- 07. Model Performance Report
- 08. Unified Dataset Lineage
By default, saved figures are written to outputs/eda:
machine_1_waveforms.pngmachine_1_melspec.png
- Avoid random per-file splitting due to leakage risk from contiguous recording sessions.
- Prefer block/chunk-based splitting to keep adjacent samples in the same split.
- EDA should compare raw vs cleaned audio to verify preprocessing preserves diagnostic frequency content.
- Robust preprocessing pipeline (silence trimming, denoising, normalization checks).
- Feature pipeline refinement based on EDA evidence.
- Model training/evaluation under course constraints.
No license file has been added yet.