0
$\begingroup$

I'm trying to find a way of automatically identifying birdsong in phone-recorded sound files (1min long). Currently the algorithm I'm using doesn't label all of the events I want it to. (it is designed for non noisy audio files).

I don't have much experience in DSP. I'm hoping that upon looking at my wave-forms someone may have an idea of how to pick out these 'birdsong events'! I've shown one of the waveforms. The rest can be seen here: imgur.com

Any method would be appreciated!

I've thought about applying a noise reduction algorithm but I suspect this could just interfere with things. Here is a link to the algorithm I'm using in case you're interested: Github/kylemcdonald

The labelled events are the cross hatched ones. example waveform #1

Thanks in advance for taking the time to look at this!

$\endgroup$
  • $\begingroup$ If you have some labeled data you can try training a classifier. You can use a sliding window of a fixed length and compute a "feature vector" from each segment. One obvious feature to use is the "signal energy" eg. average value of the samples. You can try other spectral features that librosa computes, like spectral centroid. I can try playing around if you can upload some raw data. $\endgroup$ – Atul Ingle Nov 2 '17 at 2:14
  • $\begingroup$ Hi Atul we intend to use machine learning later on when we've collected a lot of data but the problem is we don't have enough yet. This is intended as the first step to 'analysing birdsong' just to get a measure of how noisy they are. Plus we expect applying a classifier will be a lot more complicated than just finding these 'sound events' through an algorithm. If you think applying a classifier would be more simple or even if we don't need much data, please say!(I have more experience in ML than creating this sort of algorithm so would actually like an excuse to move onto using a classifier) $\endgroup$ – Finn Maunsell Nov 2 '17 at 2:38
  • $\begingroup$ "Picking out birdsong events" sounds like a classification problem to me. Of course, you can use concepts from DSP to engineer features, but other than that, I don't see how you can use DSP to segment them. $\endgroup$ – Atul Ingle Nov 2 '17 at 3:44
  • $\begingroup$ Good to know. You have made me think that it could be made into an easier classification problem than I expected, Thanks. $\endgroup$ – Finn Maunsell Nov 2 '17 at 3:51
  • $\begingroup$ I'm converting my comments above to an answer. I will delete the comments in a couple of days. $\endgroup$ – Atul Ingle Nov 2 '17 at 16:33
0
$\begingroup$

"Picking out birdsong events" sounds like a classification problem to me. Of course, you can use concepts from DSP to engineer features, but other than that, I don't see how you can use DSP to segment them.

If you have some labeled data you can try training a classifier. You can use a sliding window of a fixed length and compute a "feature vector" from each segment. One obvious feature to use is the signal energy eg. average value of the samples. You can also try other spectral features that librosa computes, like spectral centroid.

$\endgroup$
1
$\begingroup$

Automatic detection of birdsong is a well studied problem in machine-learning applied to ecoacoustics/bioacoustics. State of the art methods use Convolutional Neural Networks on spectrograms. In binary classification of bird/no-bird they reach AUC ROC of around 0.90 in noisy and mismatched conditions. The DCASE2018 Bird Audio Detection challenge is a good starting point. Open-source code is available for many of the systems, including the challenge winner. Several of the systems could be adapted to Audio Event Recognition to give time-information of predictions.

Note that to verify your approach is working well, you should always also have a manually labeled test-set.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.