Skip to main content

BAM, unsupervised labelling function to extract and cluster similar animal vocalizations together

Project description

bambird package

Unsupervised classification to improve the quality of a bird song recording dataset

Open audio databases such as Xeno-Canto are widely used to build datasets to explore bird song repertoire or to train models for automatic bird sound classification by deep learning algorithms. However, such databases suffer from the fact that bird sounds are weakly labelled: a species name is attributed to each audio recording without timestamps that provide the temporal localization of the bird song of interest. Manual annotations can solve this issue, but they are time consuming, expert-dependent, and cannot run on large datasets. Another solution consists in using a labelling function that automatically segments audio recordings before assigning a label to each segmented audio sample. Although labelling functions were introduced to expedite strong label assignment, their classification performance remains mostly unknown. To address this issue and reduce label noise (wrong label assignment) in large bird song datasets, we introduce a data-centric novel labelling function composed of three successive steps: 1) time-frequency sound unit segmentation, 2) feature computation for each sound unit, and 3) classification of each sound unit as bird song or noise with either an unsupervised DBSCAN algorithm or the supervised BirdNET neural network. The labelling function was optimized, validated, and tested on the songs of 44 West-Palearctic common bird species. We first showed that the segmentation of bird songs alone aggregated from 10% to 83% of label noise depending on the species. We also demonstrated that our labelling function was able to significantly reduce the initial label noise present in the dataset by up to a factor of three. Finally, we discuss different opportunities to design suitable labelling functions to build high-quality animal vocalizations with minimum expert annotation effort.


drawing

Based on this work, we propose bambird, an open source Python package that provides a complete workflow to create your own labelling function to build cleaner bird song recording dataset. bambird is mostly based on scikit-maad package

DOI

Installation

bambird dependencies:

  • scikit-maad >= 1.3.12
  • librosa
  • scikit-learn
  • kneed
  • hdbscan
  • tqdm

bambird is hosted on PyPI. To install, run the following command in your Python environment:

$ pip install bambird

To install the latest version from source clone the master repository and from the top-level folder call:

$ python setup.py install

Examples and documentation

Citing this work

If you find bambird usefull for your research, please consider citing it as:

Contributions and bug report

Improvements and new features are greatly appreciated. If you would like to contribute developing new features or making improvements to the available package, please refer to our wiki. Bug reports and especially tested patches may be submitted directly to the bug tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bambird-0.1.0.tar.gz (34.9 kB view hashes)

Uploaded Source

Built Distribution

bambird-0.1.0-py3-none-any.whl (35.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page