BirdCLEF+ 2026
Recognising 206 species of birds, frogs and insects from 35,549 recordings, with classical machine learning only. No neural networks were allowed.
- Type
- Machine learning, solo
- When
- May 2026, Sorbonne M1
- Result
- 0.922 macro ROC-AUC
- Stack
- Python, scikit-learn, librosa
The problem
Sheharyar Ishfaq took on BirdCLEF+ 2026 alone in May 2026, during his first year of the MSc at Sorbonne. BirdCLEF+ 2026 asks which species are calling in a recording. The training set has 35,549 clips from Xeno-canto and iNaturalist, resampled to 32 kHz, covering 206 species. It is badly imbalanced: the largest class has 499 recordings, 25 species have fewer than 10, and four have a single clip.
The course rule made it harder: classical models only, so every pattern a network would learn from a spectrogram had to be captured by hand-built features first.

What I built
Results
Macro ROC-AUC, 5-fold stratified cross-validation on the 180 audio features.
Hard calls
I expected the tree ensembles to win. They didn't: the non-linear work from raw audio to features is already done before the classifier sees the data, so the bottleneck is not capturing complex patterns but generalising from a few samples per species. A linear model has lower variance, and it came out on top.
RBF kernels scale roughly with the square of the training set, which is impractical for 35,000 clips. A linear SVM kept the comparison runnable and still scored 0.867.
Latitude and longitude encode where a species can live, and field recorders sit at fixed, known places, so they are available at inference time too. The recording rating is not available for unlabelled audio, and the report says so.
What I'd do next
The biggest gap is the jump from clean clips to field soundscapes: 25.5% accuracy on clean validation clips against an 8.8% hit rate on soundscape segments. Next would be training on soundscape-like noise, and class weighting or oversampling for the rarest species.