This release is a pre-release and may not be stable for production use.
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
-
Clone the repository:
git clone https://github.com/wavesongs/wavesongs cd wavesongs
-
Set up a virtual environment (choose one method):
Using
venvpython -m venv venv
Using Conda
conda create -n wavesongs python=3.12 conda activate wavesongs
-
Install dependencies:
pip install -r requirements.txt
-
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)
| File | Size | Uploaded | |
|---|---|---|---|
| wavesongs-0.0.6b1.tar.gz | 44.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|