wavesongs


Namewavesongs JSON
Version 0.0.5b1 PyPI version JSON
download
home_pagehttps://wavesongs.github.io/
SummaryA python package for birdsongs creation and data extraction.
upload_time2025-02-19 06:55:07
maintainersaguileran@unal.edu.co
docs_urlNone
authorsaguileran@unal.edu.co
requires_python<4,>=3.10
licenseGPL-3.0
keywords numerical methods motor gestures birdsongs syhnthetic songs
VCS
bugtrack_url
requirements llvmlite librosa numpy matplotlib ffmpeg ipykernel mpl_pan_zoom mpl_point_clicker pandas peakutils sympy scikit_maad scikit_learn plotly ipympl
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align='center' style="margin: 20px 0 0px 0">
   <img src="./assets/logo.png" alt="WaveSongs logo" style="max-width: 100%; height: 200px;">

   <div class="text-container" style="flex: 2;">
      <h1 style="margin: 0; padding: 10px 0 0px 0; border-bottom: 0">WaveSongs</h1>
      <p style="margin: 0; padding: 0px 0 10px 0;">A Python package for birdsong synthesis and bioacoustic analysis</p>
   </div> 
</div>

<div align='center' style="margin: 20px 0 50px 0">

![version](https://img.shields.io/badge/Version-0.0.4b1-darkgreen.svg)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Made with Python](https://img.shields.io/badge/Python->=3.10-blue?logo=python&logoColor=white)](https://python.org "Go to Python homepage")
![Open Source](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)
[![Documentation](https://readthedocs.org/projects/ansicolortags/badge/?version=latest)](https://wavesongs.github.io/wavesongs/)


[Installation](#️-installation) •
[Quick Start](#-gettint-started) •
[Contribute](#-contribute) •
[References](#-references)


</div>

---


WaveSongs implements the [motor gestures model for birdsong](http://www.lsd.df.uba.ar/papers/simplemotorgestures.pdf) developed by [Gabo Mindlin](https://scholar.google.com.ar/citations?user=gMzZPngAAAAJ&hl=en) to generate synthetic birdsongs through numerical optimization [[1](#1), [2](#2)] 
. By leveraging **fundamental frequency (FF)** and **spectral content index (SCI)** as key parameters, the package solves a minimization problem using [SciPy](https://docs.scipy.org/doc/scipy/tutorial/optimize.html) and performs audio analysis with [librosa](https://librosa.org/) and [scikit-maad](https://github.com/scikit-maad/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

- [Python](https://www.python.org/) ≥ 3.10
- [Git](https://git-scm.com/)

### Steps

1. **Clone the repository**:
   ```bash
   git clone https://github.com/wavesongs/wavesongs
   cd wavesongs
   ```

2. **Set up a virtual environment** (choose one method):

   #### Using `venv`
   ```bash
   python -m venv venv
   ```

   #### Using Conda
   ```bash
   conda create -n wavesongs python=3.12
   conda activate wavesongs
   ```

3. **Install dependencies**:
   ```bash
   pip install -r requirements.txt
   ```

4. **Install WaveSongs** in editable mode:
   ```bash
   pip install -e .
   ```

## 🚀 Gettint Started

Explore the [Tutorial 1 Notebook](https://github.com/wavesongs/wavesongs/blob/main/Tutorial1_Introduction.ipynb) 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](https://github.com/wavesongs/wavesongs/blob/main/Tutorial2_SpectrumMeasures.ipynb) or [Synthetic Songs](https://github.com/wavesongs/wavesongs/blob/main/Tutorial3_SyntheticSongs.ipynb). More details can be found in the [Documentation](https://wavesongs.github.io/doc).


## 🎶 Data Integration

Pre-processed field recordings from [Xeno Canto](https://xeno-canto.org/) and [eBird](https://ebird.org/home) 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](./LICENSE).

## 📒 Citation

If this work contributes to your research, please cite:

```bibtex
@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](https://github.com/wavesongs/wavesongs/issues).


## 📚 References


<a id="1" style="color:#318bf8;">[1]</a>  Mindlin, G. B., & Laje, R. (2005). *The Physics of Birdsong*. Springer. [DOI](https://doi.org/10.1007/3-540-28249-1)

<a id="1" style="color:#318bf8;">[2]</a>  Amador, A., et al. (2013). Elemental gesture dynamics in song premotor neurons. *Nature*. [DOI](https://doi.org/10.1038/nature11967)

            

Raw data

            {
    "_id": null,
    "home_page": "https://wavesongs.github.io/",
    "name": "wavesongs",
    "maintainer": "saguileran@unal.edu.co",
    "docs_url": null,
    "requires_python": "<4,>=3.10",
    "maintainer_email": "saguileran@unal.edu.co",
    "keywords": "numerical methods, motor gestures, birdsongs, syhnthetic songs",
    "author": "saguileran@unal.edu.co",
    "author_email": "saguileran@unal.edu.co",
    "download_url": "https://files.pythonhosted.org/packages/65/48/c1f14211bed981991925cffc056e526bc783c7ccffbc1204bdc4eb669312/wavesongs-0.0.5b1.tar.gz",
    "platform": null,
    "description": "<div align='center' style=\"margin: 20px 0 0px 0\">\n   <img src=\"./assets/logo.png\" alt=\"WaveSongs logo\" style=\"max-width: 100%; height: 200px;\">\n\n   <div class=\"text-container\" style=\"flex: 2;\">\n      <h1 style=\"margin: 0; padding: 10px 0 0px 0; border-bottom: 0\">WaveSongs</h1>\n      <p style=\"margin: 0; padding: 0px 0 10px 0;\">A Python package for birdsong synthesis and bioacoustic analysis</p>\n   </div> \n</div>\n\n<div align='center' style=\"margin: 20px 0 50px 0\">\n\n![version](https://img.shields.io/badge/Version-0.0.4b1-darkgreen.svg)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Made with Python](https://img.shields.io/badge/Python->=3.10-blue?logo=python&logoColor=white)](https://python.org \"Go to Python homepage\")\n![Open Source](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)\n[![Documentation](https://readthedocs.org/projects/ansicolortags/badge/?version=latest)](https://wavesongs.github.io/wavesongs/)\n\n\n[Installation](#\ufe0f-installation) \u2022\n[Quick Start](#-gettint-started) \u2022\n[Contribute](#-contribute) \u2022\n[References](#-references)\n\n\n</div>\n\n---\n\n\nWaveSongs implements the [motor gestures model for birdsong](http://www.lsd.df.uba.ar/papers/simplemotorgestures.pdf) developed by [Gabo Mindlin](https://scholar.google.com.ar/citations?user=gMzZPngAAAAJ&hl=en) to generate synthetic birdsongs through numerical optimization [[1](#1), [2](#2)] \n. By leveraging **fundamental frequency (FF)** and **spectral content index (SCI)** as key parameters, the package solves a minimization problem using [SciPy](https://docs.scipy.org/doc/scipy/tutorial/optimize.html) and performs audio analysis with [librosa](https://librosa.org/) and [scikit-maad](https://github.com/scikit-maad/scikit-maad).\n\nValidated against field recordings of *Zonotrichia Capensis*, *Ocellated Tapaculo*, and *Mimus Gilvus*, the model achieves **<5% relative error in FF reconstruction** compared to empirical data.\n\n## \u2692\ufe0f Installation\n\n### Prerequisites\n\n- [Python](https://www.python.org/) \u2265 3.10\n- [Git](https://git-scm.com/)\n\n### Steps\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/wavesongs/wavesongs\n   cd wavesongs\n   ```\n\n2. **Set up a virtual environment** (choose one method):\n\n   #### Using `venv`\n   ```bash\n   python -m venv venv\n   ```\n\n   #### Using Conda\n   ```bash\n   conda create -n wavesongs python=3.12\n   conda activate wavesongs\n   ```\n\n3. **Install dependencies**:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Install WaveSongs** in editable mode:\n   ```bash\n   pip install -e .\n   ```\n\n## \ud83d\ude80 Gettint Started\n\nExplore the [Tutorial 1 Notebook](https://github.com/wavesongs/wavesongs/blob/main/Tutorial1_Introduction.ipynb) to generate synthetic birdsongs and explore the model plots. \n\n\nFor advanced usage (e.g., custom gestures, parameter tuning, data measures, etc), check the other tutorials: [Spectrum Measures](https://github.com/wavesongs/wavesongs/blob/main/Tutorial2_SpectrumMeasures.ipynb) or [Synthetic Songs](https://github.com/wavesongs/wavesongs/blob/main/Tutorial3_SyntheticSongs.ipynb). More details can be found in the [Documentation](https://wavesongs.github.io/doc).\n\n\n## \ud83c\udfb6 Data Integration\n\nPre-processed field recordings from [Xeno Canto](https://xeno-canto.org/) and [eBird](https://ebird.org/home) 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.\n\n\n## \ud83d\udd10 License\n\nWaveSongs is licensed under the [GNU General Public License v3.0](./LICENSE).\n\n## \ud83d\udcd2 Citation\n\nIf this work contributes to your research, please cite:\n\n```bibtex\n@software{aguilera_wavesongs_2025,\n    author = {Aguilera Novoa, Sebasti\u00e1n},\n    title = {WaveSongs: Computational Birdsong Synthesis},\n    year = {2025},\n    publisher = {GitHub},\n    journal = {GitHub Repository},\n    url = {https://github.com/wavesongs/wavesongs}\n}\n```\n\n\n## \ud83c\udf31 Contribute\n\nWe welcome contributions! See our roadmap:\n\n- [ ] **Integrate Xeno Canto API** for direct dataset downloads.\n- [ ] **Add ROIs analysis** using `scikit-maad`. This will allo automatic syllables detection and gerenration.\n- [ ] **Improve FF parametrization** for small motor gestures, chunks.\n\nTo report issues or suggest features, open a [GitHub Issue](https://github.com/wavesongs/wavesongs/issues).\n\n\n## \ud83d\udcda References\n\n\n<a id=\"1\" style=\"color:#318bf8;\">[1]</a>  Mindlin, G. B., & Laje, R. (2005). *The Physics of Birdsong*. Springer. [DOI](https://doi.org/10.1007/3-540-28249-1)\n\n<a id=\"1\" style=\"color:#318bf8;\">[2]</a>  Amador, A., et al. (2013). Elemental gesture dynamics in song premotor neurons. *Nature*. [DOI](https://doi.org/10.1038/nature11967)\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "A python package for birdsongs creation and data extraction.",
    "version": "0.0.5b1",
    "project_urls": {
        "Documentation": "https://wavesongs.github.io/wavesongs/",
        "Homepage": "https://wavesongs.github.io/",
        "Repository": "https://github.com/wavesongs/wavesongs/"
    },
    "split_keywords": [
        "numerical methods",
        " motor gestures",
        " birdsongs",
        " syhnthetic songs"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ffd4084ef34e4e8bbb6a749a99f91f408afe76fb1fb7bcff20cf03e803e6d7c3",
                "md5": "9a9f589dda24ffbfb073976b75586f35",
                "sha256": "9ea551ab2e929106f57ffcede3477b660687db1cf6bbe9cecf1f57514314b90f"
            },
            "downloads": -1,
            "filename": "wavesongs-0.0.5b1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9a9f589dda24ffbfb073976b75586f35",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.10",
            "size": 47161,
            "upload_time": "2025-02-19T06:55:06",
            "upload_time_iso_8601": "2025-02-19T06:55:06.018918Z",
            "url": "https://files.pythonhosted.org/packages/ff/d4/084ef34e4e8bbb6a749a99f91f408afe76fb1fb7bcff20cf03e803e6d7c3/wavesongs-0.0.5b1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6548c1f14211bed981991925cffc056e526bc783c7ccffbc1204bdc4eb669312",
                "md5": "b8f4c85f04bde435b47645ac57095c79",
                "sha256": "381d38e6df431aced516066a4442eaec5579dc2494a42e803d6bc6425db06bca"
            },
            "downloads": -1,
            "filename": "wavesongs-0.0.5b1.tar.gz",
            "has_sig": false,
            "md5_digest": "b8f4c85f04bde435b47645ac57095c79",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.10",
            "size": 43799,
            "upload_time": "2025-02-19T06:55:07",
            "upload_time_iso_8601": "2025-02-19T06:55:07.862088Z",
            "url": "https://files.pythonhosted.org/packages/65/48/c1f14211bed981991925cffc056e526bc783c7ccffbc1204bdc4eb669312/wavesongs-0.0.5b1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-19 06:55:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wavesongs",
    "github_project": "wavesongs",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "llvmlite",
            "specs": [
                [
                    ">=",
                    "0.44.0"
                ],
                [
                    "<",
                    "0.45.0"
                ]
            ]
        },
        {
            "name": "librosa",
            "specs": [
                [
                    "<",
                    "0.11.0"
                ],
                [
                    ">=",
                    "0.10.2.post1"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "2.1.3"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "<",
                    "4.0.0"
                ],
                [
                    ">=",
                    "3.10.0"
                ]
            ]
        },
        {
            "name": "ffmpeg",
            "specs": [
                [
                    "<",
                    "2.0"
                ],
                [
                    ">=",
                    "1.4"
                ]
            ]
        },
        {
            "name": "ipykernel",
            "specs": [
                [
                    "<",
                    "7.0.0"
                ],
                [
                    ">=",
                    "6.29.5"
                ]
            ]
        },
        {
            "name": "mpl_pan_zoom",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "mpl_point_clicker",
            "specs": [
                [
                    ">=",
                    "0.4.1"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "<",
                    "3.0.0"
                ],
                [
                    ">=",
                    "2.2.3"
                ]
            ]
        },
        {
            "name": "peakutils",
            "specs": [
                [
                    "<",
                    "2.0.0"
                ],
                [
                    ">=",
                    "1.3.5"
                ]
            ]
        },
        {
            "name": "sympy",
            "specs": [
                [
                    "<",
                    "2.0.0"
                ],
                [
                    ">=",
                    "1.13.3"
                ]
            ]
        },
        {
            "name": "scikit_maad",
            "specs": [
                [
                    "<",
                    "2.0.0"
                ],
                [
                    ">=",
                    "1.4.3"
                ]
            ]
        },
        {
            "name": "scikit_learn",
            "specs": [
                [
                    "<",
                    "2.0.0"
                ],
                [
                    ">=",
                    "1.6.1"
                ]
            ]
        },
        {
            "name": "plotly",
            "specs": [
                [
                    ">=",
                    "6.0.0"
                ],
                [
                    "<",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "ipympl",
            "specs": [
                [
                    ">=",
                    "0.9.6"
                ],
                [
                    "<",
                    "0.10.0"
                ]
            ]
        }
    ],
    "lcname": "wavesongs"
}
        
Elapsed time: 0.38870s