Prashant
Prashant

Reputation: 91

audio pattern matching in matlab

Can someone please give me an idea about this problem in matlab ,

I have 4 .wav files that contain the chirping of the birds . Each .wav file represents a different bird. Given an input .wav file , I need to decide which bird it is . I know I have to make frequency spectrum comparison to get to the solution . but don't quite know how i should use spectrogram to help me get there .

P.S. I know how what spectrogram does and have plotted quite a few .wav files with it though

Upvotes: 0

Views: 2891

Answers (3)

Niko Gamulin
Niko Gamulin

Reputation: 66565

You might try to solve the problem with Deep Belief Networks

Here are some articles that might be helpful:

To summarize the idea, instead of manually tune the features, employ RBMs or Autoencoder to extract features (bases) which represent the observed audio samples and then run learning algorithm.

You will need more than 4 audio samples in order to train DBN but it is worth trying as the approach has shown promising results in the past.

This tuturial might be also helpful.

Upvotes: 1

PVaz
PVaz

Reputation: 150

There are several methods for patter recognition problem like the one that you are talking.

You can use a frequency analysis like FFT with the matlab function
S = SPECTROGRAM(X,WINDOW,NOVERLAP)

In SPECTROGRAM you need to define the time window of signal to be analysed in the variable WINDOW. You can use a rectangular window (example WINDOW = [1 1 1 1 1 1 1 ... 1]) with the number of values equal to the desired length. There are a lot of windows to use: hanning, hamming, blackman. You should used the one which is better to your problem. The NOVERLAP is the number of points that your windows moves in one step.

Besides this approach, wavelet transform is also a good technique to solve your problem. Matlab also have a good toolbox to apply discrete and continuous wavelets.

Upvotes: 1

fatihk
fatihk

Reputation: 7919

this may prove to be a complicated problem. As a starting point I advise you to divide each record into some fixed length of frames like 20ms with 10ms overlap ,then extract fft of these frames and get some max energy freq. values for each frame. As a last step compare frame frequencies with each other and determine the result by selecting the maximum correlation

Upvotes: 0

Related Questions