private void processMonitorQuery(float[] audioBuffer,int maxNumberOfResults,
QueryResultHandler handler,double queryOffset,Set<Integer> avoid){
int samplerate = Config.getInt(Key.NFFT_SAMPLE_RATE);
int size = Config.getInt(Key.NFFT_SIZE);
int overlap = size - Config.getInt(Key.NFFT_STEP_SIZE);
AudioDispatcher d;
try {
d = AudioDispatcherFactory.fromFloatArray(audioBuffer, samplerate, size, overlap);
final NFFTEventPointProcessor minMaxProcessor = new NFFTEventPointProcessor(size,overlap,samplerate);
d.addAudioProcessor(minMaxProcessor);
d.run();
List<NFFTFingerprint> fingerprints = new ArrayList<NFFTFingerprint>(minMaxProcessor.getFingerprints());
final List<NFFTFingerprintQueryMatch> queryMatches = new ArrayList<NFFTFingerprintQueryMatch>();
queryMatches.addAll(storage.getMatches(fingerprints, maxNumberOfResults));
double queryDuration = d.secondsProcessed();
if(queryMatches.isEmpty()){
QueryResult result = QueryResult.emptyQueryResult(queryOffset,queryOffset+queryDuration);
handler.handleEmptyResult(result);
}else{
for(NFFTFingerprintQueryMatch match : queryMatches){
//avoid the results in the avoid hash set
if(!avoid.contains(match.identifier)){
String description = storage.getAudioDescription(match.identifier);
handler.handleQueryResult(new QueryResult(queryOffset,queryOffset+queryDuration,String.valueOf(match.identifier), description, match.score, match.getStartTime(),100.0,100.0));
}
}
}
} catch (UnsupportedAudioFileException e) {
LOG.severe("Unsupported audio");
}
}
NFFTStrategy.java 文件源码
java
阅读 21
收藏 0
点赞 0
评论 0
项目:Panako
作者:
评论列表
文章目录