0
$\begingroup$

I am trying to implement the algorithm described in this paper. However, I am having trouble understanding the last part where I need to find the energy differences of bands.

In another paper, this process is described as shown below. Also, I am not sure I understand that either. What exactly I should do in this part of the algorithm ? Any hints or tips would be really appreciated.

enter image description here

$\endgroup$
2
$\begingroup$

If you split the signal in 33 Frequency bands for every frame you will have a vector band containing all subbands, all right, and now to compute the Energy Difference from each Band you just need to do:

$$E(x)=\sum_{k=1}^{32}band(k) - \sum_{k=1}^{32}band(k+1)$$

For the first frame compute the equation above, and for all others frames block, You can do something like:

$$E2(x)=\sum_{k=1}^{32}band(k) - \sum_{k=1}^{32}band(k+1)$$

$$F(n,m)= 1 if(E2 -E)>0$$ $$F(n,m)= 0 if(E2 -E)<=0$$

$$E(x) = E2(x)$$

This will generate a 32 bits array (0's and 1's) in $F$, Your end result should be a matrix of dimension 32x256, and it is your fingerprint !

EDIT

Answering your other question, if you are following the article exactly as described, the frame rate used in the paper is 5000hz, then each sub-fingerprints 32x1 is equivalent at 0,0116ms of audio its give you an analyze of 58 Frames = 0,0116 * 5000, it does not contain enough information to make a fingerprint, you'll need something comes close to 3 seconds and 256 comes very close look, 0,0116 * 256 = 2,9696, Ok you need do one fingerprint for ever 256 sub-fingerprints and it will create a lot of 32x256 matrix for your audio :-)

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thanks for your answer it makes perfect sense now! However, one thing that confuses me is that my fingerprint length is not equal to 256. I am not sure what I am doing wrong but this seems alright to me since as the length of the audio changes, the number of frames will increase. As a result, when I do this calculation I will get varying lengths of fingerprints. How do I make sure that the length is always 256 ? In my case I get something like 32x2000 $\endgroup$ – Cemre Dec 3 '13 at 18:12
  • $\begingroup$ Any ideas my friend ? Do you think clipping audio sample may be the way to go ? $\endgroup$ – Cemre Dec 3 '13 at 20:28
  • 1
    $\begingroup$ yeah I did this Algorithm some time ago, see my edit ! $\endgroup$ – ederwander Dec 3 '13 at 20:36

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.