有没有办法以编程方式比较两个声音文件,以确定它们是相同还是几乎相同?这些不是mp3文件,没有任何ID3或其他元数据,而是普通的wav文件.比较校验和值可能不起作用,因为它们可能不完全相同.
关于声学指纹识别的维基百科文章提到了许多产品,包括开源libfooid.基本上你正在考虑进入频域,在相对较少的频段(比如32)上采用粗略的水平,给你一个代表25ms声音的字符串,为整个文件做这个,然后做一个不同文件的这些字符串的模糊比较.这是相当复杂的,但需要做 - 比较实际的样本不会让你到任何地方就像一个简单的体积移动几个百分点将抛出整个匹配.
比较一组声音的相似性的过程在计算机科学研究中称为基于内容的音频索引,检索和指纹识别.
一种方法是:
1)对每个音频文件运行几位信号处理,以提取特征,例如随时间变化的频率,频谱,自相关,动态范围,瞬态等.
2)将每个音频文件的所有功能放入多维数组中,并将每个多维数组转储到数据库中
3)使用优化技术(例如梯度下降)找到多维数据数据库中给定音频文件的最佳匹配.
使这项工作做得好的诀窍是哪些功能
有几个项目可以做这样的事情,包括MusicBrainz和EchoNest.
Echonest拥有我在这个领域见过的最简单的API之一.很容易上手.
PS不,我不为Echonest工作,也不认识在那里工作的人.