C#AudioFingerprinting和局部敏感哈希 [英] c# AudioFingerprinting and Locality Sensitive Hashing

查看:246
本文介绍了C#AudioFingerprinting和局部敏感哈希的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

香港专业教育学院发现simlar上岗前这个但没有真正回答了这个问题。

Ive found simlar posts before about this but nothing really answers the question.

在我的指纹,我产生其中有5个整数一个记录集。例如:
33,42,88,121,194

In my fingerprinting, i produce a recordset which has 5 integers. For example: 33,42,88,121,194

这些对应于具有用于音乐的特定样品的最高幅值的频率。
例如:对音频采样我有以下的频率桶30ms的:

These correspond to the frequencies which have the highest magnitude for a particular sample of music. Eg: for 30ms of audio sample i have buckets of the following frequencies:

0-40

40-80

80-120

120-180

180-250

我试着去产生一个哈希(一颗宽容的一种),这将可能产生了相同的散列
33,42,88,121,194,因为它会为说。

Im trying to produce a hash (a forgiving one) which will perhaps produce the same hash for 33,42,88,121,194 as it would for say

33,43,88,122,195

33,43,88,122,195

,其中有在将形成一个类似散列频率的微小差别。

where there are minor differences in the frequencies a similar hash would be formed.

1日关闭这是LSH?我已阅读,这是最好的音频指纹。

1st off is this LSH? as i have read that this is best for Audio Fingerprinting.

如果没有,任何人都可以提供一些伪code或C#为可能做找什么即时通讯的功能?我读了关于LSH MATLAB和Perl的实现,但我不明白他们这么张贴链接到他们不会真正帮助我太多了。

If not, could anyone provide some psuedocode or c# for a function that might do what im looking for? i have read up on LSH and matlab and perl implementations but i dont understand them so posting a link to them won't really help me too much.

再次感谢!

推荐答案

这可能是此重复:<一href=\"http://stackoverflow.com/questions/5651725/compare-two-spectogram-to-find-the-offset-where-they-match-algorithm\">Compare 2频谱图来找出它们匹配算法偏移,看来你正在尝试做的是产生一个直方图峰的样品中的粗分配。有几种方法可以做到这一点,又一个榜样是在这里:<一href=\"http://stackoverflow.com/questions/5651725/compare-two-spectogram-to-find-the-offset-where-they-match-algorithm\">Compare 2频谱图来找出它们匹配算法

This might be a duplicate of this: Compare two spectogram to find the offset where they match algorithm, what it appears you are trying to do is produce a histogram for the rough distribution of the peaks in the sample. There are several methods to do this, another "example" is here: Compare two spectogram to find the offset where they match algorithm

这样做的一种方法是使用峰值数据及其分布(随时间)的快速傅立叶变换,以产生所述样品的粗等价在蒸馏形式。要做到这一点,你做的大致相似的东西:

One method of doing this is to use a Fast-Fourier-Transform of the peak data and its distribution (over time) to produce a rough equivalence of the sample in a distilled form. To do this you do something roughly similar to:


  1. 将样本分成若干离散部件(例如1秒)

  2. 对于每个样品部分开发接近样品的指纹(说服用5-7高峰和低峰,规范他们,然后他们散列

  3. 您现在可以保留每个单独的指纹(集合),或运行变换在序列生成根据您的需要一个指纹。很可能你只想序列追加在一起1秒的间隔获得线性的指纹。

要比较的指纹,你在第二个样品运行相同的过程,然后使用一个diff算法来比较两个,使用一些模糊来决定他们是多么接近。将需要的指纹比较两个维度,离散指纹的顺序,以及各样品中的整体差。

To compare the fingerprint, you run the same process over the second sample, and then use a Diff algorithm to compare the two, using some "fuzz" to decide how close they are. You will need to compare the fingerprints on two dimensions, the order of the discrete fingerprints, as well as the overall difference in each sample.

在做一个粗略的Java相当于Shazaam这篇文章被张贴前一阵子:的 HTTP://www.red$c$c.nl/blog/2010/06/creating-shazam-in-java/ 并可能是对你有所帮助。

This article on making a rough Java equivalent to Shazaam was posted a while ago: http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/ and may be of some help to you.

这篇关于C#AudioFingerprinting和局部敏感哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆