我之前发现了simlar帖子,但没有真正回答这个问题。
在我的指纹识别中,我产生一个有5个整数的记录集。例如: 33,42,88,121,194
这些对应于特定音乐样本具有最高幅度的频率。 例如:对于30ms的音频样本,我有以下频率的桶:
0-40
40-80
80-120
120-180
180-250
我试图产生一个哈希(一个宽容的哈希),它可能会产生相同的哈希值 可以说是33,42,88,121,194
33,43,88,122,195
在频率上存在微小差异的情况下,将形成类似的散列。
第一关是这个LSH?因为我已经读过,这对于音频指纹识别来说是最好的。
如果没有,任何人都可以为可能正在寻找的功能提供一些伪代码或c#吗?我已经阅读了LSH和matlab以及perl实现,但我不理解它们,所以发布一个链接并不会给我太多帮助。
再次感谢!
答案 0 :(得分:0)
这可能与此重复:Compare two spectogram to find the offset where they match algorithm,您尝试做的是为样本中峰的粗略分布生成直方图。有几种方法可以做到这一点,另一个“示例”在这里:Compare two spectogram to find the offset where they match algorithm
这样做的一种方法是使用峰值数据的快速傅里叶变换及其分布(随时间推移)以蒸馏形式产生粗略等效的样品。要做到这一点,你要做的事情大致类似于:
要比较指纹,请在第二个样本上运行相同的过程,然后使用Diff算法比较两者,使用一些“模糊”来确定它们的接近程度。您需要比较两个维度上的指纹,离散指纹的顺序以及每个样本的总体差异。
这篇关于制作粗略Java等同于Shazaam的文章是在不久前发布的:http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/,可能对你有所帮助。