Klasse Fingerprint
java.lang.Object
libsidutils.fingerprinting.fingerprint.Fingerprint
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
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:
-
Feldübersicht
FelderModifizierer und TypFeldBeschreibungprivate int[]private intprivate intprivate intprivate final float[]private intprivate intprivate intprivate intprivate intprivate intprivate float[]private float[]private static final floatprivate final float[] -
Konstruktorübersicht
Konstruktoren -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungfloatprivate intinBand(int intFreq) private voidlink(boolean band) toHashBeans(IdBean id)
-
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
-
linkList
-
freq
private final float[] freq -
time
private final float[] time
-
-
Konstruktordetails
-
Fingerprint
-
-
Methodendetails
-
inBand
private int inBand(int intFreq) -
link
private void link(boolean band) -
getLinkList
-
getPeakList
-
toHashBeans
-
getAudioLength
public float getAudioLength()
-