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.