Skip to main content

Functions for working with this data repository: https://figshare.com/articles/BirdsongRecognition/3470165

Project description

Project Status: Unsupported – The project has reached a stable, usable state but the author(s) have ceased all work on it. A new maintainer may be desired.

This project is no longer actively maintained, although the code uses core, stable functions from Python, Numpy, and SciPy, so it is likely to work. There is an updated version of the core code in this package in crowsetta: https://crowsetta.readthedocs.io If you need to load the annotations from this dataset, please use that instead.

Build Status DOI PyPI version License

birdsong-recognition-dataset

Python utility for working with data from the following repository:
Koumura, T. (2016). BirdsongRecognition (Version 1). figshare.
https://doi.org/10.6084/m9.figshare.3470165.v1
https://figshare.com/articles/BirdsongRecognition/3470165

The repository contains .wav files of Bengalese finch song from ten birds and annotation for the songs in .xml files.

This repository provides a great resource, and was used to benchmark a sliding window-based neural network for segmenting and labeling the elements of birdsong, as described in the following paper:
Koumura, Takuya, and Kazuo Okanoya.
"Automatic recognition of element classes and boundaries in the birdsong with variable sequences."
PloS one 11.7 (2016): e0159188.
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0159188

The code for the network can be found here:
https://github.com/cycentum/birdsong-recognition

The original code was released under the GNU license:
https://github.com/cycentum/birdsong-recognition/blob/master/LICENSE

The birdsongrec module is used with the crowsetta package to make the repository a dataset available in the hybrid-vocal-classifier and vak libraries.

Installation

with pip

$ pip install birdsong-recognition-dataset

with conda

$ conda install birdsong-recognition-dataset -c conda-forge

Usage

The main thing that birdsongrec gives you is easy access to the annotation, without having to deal with the .xml file format.

This format is schematized in this XML schema file, adapted from the original under the GNU license (file is unchanged except for formatting for readability).

To access the annotation in the Annotation.xml files for each bird, use the parse_xml function.

>>> from birdsongrec import parse_xml
>>> seq_list = parse_xml(xml_file='./Bird0/Annotation.xml', concat_seqs_into_songs=False)
>>> seq_list[0]
Sequence from 0.wav with position 32000 and length 43168
>>> seq_list[0].syls[:3]
[Syllable labeled 0 at position 2240 with length 2688, Syllable labeled 0 at position 8256 with length 2784, Syllable labeled 0 at position 14944 with length 2816]  

Notice that this package preserves the abstraction of the original code, where syllables and sequences of syllables are represented as objects. This can be helpful if you are trying to replicate functionality from that code.
Importantly, each song is broken up into a number of "sequences". You can set the flag concat_seqs_into_songs to True if you want parse_xml to concatenate sequences by song (.wav file), so that each Sequence is actually all the sequences from one song.
If you are using the annotation to work with the dataset for some other purpose, you may find it more convenient to work with some other format. For that, please check out the crowsetta tool, that helps with building datasets of annotated vocalizations in a way that's annotation-format agnostic.

The birdsongrec package also provides a convenience function to load the annotation for an individual song, load_song_annot. This is basically a wrapper around parse_xml that filters out the songs you don't want.

>>> from birdsongrec import load_song_annot
>>> wav1 = load_song_annot(wav_file='1.wav')
>>> print(wav1)                                                                                                  
Sequence from 1.wav with position 32000 and length 214176  

Getting Help

Please feel free to raise an issue here:
https://github.com/NickleDave/birdsong-recognition-dataset/issues

License

BSD License.

Citation

If you use this package, please cite the DOI:
DOI

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

Built Distribution

File details

Details for the file birdsong-recognition-dataset-0.3.2.post1.tar.gz.

File metadata

File hashes

Hashes for birdsong-recognition-dataset-0.3.2.post1.tar.gz
Algorithm Hash digest
SHA256 7d3378b07623c0220543501aa9c8e52cb2602963ac23abe6ba9ec563cc3957f5
MD5 1ac09ac19131875f83e08fbbe79c881b
BLAKE2b-256 6506867e07158d9e18ee7cf2f5caf561879d7cf804bec3c96cd445405438aabc

See more details on using hashes here.

File details

Details for the file birdsong_recognition_dataset-0.3.2.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for birdsong_recognition_dataset-0.3.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 72c4288b39a06b2253a50ee62f28202a0ff7765152183d8f0782d25484694e0c
MD5 580f2c574bdff3d295ae041990247774
BLAKE2b-256 0c27565de82da834a52bfcb9c9e315ea2f90e6e6279dfd613b959ae7dfb3d18f

See more details on using hashes here.

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