Understanding Shazam ------ generating Spectrogram

Discussion in 'General Electronics Chat' started by rahdirs, Jun 27, 2013.

  1. rahdirs

    Thread Starter New Member

    May 22, 2013
    28
    0
    Hi all,

    I've just read paper published by "Avery Li-Chun Wang", chief scientist and co-founder of Shazam. I've understood that Shazam generates for each audio sample a finger-print that is then used to search in their data-base.

    I understood that you record sound from your microphone,but how do you generate a spectrogram.

    Once you get the spectrogram,you can maybe use a filter to filter out points with less intensity & you'll get the constellation with limited points & then you hash them & use search algorithm & so on.But how do you get that spectrogram(attached in fig.1) from your microphone.

    Spectrogram is attached in fig.1 & how do you filter out points with less intensity to get a plot of fig.2

    And as Shazam is just an app,i think all this should be done on software,so no question of any additional software.
     
  2. Papabravo

    Expert

    Feb 24, 2006
    10,140
    1,789
    Generating a spectrogram is the same thing as transforming a function of time into a function of frequency. The mathematical name for this is the Fourrier Transform. There is also an Inverse Fourrier Transform that transforms a function of frequency to a function of time. Are you able to grok the math?
     
  3. rahdirs

    Thread Starter New Member

    May 22, 2013
    28
    0
    So,it does fourier transform on audio signals.
    I understand if you can it on MATLAB,but the software is so small & usually it does for all kind of complex sound signals
     
  4. Papabravo

    Expert

    Feb 24, 2006
    10,140
    1,789
    Yes. If you do a Fourier Transform on an audio signal, no matter how complex, you get an audio spectrogram. If you do an Inverse Fourier Transform on an audio spectrogram you get the audio signal. The existence of an inverse implies there is not loss of information in the process.

    If you search the Matlab library you will find functions that compute both the transform and it's inverse. It is not a difficult process to program even on a small microcontroller. It involves only multiplication and addition.
     
Loading...