Solved

acoustic fingerprint

Posted on 2011-03-02
8
505 Views
Last Modified: 2012-05-11
How to generate an acoustic fingerprint? I am programming in java. Are there any libraries or algorithms for doing this under LGPL? I am converting the sound file using FFT (using class for doing fft from this library http://sirk.sytes.net/). The output I am getting is FFT values which I assume by looking at the code are magnitudes of sound. How to generate and acoustic fingerprint that and how to compare it to check whether two sounds are matching?
0
Comment
Question by:chudyksg
8 Comments
 
LVL 27

Expert Comment

by:d-glitch
ID: 35017853
The FFT takes one or more time samples of sound and generates frequency spectra: how much of each
 frequency is included in the sample.

If two sound samples are the same, then their FFT's will be the same.

You can calculate the RMS difference of two FFT's fairly easily:

       D²   =   Sum(  (f_A0 - _fB0)²  +  (f_A1 - f_B1)²  +  ....  +  (f_An - f_Bn)²)/n
 



0
 
LVL 27

Expert Comment

by:d-glitch
ID: 35017860
You would have to do some testing/human evaluation to decide on threshold value for D.
0
 

Author Comment

by:chudyksg
ID: 35020659
Yes but sometimes the sound samples are not going to be the same but will be similar. Then I would have to use some sort fuzzy logic, or fuzzy matching. E.g. If I record a sound of breaking glass and store the acoustic fingerprint in the database then I would record a sound of breaking glass again I would like to get an output that they match.
0
 
LVL 37

Expert Comment

by:TommySzalapski
ID: 35021290
If they are similar, then the RMS difference (D² above) will be low. As d-glitch already said, you'll just have to use testing to decide what levels you want to use to mean a match.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:chudyksg
ID: 35026770
What if they have different length? Then they are not going to produce similar fft values in similar order
0
 
LVL 27

Expert Comment

by:d-glitch
ID: 35027448
The FFT typically works with fixed length time samples.

If you were doing this in real time, you would store 100 ms of data,
then run it through an FFT, then do the template matching.
If there was a breaking window during that time, you would flag it.

Then you go on to the next 100 ms of data.

In addition to the FFT, you would also have to do some sort of level scaling.
A breaking window 30 feet from the microphone will not be as loud at one
5 feet away.

Are you really looking for breaking glass, or are you looking for more general
applications?
0
 

Author Comment

by:chudyksg
ID: 35027689
yep recognizing sound such as glass breaking, tv noise, washing machine noise
0
 
LVL 11

Accepted Solution

by:
pmasotta earned 500 total points
ID: 35352827
forget about RMS differences they include the mean value and they could be different; the same sound but different volume...

What you have to do is to "correlate" both FFTs by convolution, (be carefull this is different than "convolution by FFT")

Having the 2 FFT spectra the convolution of them will give you a new function that shows how correlated both FFT patterns are, from there you can discover if it is the same sound, shifted in frecuency, etc,etc...
It is not an easy topic, your proyect is quite ambitious...

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
The greatest common divisor (gcd) of two positive integers is their largest common divisor. Let's consider two numbers 12 and 20. The divisors of 12 are 1, 2, 3, 4, 6, 12 The divisors of 20 are 1, 2, 4, 5, 10 20 The highest number among the c…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now