Skip to main content

A python package for birdsongs creation and data extraction.

Project description

WaveSongs logo

WaveSongs

A Python package for birdsong synthesis and bioacoustic analysis


WaveSongs implements the motor gestures model for birdsong developed by Gabo Mindlin to generate synthetic birdsongs through numerical optimization [1, 2] . By leveraging fundamental frequency (FF) and spectral content index (SCI) as key parameters, the package solves a minimization problem using SciPy and performs audio analysis with librosa and scikit-maad.

Validated against field recordings of Zonotrichia Capensis, Ocellated Tapaculo, and Mimus Gilvus, the model achieves <5% relative error in FF reconstruction compared to empirical data.

⚒️ Installation

Prerequisites

Steps

  1. Clone the repository:

    git clone https://github.com/wavesongs/wavesongs
    cd wavesongs
    
  2. Set up a virtual environment (choose one method):

    Using venv

    python -m venv venv
    

    Using Conda

    conda create -n wavesongs python=3.12
    conda activate wavesongs
    
  3. Install dependencies:

    pip install -r requirements.txt
    
  4. Install WaveSongs in editable mode:

    pip install -e .
    

🚀 Gettint Started

Explore the Tutorial 1 Notebook to generate synthetic birdsongs and explore the model plots.

For advanced usage (e.g., custom gestures, parameter tuning, data measures, etc), check the other tutorials: Spectrum Measures or Synthetic Songs. More details can be found in the Documentation.

🎶 Data Integration

Pre-processed field recordings from Xeno Canto and eBird are included in ./assets/audio. To use custom recordings place .wav or .mp3 files in ./assets/audio/ or define the audios path with the ProjDirs class.

🔐 License

WaveSongs is licensed under the GNU General Public License v3.0.

📒 Citation

If this work contributes to your research, please cite:

@software{aguilera_wavesongs_2025,
    author = {Aguilera Novoa, Sebastián},
    title = {WaveSongs: Computational Birdsong Synthesis},
    year = {2025},
    publisher = {GitHub},
    journal = {GitHub Repository},
    url = {https://github.com/wavesongs/wavesongs}
}

🌱 Contribute

We welcome contributions! See our roadmap:

  • Integrate Xeno Canto API for direct dataset downloads.
  • Add ROIs analysis using scikit-maad. This will allo automatic syllables detection and gerenration.
  • Improve FF parametrization for small motor gestures, chunks.

To report issues or suggest features, open a GitHub Issue.

📚 References

[1] Mindlin, G. B., & Laje, R. (2005). The Physics of Birdsong. Springer. DOI

[2] Amador, A., et al. (2013). Elemental gesture dynamics in song premotor neurons. Nature. 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

wavesongs-0.0.4b1.tar.gz (40.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavesongs-0.0.4b1-py3-none-any.whl (41.9 kB view details)

Uploaded Python 3

File details

Details for the file wavesongs-0.0.4b1.tar.gz.

File metadata

  • Download URL: wavesongs-0.0.4b1.tar.gz
  • Upload date:
  • Size: 40.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.2 Linux/6.11.0-17-generic

File hashes

Hashes for wavesongs-0.0.4b1.tar.gz
Algorithm Hash digest
SHA256 a9fe30ff7de87d5bedffc1f9f780d78bf08900f86366207d984ea97e996ec324
MD5 7c6d6f51780a7df086751c27f95cced0
BLAKE2b-256 3a080279771e8c1b2571ef00011e0067d176ef6ca9b7f1f2707d2f27975f7cfc

See more details on using hashes here.

File details

Details for the file wavesongs-0.0.4b1-py3-none-any.whl.

File metadata

  • Download URL: wavesongs-0.0.4b1-py3-none-any.whl
  • Upload date:
  • Size: 41.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.2 Linux/6.11.0-17-generic

File hashes

Hashes for wavesongs-0.0.4b1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d5796ce83949dbacde50ee7fcb83c0ad85b0633bc16f0738b0002ade18e1882
MD5 e31fce60b829dd68b5dc886d78b7762a
BLAKE2b-256 8cbd45cd1c87de67c26489e35dc23785693e5b4a7fecd51bfe118dcbc8479346

See more details on using hashes here.

Supported by

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