What is VocalPy?#
You read on the landing page of the documentation that VocalPy is the core package of the VocalPy community. You also learned that it is a Python library, meant for researchers studying how animals communicate with sound. This page explains the goals of the VocalPy library in more detail, and gives some background on research in acoustic communication.
Background#
Are humans unique among animals? We speak languages, but is speech somehow like other animal behaviors, such as birdsong? Questions like these are answered by studying how animals communicate with sound. This research requires cutting edge computational methods and big team science across a wide range of disciplines, including ecology, ethology, bioacoustics, psychology, neuroscience, linguistics, and genomics [2][3][4][5].
Although the VocalPy library can be used more generally for bioacoustics, our focus is on animal acoustic communication [3][6] and related research areas like vocal learning [7] and cultural evolution [8].
Goals#
There are many great software tools for researchers studying acoustic communication in animals[1]. But our research groups work with a wide range of different data formats: for audio, for array data, for annotations. This means we write a lot of low-level code to deal with those formats, and then our code for analyses is tightly coupled to those formats. In turn, this makes it hard for other groups to read our code, and it takes a real investment to understand our analyses, workflows and pipelines. It also means that it requires significant work to translate an analysis worked out by a scientist-coder in a Jupyter notebook into a generalized, robust service provided by an application developed by a research software engineer.
In particular, acoustic communication researchers working with the Python programming language face these problems. How can our scripts and libraries talk to each other? Luckily, Python is a great glue language! Let’s use it to solve these problems.
The goals of VocalPy are to:
make it easy for researchers studying acoustic communication to work with a wide array of data formats: audio, array (spectrograms, features), annotation
provide classes that represent commonly-used data types: audio, spectograms, features, annotations
provide classes that represent common processes and steps in pipelines: segmenting audio, computing spectrograms, extracting acoustic features
make it easier for scientist-coders to flexibly and iteratively build datasets, without needing to deal directly with a database if they don’t want to
make it possible to re-use code you have already written for your own research group
and finally:
make code easier to share and read across research groups, by providing these classes, and idiomiatic ways of coding with them; think of VocalPy as an interoperability layer and a common language
facilitate collaboration between scientist-coders writing imperative analysis scripts and research software engineers developing libraries and applications
To see how VocalPy achieves these goals, and to get an overview of its features, please read through the Quickstart.