我正在制作一个音频指纹识别系统,最近经历了一些论文和研究,特别是这个页面:c# AudioFingerprinting and Locality Sensitive Hashing
我现在每32ms的音频都有一系列指纹。我想要做的是使用LSH或其他一些相似性保留方法来散列这些单独的指纹(而不是它们的序列)。根据我对LSH的理解,它适用于多维向量并产生二进制字符串,然后可以在汉明空间进行比较。
我的问题是我的指纹不是多维的。它们只是单个长整数。如何使用LSH散列这些?是否有任何方法可以散列(以相似性保留的方式)单维标量?
答案 0 :(得分:1)
回复迟到了,但事情就是这样,确实很简单,但不知道我是怎么错过的。
LSH将使用随机投影向量将矢量或标量投影到不同的维度空间,同时保持相似性。在这里查看一个好的答案https://stackoverflow.com/a/12967538/858467
所以我所要做的就是创建一个有序[nx 1]的随机投影矩阵,然后将它与标量[1 x 1]或标量[1 xm]的向量相乘得到投影[nx 1]或[nxm]。然后对其进行阈值处理以获得二进制向量似乎就这样做了。
虽然这是我相信正确的相信方式(以前也以同样的方式完成),但我现在似乎无法获得良好的二进制向量。当我对这个问题有更深入的了解时,我可能会发布另一个问题。