Klasse Fingerprint
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 1 - 4 seconds. 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 final int[]private final intprivate final float[]private final intprivate final intprivate final intprivate final float[]private final 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 final int dataLen -
range_time
private final float[] range_time -
range_freq
private final float[] range_freq -
Band
private final int[] Band -
minFreq
private final int minFreq -
maxFreq
private final int maxFreq -
minPower
private final 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()
-