1
$\begingroup$

I am attempting a project and I have been given Bat calls (in .wav) which are not ultra-sound navigation calls and I'm looking to isolate the different species of bats and monitor their activity.

The problem I am having is that I do not have a prior training set to be able to feature matching on the samples to try and identify them. I have been doing part research and I have looked at the following Link which gives details of the species of bats, their rep rate, FM/CF and Peak power.

From the link above, I am assuming that I can have some kind of array which contains the species of the bats, as well as their frequency (range) or "Peak Power" and then using an FFT algorithm, convert the samples that I have obtained and then match the output of the FFT against the pre-set array and therefore enable a platform to monitor their activity.

Here are the 2 questions:

1) Based on the above, does would this be an ideal solution in order to isolate the bats and therefore monitor their activity or would I need to implement further algorithms in order to isolate the bats calls?

2) I have only ever had experience of using the Cooley-Tukey FFT algorithm, would this be sufficient enough for this type of project?

Thank you for taking time to read this.

$\endgroup$
  • $\begingroup$ "ever had experience of using the Cooley-Tukey FFT algorithm" Just use an existing FFT library, don't worry about the algorithm $\endgroup$ – endolith Aug 29 '13 at 14:05
1
$\begingroup$

1) Based on the above, does would this be an ideal solution in order to isolate the bats and therefore monitor their activity or would I need to implement further algorithms in order to isolate the bats calls?

The short answer is no, this would be no where near ideal. This type of work strongly overlaps with speech/voice recognition, and the algorithms (or more so, the features) involved are not trivial.

There are certainly frequency features that one can extract from audio signals of species to try and cluster them, and the DFT would certainly be the transform of choice for this type of raw feature. However the DFT will only give you frequency scores, although it where one would start. Other frequency metrics and features can be more complex. (Look at cepstral analysis, MFCC, etc).

2) I have only ever had experience of using the Cooley-Tukey FFT algorithm, would this be sufficient enough for this type of project?

Remember that the DFT is a Transform, whilst the FFT is an efficient algorithm for this transform. Furthermore, the Cooley-Tukey Algorithm is one way of implementing an FFT. In your work, you will use canned libraries that have the FFT. You don't need to implement an FFT in the 21st century, just as you would not be expected to implement the square root function.

I strongly suspect that you will need to compute the Short-Time-Fourier-Transform (STFT) for this type of project. In anticipation of your next needs, please see the wiki link on the STFT, as well as this post here. The STFT allows you to analyse signals in the dual time-frequency domain. You will most likely want to start your feature extraction in that space.

let's assume I have computed the STFT and the MFCC and extracted the features, how would I therefore identify the species of the bats? Would I therefore need some kind of training in order to complete this task?

Once you have decided on what sets of features you need to use, you will of course need a learning algorithm to discriminate them properly. Since you do not have a training set, there are two options. The first obvious is to attain a training set, and/or meticulously label your data based on what you know to be true. Once you have your labels, then you can use supervised training techniques like logistic regression or a simple perceptron to come up with separating hyperplanes in feature space that disjoint your data. The second option however, would be for you to use unsupervised learning techniques (such as K-means for example).

If you use something like K-means, you will need to know apriori how many different bat species you are trying to discriminate against. This is the value of your hyper-parameter $k$. The output of K-means will be $k$ vectors, each of them being in $N$-dimensional points in feature space, representing your cluster centroids. Now, every time you get a new audio sample, you:

  • Compute $N$ features and place this into a feature vector.
  • Compute the L2 vector norm, (aka, the Euclidean distance) between the given feature vector, and the $k$ centroid vectors you pre-computed from using $k$-means.
  • Pick the $i$th centroid out of the $k$ cetroids that corresponds to the closest distance to your point.

Mathematically, you want to declare a bat of type $i$, among $k$ type bats by:

$$ {arg\,min}_{i \in (1, 2, ...k) } \sqrt{\sum_{n = 1}^{N} (\mathbf{x} - \mathbf{f_i})^2 } $$

where $\mathbf{x}$ is an $N$ x $1$ feature vector of your unclassified audio sample, and $\mathbf{f_i}$ is the $i$th $N$ x $1$ cluster centroid found by $k$-means.

$\endgroup$
  • $\begingroup$ Hey, thanks for your reply. I understand wthe concepts of MFCC however, I don't understand what purpose they would have in this project? Since, I do not have prior training and I have only ever used MFCC extraction for feature matching.. $\endgroup$ – Phorce Aug 7 '13 at 19:02
  • $\begingroup$ @user1326876 I mention the MFCC as an example of what would be involved in creating non-trivial frequency-based features as an example. $\endgroup$ – Tarin Ziyaee Aug 7 '13 at 19:07
  • $\begingroup$ I'm now lost at which approach to take since my above outline would not work (in my main post) let's assume I have computed the STFT and the MFCC and extracted the features, how would I therefore identify the species of the bats? Would I therefore need some kind of training in order to complete this task? $\endgroup$ – Phorce Aug 7 '13 at 19:10
  • $\begingroup$ @user1326876 Please see my edits and see if thats helps. $\endgroup$ – Tarin Ziyaee Aug 7 '13 at 19:39
  • $\begingroup$ @user1326876 Thank you. It does make some sense, however, I will research K-means and then see if it makes more sense, as well as other unsupervised learning techniques. Thank you so much for your help so far, I have a year to complete this project so wish me luck! $\endgroup$ – Phorce Aug 7 '13 at 19:45

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.