<p>I would suggest looking into the R package, monitoR: <a href="https://cran.r-project.org/web/packages/monitoR/index.html" rel="noreferrer">https://cran.r-project.org/web/packages/monitoR/index.html</a></p>
<p>The reference manual contains a couple of very useful examples for getting a feel of the package and its functionality, and the audio examples to build correlation templates, etc are built into the package.</p>
<p>In terms of automating the process, I haven't progressed this far with monitoR, though some researchers I know recently published a <a href="https://www.sciencedirect.com/science/article/pii/S1574954122001054" rel="noreferrer">journal article</a> documenting nest monitoring of critically endangered black cockatoos on Kangaroo Island. The acoustic analysis of species and call recognition/workflow was handled in R and the monitoR package.</p>
<p><strong>Reference</strong></p>
<p>Teixeira, D., Linke, S., Hill, R., Maron, M., &amp; van Rensburg, B. J. (2022). Fledge or fail: Nest monitoring of endangered black-cockatoos using bioacoustics and open-source call recognition. Ecological Informatics, 69, 101656.</p>

CC BY-SA 4.0
2022-07-06T01:05:09.573Z
2022-07-06T06:22:08.937Z
2022-07-06T06:22:08.937Z
Tristan Louth-Robins
<p>I would also recommend checking out the scikit-maad page -
<a href="https://scikit-maad.github.io/index.html" rel="noreferrer">https://scikit-maad.github.io/index.html</a></p>
<p>They have a very versatile set of tools written in Python for sound inspection, classification and analysis.</p>
<p>Equally noteworthy are the contents posted on GitHub by Emmanuel Dufourq of Stellenbosch University, South Africa.</p>
<p><a href="https://github.com/emmanueldufourq/ISEC2022CEAULML" rel="noreferrer">https://github.com/emmanueldufourq/ISEC2022CEAULML</a></p>
<p>He provides Python code sets for deep learning analysis of animal sounds, with special focus on birds.</p>

CC BY-SA 4.0
2022-07-07T12:07:21.783Z
2022-07-07T12:07:21.783Z
Mario Rollo
<p>I have clustered calls using the function seewave::diffcumspec in R before. It calculates a pairwise difference between cumulative spectra. It is possibly not what you asked for because if still gives you an 'overall clustering' :)</p>

CC BY-SA 4.0
2022-07-06T06:16:32.003Z
2022-07-06T06:16:32.003Z
Simon Linke
<p><em><strong>Koe bioacoustics software</strong></em> (koe.io.ac.nz) is free open-source web-based software for classifying animal sounds quickly. You can create interactive ordination plots that allow you to encircle groups of points (acoustic units) and label them in bulk. You can also sort acoustic units by similarity in the unit table and classify them in bulk. Because Koe  takes an integrated database approach rather than 'one-file-at-a-time', it has an efficient workflow.</p>
<p>The paper is here: <a href="https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.13336" rel="noreferrer">https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.13336</a> and the wiki is here: <a href="https://github.com/fzyukio/koe/wiki" rel="noreferrer">https://github.com/fzyukio/koe/wiki</a></p>

CC BY-SA 4.0
2022-07-07T00:38:27.143Z
2022-07-07T00:38:27.143Z
BirdGuyWes
<p>Highlighting a few below, but would also definitely recommend checking out Tessa Rhinehart's wonderful list of bioacoustics software for a more comprehensive list - <a href="https://github.com/rhine3/bioacoustics-software" rel="nofollow noreferrer">https://github.com/rhine3/bioacoustics-software</a>.</p>
<p><a href="https://www.wildlifeacoustics.com/products/kaleidoscope" rel="nofollow noreferrer">Kaleidoscope Pro</a> (from Wildlife Acoustics) is a desktop app/GUI that has a nice clustering function, but this is not free (though you can get short-term free trials).</p>
<p><a href="https://arbimon.rfcx.org/" rel="nofollow noreferrer">Arbimon</a> has a template matching function, which is free &amp; web-based.</p>
<p>In terms of R packages, I second/third the previous mentions of <a href="https://cran.r-project.org/web/packages/tuneR/index.html" rel="nofollow noreferrer">tuneR</a>, <a href="https://cran.rstudio.com/web/packages/monitoR/index.html" rel="nofollow noreferrer">monitoR</a>, and <a href="https://rug.mnhn.fr/seewave/" rel="nofollow noreferrer">seewave</a>. I'd also add <a href="https://github.com/DenaJGibbon/gibbonR-package" rel="nofollow noreferrer">gibbonR</a> to that list (uses MFCCs to detect sounds of interest &amp; then has semi-supervised ML functionality as well). As well as <a href="https://marce10.github.io/ohun/index.html" rel="nofollow noreferrer">ohun</a>, which provides functions to diagnose and optimize detection routines (using energy- or template-based detection).
I'd also just note that if you want to go between R &amp; Raven, the <a href="https://github.com/cran/Rraven" rel="nofollow noreferrer">Rraven</a> package is helpful.</p>
<p>For Python, <a href="https://pypi.org/project/koogu/" rel="nofollow noreferrer">Koogu</a> &amp; <a href="http://opensoundscape.org/en/latest/" rel="nofollow noreferrer">OpenSoundscape</a> have a number of different ML functions for building detectors.</p>

CC BY-SA 4.0
2022-07-06T14:52:29.113Z
2022-07-06T14:52:29.113Z
Carly Batist
<p>I am not going into the details of extracting variables. There are several ways to do that. I manually digitised the spectrograms during my PhD as I felt the software accuracy is less and they perform terribly for overlapping calls.</p>
<p>Since you don't know how many call types are in the recording, I would suggest you go for unsupervised clustering. You can follow my methods from <a href="https://journals.plos.org/plosone/article/comments?id=10.1371/journal.pone.0216186" rel="nofollow noreferrer">(Sadhukhan 2019)</a>. <strong>Variable extraction &gt; PCA &gt; Clustering &gt; Shilloutte plot for validating number of cluster</strong>.</p>
<p>Although I think this method is a little bit primitive as compared to modern advancement, This is a comparatively easy method to follow. I am sure that you will get more advance to classify with ML or ANN.</p>

CC BY-SA 4.0
2022-07-09T07:25:08.157Z
2022-07-09T07:25:08.157Z
Sougata Sadhukhan
<p>It sounds like you are describing a decision tree analysis, which is typically constructed in custom code.  This can be done in R or Matlab (or Python, really).</p>
<p>A decision tree looks like this, as recently published by <a href="https://asa.scitation.org/doi/full/10.1121/10.0005756" rel="noreferrer">Hamilton et al. 2021</a>:
<a href="https://i.sstatic.net/xwGJk.png" rel="noreferrer"><img src="https://i.sstatic.net/xwGJk.png" alt="Decision Tree from Hamilton et al. 2021" /></a></p>
<p>I second that you should look at R packages monitoR and tuneR to extract the features that you need which would feed into your decision tree. R, as it is free and runs on Macs, would be the best way to approach coding your algorithm. Unfortunately, I am not aware of a software that allows you to design a tree without some knowledge of coding.</p>
<p><strong>Reference</strong></p>
<p>Hamilton, R. A., Starkhammar, J., Gazda, S. K., &amp; Connor, R. C. (2021). Separating overlapping echolocation: An updated method for estimating the number of echolocating animals in high background noise levels. The Journal of the Acoustical Society of America, 150(2), 709-717.</p>

CC BY-SA 4.0
2022-07-06T06:36:21.523Z
2022-07-06T06:36:21.523Z
etgriffiths
<p>I have a dateset of many call types from one species and I would like to categorize the call types.</p>
<p>I know I have a few different options, but statistically I was wondering what would be the best approach. The call types range from broadband stacks to flat tonal whistles. Some call types grade into one another with both ends of the spectrum structurally very different. I am hesitant to group them by eye (even with volunteers blindly categorizing exemplars to ensure that the categories are the same).</p>
<p>However, I am running into the problem that every system/method I have run various measurements through will do good at separating some features, but not all of them, with many calls put in categories that make no sense - e.g., some harmonic stacks being grouped with tonal whistles rather than other stacks that are very similar.</p>
<p>I was wondering if instead of categorizing them all at once using a PCA or something similar, it would make sense to categorize them in batches. For example first separating by peak frequency, then by length, then by presence of harmonic stacks, then by frequency modulation, etc.</p>
<p>Other than that, are there any suggestions of other approaches I could try?</p>
<p>I only have access to a Mac which limits the programs I can use, but do have access to Raven Pro. Any advice would be appreciated.</p>

<bird>
Best methods to categorize calls
# Best methods to categorize calls

(Asked by: username_0 on 2022-07-06)

I have a dateset of many call types from one species and I would like to categorize the call types.

I know I have a few different options, but statistically I was wondering what would be the best approach. The call types range from broadband stacks to flat tonal whistles. Some call types grade into one another with both ends of the spectrum structurally very different. I am hesitant to group them by eye (even with volunteers blindly categorizing exemplars to ensure that the categories are the same).

However, I am running into the problem that every system/method I have run various measurements through will do good at separating some features, but not all of them, with many calls put in categories that make no sense - e.g., some harmonic stacks being grouped with tonal whistles rather than other stacks that are very similar.

I was wondering if instead of categorizing them all at once using a PCA or something similar, it would make sense to categorize them in batches. For example first separating by peak frequency, then by length, then by presence of harmonic stacks, then by frequency modulation, etc.

Other than that, are there any suggestions of other approaches I could try?

I only have access to a Mac which limits the programs I can use, but do have access to Raven Pro. Any advice would be appreciated.

**Tags:** bird


---

## 7 answers

### Answer by username_7 on 2022-07-06. Score: 14 | Accepted answer

It sounds like you are describing a decision tree analysis, which is typically constructed in custom code. This can be done in R or Matlab (or Python, really).

A decision tree looks like this, as recently published by [Hamilton et al. 2021](https://asa.scitation.org/doi/full/10.1121/10.0005756):
[![Decision Tree from Hamilton et al. 2021](https://i.sstatic.net/xwGJk.png)](https://i.sstatic.net/xwGJk.png)

I second that you should look at R packages monitoR and tuneR to extract the features that you need which would feed into your decision tree. R, as it is free and runs on Macs, would be the best way to approach coding your algorithm. Unfortunately, I am not aware of a software that allows you to design a tree without some knowledge of coding.

**Reference**

Hamilton, R. A., Starkhammar, J., Gazda, S. K., & Connor, R. C. (2021). Separating overlapping echolocation: An updated method for estimating the number of echolocating animals in high background noise levels. The Journal of the Acoustical Society of America, 150(2), 709-717.


---

### Answer by username_1 on 2022-07-06. Score: 7

I would suggest looking into the R package, monitoR: <https://cran.r-project.org/web/packages/monitoR/index.html>

The reference manual contains a couple of very useful examples for getting a feel of the package and its functionality, and the audio examples to build correlation templates, etc are built into the package.

In terms of automating the process, I haven't progressed this far with monitoR, though some researchers I know recently published a [journal article](https://www.sciencedirect.com/science/article/pii/S1574954122001054) documenting nest monitoring of critically endangered black cockatoos on Kangaroo Island. The acoustic analysis of species and call recognition/workflow was handled in R and the monitoR package.

**Reference**

Teixeira, D., username_3, S., Hill, R., Maron, M., & van Rensburg, B. J. (2022). Fledge or fail: Nest monitoring of endangered black-cockatoos using bioacoustics and open-source call recognition. Ecological Informatics, 69, 101656.


---

### Answer by username_2 on 2022-07-07. Score: 6

I would also recommend checking out the scikit-maad page -
<https://scikit-maad.github.io/index.html>

They have a very versatile set of tools written in Python for sound inspection, classification and analysis.

Equally noteworthy are the contents posted on GitHub by Emmanuel Dufourq of Stellenbosch University, South Africa.

<https://github.com/emmanueldufourq/ISEC2022CEAULML>

He provides Python code sets for deep learning analysis of animal sounds, with special focus on birds.


---

### Answer by username_3 on 2022-07-06. Score: 6

I have clustered calls using the function seewave::diffcumspec in R before. It calculates a pairwise difference between cumulative spectra. It is possibly not what you asked for because if still gives you an 'overall clustering' :)


---

### Answer by username_4 on 2022-07-07. Score: 5

***Koe bioacoustics software*** (koe.io.ac.nz) is free open-source web-based software for classifying animal sounds quickly. You can create interactive ordination plots that allow you to encircle groups of points (acoustic units) and label them in bulk. You can also sort acoustic units by similarity in the unit table and classify them in bulk. Because Koe takes an integrated database approach rather than 'one-file-at-a-time', it has an efficient workflow.

The paper is here: <https://besjournals.onlinelibrary.wiley.com/doi/full/10.1111/2041-210X.13336> and the wiki is here: <https://github.com/fzyukio/koe/wiki>


---

### Answer by username_5 on 2022-07-06. Score: 4

Highlighting a few below, but would also definitely recommend checking out Tessa Rhinehart's wonderful list of bioacoustics software for a more comprehensive list - <https://github.com/rhine3/bioacoustics-software>.

[Kaleidoscope Pro](https://www.wildlifeacoustics.com/products/kaleidoscope) (from Wildlife Acoustics) is a desktop app/GUI that has a nice clustering function, but this is not free (though you can get short-term free trials).

[Arbimon](https://arbimon.rfcx.org/) has a template matching function, which is free & web-based.

In terms of R packages, I second/third the previous mentions of [tuneR](https://cran.r-project.org/web/packages/tuneR/index.html), [monitoR](https://cran.rstudio.com/web/packages/monitoR/index.html), and [seewave](https://rug.mnhn.fr/seewave/). I'd also add [gibbonR](https://github.com/DenaJGibbon/gibbonR-package) to that list (uses MFCCs to detect sounds of interest & then has semi-supervised ML functionality as well). As well as [ohun](https://marce10.github.io/ohun/index.html), which provides functions to diagnose and optimize detection routines (using energy- or template-based detection).
I'd also just note that if you want to go between R & Raven, the [Rraven](https://github.com/cran/Rraven) package is helpful.

For Python, [Koogu](https://pypi.org/project/koogu/) & [OpenSoundscape](http://opensoundscape.org/en/latest/) have a number of different ML functions for building detectors.


---

### Answer by username_6 on 2022-07-09. Score: 0

I am not going into the details of extracting variables. There are several ways to do that. I manually digitised the spectrograms during my PhD as I felt the software accuracy is less and they perform terribly for overlapping calls.

Since you don't know how many call types are in the recording, I would suggest you go for unsupervised clustering. You can follow my methods from [(username_6 2019)](https://journals.plos.org/plosone/article/comments?id=10.1371/journal.pone.0216186). **Variable extraction > PCA > Clustering > Shilloutte plot for validating number of cluster**.

Although I think this method is a little bit primitive as compared to modern advancement, This is a comparatively easy method to follow. I am sure that you will get more advance to classify with ML or ANN.


---

