我无法使用musicg库中的FingerprintSimilarity

时间:2018-09-20 09:54:29

标签: java android wav musicg

我正在尝试在我的android项目中实现musicg库。 我已成功将其导入到我的项目中,并尝试将其用于比较两个音频文件并获得它们之间的对称性。

这是我的代码:

  FingerprintSimilarity fingerprintSimilarity = w1.getFingerprintSimilarity(w2);

但是当我运行它时,我的应用崩溃了:

var data = "The First Backward\n Classes\n Commission was formed in\n1953 as chairman.\nJoachim Alva\nfi\nHardekar Manjappa\nKaka Kalelkar";
var result = data.split('\n').map((line) => 
  line.split(' ').filter(str => str.length >3)
)
console.log(result.join('\n'));

我也调试了我的应用程序,但调试报告中未报告任何错误。 请帮我。 预先谢谢你

1 个答案:

答案 0 :(得分:2)

可能是文件不存在或波形格式不正确?我建议添加更多调试信息以查看问题,例如:

try {

    final String rootPath = Environment.getExternalStorageDirectory().getPath() + "/Myapp/music/";
    String p1 = rootPath + "outputfiles/1.wav";
    Log.d("p1 " + p1); 
    File f1 = new File(p1);
    Log.d("f1 " + f1.exists() && !f1.isDirectory());  

    String p2 = rootPath + "outputfiles/com.wav";
    Log.d("p2 " + p2); 
    File f2 = new File(p2);
    Log.d("f2 " + f2.exists() && !f2.isDirectory());  

    Wave w1 = new Wave(p1);
    Log.d("w1 " + w1); 

    Wave w2 = new Wave(p2);
    Log.d("w2 " + w2); 

    FingerprintSimilarity fingerprintSimilarity = w1.getFingerprintSimilarity(w2);
    Log.d("fingerprintSimilarity " + fingerprintSimilarity ); 
    float score = fingerprintSimilarity.getScore();
    Log.d("score " + score ); 
    float similarity = fingerprintSimilarity.getSimilarity();
    Log.d("Similar sound :", "Score : " + score + "\n  Similarity : "+ similarity);
} catch (Exception e) {
    Log.d("Error" + e.getMessage()); 
}