Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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

Release files for wavesongs 0.0.6b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wavesongs 0.0.6b1
File Size Uploaded
wavesongs-0.0.6b1.tar.gz 44.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wavesongs 0.0.6b1
File Interpreter ABI Platform
wavesongs-0.0.6b1-py3-none-any.whl Python 3 none any Details

Total release size:91.5 kB

Release files / wavesongs-0.0.6b1.tar.gz

Download URL wavesongs-0.0.6b1.tar.gz
Size 44.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3e766872de6ddfb3091df2d30fdc5b5a2866f6772c79b7a217e9c7a61ca3ffc1
BLAKE2b-256 checksum
How to use checksums
3ed75044bbfe1b02062a401c7b09628e0d51b7a12008e690868b9ca6a84844c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.12.2 Linux/6.11.0-17-generic

Release files / wavesongs-0.0.6b1-py3-none-any.whl

Download URL wavesongs-0.0.6b1-py3-none-any.whl
Size 47.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b0663a49401234a8d42d337a2a1baec1b12b27bd69248dc91ef7d9ef8642c4b
BLAKE2b-256 checksum
How to use checksums
da1e89d713f310817e66c7972a02eb526abbb1a68649c5ea86214c163f9c2be3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.12.2 Linux/6.11.0-17-generic
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page