我正在尝试比较 .wav 文件的相似性。 我使用了谷歌音乐库,但我对类似的声音得到了不好的分数。我比较了同一辆车的两个汽车电机声音,录音声音与人声非常相似,但我得到的指纹相似度分数如 0.012468828。录音是用麦克风录制的。
获得这些糟糕分数的原因是什么?
我使用:
Wave wave = new Wave("wav1.wav");
Wave wave1 = new Wave("wav4.wav");
FingerprintSimilarity fingerprintSimilarity = wave.getFingerprintSimilarity(wave1);
float score = fingerprintSimilarity.getScore();
float similarity = fingerprintSimilarity.getSimilarity();
System.out.println("Similar sound :"+ "Score : " + score + "\n Similarity : "+ similarity);
我的目标是创建一个程序,可以根据发动机声音找到汽车型号。
还有其他工作得更好的库还是音频指纹的问题?
最佳答案
您应该基于指纹。
但是你应该做的是:
- 获取数据
- 获取数据注释(什么声音属于什么电机)
- 从数据中提取音频特征
- 处理数据以消除冗余
- 开发分类模型
- 评估模型
- 判断哪些功能最适合您的问题
- 在应用程序中实现模型
正如您所看到的,它不仅仅是音乐那么简单。原因是对于音乐,有些人已经做了上述(很多很多次)并开发了相似性模型。对于您的领域和应用程序特定模型,我还没有听说过任何事情。因此,您应该检查声音事件类似论文,或者检查是否有人开发了用于声音事件的应用程序(因为您拥有的是声音事件)。
附注对于上述步骤,您可以使用 MARSYS、JAudio、Sonic Visualizer 和 MIRToolbox 以及 WEKA。
关于java - 检查 .wav 文件的相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488166/