NFFTStrategy.java 文件源码

java
阅读 21 收藏 0 点赞 0 评论 0

项目:Panako 作者:
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");
    }

}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号