Tag: 频谱图

比较两个谱图以找到它们匹配算法的偏移量

我每天从互联网上录制2分钟的电台广播。 始终有相同的开始和结束的叮当声。 由于无线电广播的准确时间可能差不多6分钟,我必须录制大约15分钟的收音机。 我想确定这些歌曲在15分钟录音中的确切时间,所以我可以提取我想要的音频部分。 我已经启动了一个C#应用程序,我将MP3解码为PCM数据并将PCM数据转换为基于http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx的频谱图 我尝试在PCM数据上使用交叉相关算法,但算法在6分钟左右非常慢,步长为10毫秒,有时无法找到叮当开始时间。 任何比较两个谱图匹配算法的想法? 或者更好的方法来找到叮当开始时间? 谢谢, 更新,抱歉延误 首先,感谢所有的主人,他们大多数都是相关的或有趣的想法。 我试图实现fonzo提出的Shazam算法。 但未能检测到频谱图中的峰值。 这是来自三个不同记录的起始叮当的三个频谱图。 我尝试使用blobfilterAForge.NET(但它无法识别峰值),模糊图像并检查高度差异,拉普拉斯卷积,斜率分析,检测一系列垂直条纹(但是有太多错误正)… 同时,我尝试了Dave Aaron Smith提出的Hough算法。 我在哪里计算每列的RMS。 是的是每列,它是O(N * M)但是M << N(注意一列是大约8k的样本)。 所以整体而言并不是那么糟糕,算法大约需要3分钟,但绝不会失败。 我可以选择那个解决方案,但如果可能的话,我更喜欢Shazam因为它是O(N)并且可能更快(也更冷)。 因此,你们中的任何一个人都知道一种算法可以始终检测这些光谱图中的相同点(不一定是峰值),这要归功于添加注释。 新的更新 最后,我使用上面解释的算法,我尝试实现Shazam算法,但未能在频谱图中找到适当的峰值,从一个声音文件到另一个声音文件不一致的识别点。 从理论上讲,Shazam算法是解决这类问题的方法。 Dave Aaron Smith提出的Hough算法更稳定有效。 我分割了大约400个文件,其中只有20个未能正确分割。 磁盘空间从8GB到1GB。 谢谢你的帮助。