Klasse Fingerprint

java.lang.Object
libsidutils.fingerprinting.fingerprint.Fingerprint

public class Fingerprint extends Object
Working principle:
The algorithm is similar to Shazam. First, I calculate the spectrum of the audio. The spectrum is divided into several sub-bands according to the frequency, and several peak points are searched for each sub-band. The subband of the algorithm is based on the Mel frequency. The peak points to be obtained are grouped according to the frequency and time range. The point-to-frequency range of the algorithm is within the sub-band, the purpose of which is to reduce the number of pairs of points and improve the distributed capability. The time range for taking a pair is 1s-4s. You can modify these parameters as needed.

Performance and effects:
Data volume: The music library is 1500 songs, the number of fingerprints is about 24 million, and the server takes up about 340M after being stable.

Speed: Processor i7-3632QM, adding 1500 songs takes about 1919 seconds, and a song takes about 1.3 seconds. It takes about 0.2 seconds to find a 10s song using the server (regardless of the time the client reads the file).

Accuracy: has a high recognition rate for low-noise audio, and close to commercial accuracy for higher noise, but relatively speaking, if there is a song that does not appear in the music library, there is a certain error. Report rate.

Anti-noise: can resist strong distortion and noise, you can refer to the test audio I gave.

Contact information:
EMAIL: hsyecheng@hotmail.com

Note: A music fingerprinting system that uses JAVA and requires a MySQL database (although it is not required, but the system uses it to save fingerprints and music information). You may need to modify the max_allowed_packet parameter, because adding a song requires sending a larger package. The parameter I am using is 32M
Autor:
hsyecheng on 2015/6/11.
Siehe auch:
  • Felddetails

    • SAMPLE_RATE

      private static final float SAMPLE_RATE
      Siehe auch:
    • dataLen

      private int dataLen
    • nPeaks

      private int nPeaks
    • fftSize

      private int fftSize
    • overlap

      private int overlap
    • c

      private int c
    • peakRange

      private int peakRange
    • range_time

      private float[] range_time
    • range_freq

      private float[] range_freq
    • Band

      private int[] Band
    • minFreq

      private int minFreq
    • maxFreq

      private int maxFreq
    • minPower

      private int minPower
    • peakList

      private final ArrayList<Peak> peakList
    • freq

      private final float[] freq
    • time

      private final float[] time
  • Konstruktordetails

  • Methodendetails

    • inBand

      private int inBand(int intFreq)
    • link

      private void link(boolean band)
    • getLinkList

      public ArrayList<Link> getLinkList()
    • getPeakList

      public ArrayList<Peak> getPeakList()
    • toHashBeans

      public HashBeans toHashBeans(IdBean id)
    • getAudioLength

      public float getAudioLength()