识别文件中的音频样本

2 投票
2 回答
630 浏览
提问于 2025-04-16 23:32

我想要能够在我手上的一个音频文件(mp3格式)中找到用户提供的音频样本。

这个mp3文件是我为了测试目的保存的一个广播流,我有节目的前奏部分。我想在这个文件中找到它,并获取它播放的时间戳。

注意:解决方案可以用以下任何一种编程语言:Java、Python或C++。我不知道怎么分析这个音频文件,任何相关的参考资料都会对我有帮助。

2 个回答

2

我会先计算一下“干草堆”和“针”的文件的快速傅里叶变换(FFT)谱图。然后你可以尝试模糊匹配这两个谱图。如果把它们格式化成图片,你甚至可以使用现成的算法来进行匹配。

我不确定这是不是最标准或最好的方法,但我觉得这样应该能行。

3

这个问题属于音频指纹识别的范畴。如果你已经把一个样本和一首歌匹配上了,那么你肯定知道这个样本在这首歌中的具体时间点。Shazam的团队写了一篇很棒的论文,详细描述了他们的技术:http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf。他们的基本思路是从声谱图中找出局部最大值,然后根据这些最大值的位置关系创建一个哈希值。

这里有一篇关于音频指纹识别算法的好评审文章:http://mtg.upf.edu/files/publications/MMSP-2002-pcano.pdf

无论如何,你可能会经常使用快速傅里叶变换(FFT)和声谱图。这篇文章讲述了如何在Python中实现这一点。

撰写回答