Efficient Bird Species Classification
Telling 110 bird species apart by sound, using engineered audio features and lightweight models instead of deep learning.
Mrunal Kulkarni, Prakash Kumbhakar, Divyansh Pathak · End-semester project, April 2026
The problem
Deep CNNs reach about 95% on bird audio, but need hours of GPU training. We wanted to see how far careful feature engineering could go with models that train in seconds. The data is small and uneven: 2,161 recordings, with some species having only a couple of clips.
How it works
- Standardise. Resample to 22.05 kHz mono and loop short clips up to 35 seconds, so the sound is repeated instead of padded with silence.
- Describe. Turn each clip into 217 numbers covering timbre, pitch and texture: MFCC, Mel, Chroma, Spectral Contrast, Tonnetz and more.
- Balance. Create pitch, speed and noise variants for rare species, then apply SMOTETomek to the training data.
- Classify. Compare classical models and keep the best.
Results
| Model | Accuracy | Train (s) | Inference (ms) |
|---|---|---|---|
| Extra Trees | 75.05% | 1.6 | 1.36 |
| Logistic Regression | 75.05% | 4.2 | 0.09 |
| SVM (RBF) | 74.84% | 0.5 | 0.42 |
| MLP (512, 256) | 73.76% | 14.2 | 0.003 |
| Random Forest | 72.04% | 2.5 | 0.93 |
| KNN | 68.82% | 0.0 | 1.76 |
The 90% target was not reached, and 75.05% may be slightly optimistic because augmentation and scaling happen before the train/test split. See the README for details.
What we learned
| Stage | Change | Accuracy |
|---|---|---|
| Baseline | Mean of 40 MFCCs | 32.87% |
| v3 | Added variation over time | 67.36% |
| v4 | 128 Mel bands + PCA | 71.53% |
| v5 | 659 features (overfit) | 63.43% |
| Final | 35 s loops + SMOTETomek | 75.05% |
The biggest jump came from capturing how a call changes over time. Adding many more features then made results worse on such a small dataset.