discussion / Acoustics  / 6 February 2021

Organize audio files by frequency

Hi! I hope everyone is doing well. I am new to acoustic tracking and I have recently set out an audio recorder to record bird sounds and I now have 100s of files of 10-second bird calling sounds. I was wondering if anyone had a program that they used that could sort of these files by frequencies. I am currently using audacity to open and play the files. 




Hi - there are two possible ways that I would do this (and more depending on your own skills and ways of working).

1. Use Kaleidoscope Pro to analyse the files. This gives you a spreadsheet as output with a wide  range of parameters provided.  You can simply click on the spreadsheet column header to sort the files.

2. Use one of the R sound packages (e.g. seewave) to analyse the sound files and calculate the peak/fundamental frequency - and then write this into a dataframe, or maybe save the wav with the freq appended to the filename?

Ta, Carlos

 

This may not be immediately useful, but I really like this interactive visualisation of bird calls organised by similarity (requires a desktop browser to run the experiment): 

https://experiments.withgoogle.com/bird-sounds

They do provide the source code so it may be possible recreate this with your data, but it does seem daunting. One thing to note with these similarity measurements is the pattern or clustering is dependent on the input data. The outcome of this is you may end up with a very different order and pattern with only a sligltyly different set of input data.

 

As Carlos mentioned, the R packages would be good if you're just looking for summary stats averaged over the whole 10s of the fiie. You would just read that directory into R and load seewave, tuneR, warbleR (I think monitoR may also have this functionality). Perhaps helpful links - 

seewave - http://rug.mnhn.fr/seewave/

tuner - https://rdrr.io/rforge/tuneR/

warbler - https://marce10.github.io/warbleR/

 

I'm assuming that by "sort by frequencies" you mean the frequency of the call itself, not the frequency of the audio recording (for example, a call at 1KHz vs a recording at a sample rate of 48KHz). My recommendation would be to use R (seewave/tuneR) to generate mean spectra of the recordings (meanspec function) and you can then use those mean spectra to figure out the peak frequency range and sort by that.