Python 比较两个音频文件
基本上,我有很多代表同一首歌的音频文件。然而,其中一些歌曲的质量比原歌曲差,一些被编辑到与原歌曲不匹配的地方。我想做的是通过编程将这些音频文件与原始音频文件进行比较,看看哪些音频文件与那首歌相匹配,而不管质量如何。直接比较显然不起作用,因为文件的质量不同Python 比较两个音频文件,python,audio,mp3,Python,Audio,Mp3,基本上,我有很多代表同一首歌的音频文件。然而,其中一些歌曲的质量比原歌曲差,一些被编辑到与原歌曲不匹配的地方。我想做的是通过编程将这些音频文件与原始音频文件进行比较,看看哪些音频文件与那首歌相匹配,而不管质量如何。直接比较显然不起作用,因为文件的质量不同 我相信这可以通过分析歌曲的结构并与原作进行比较来实现,但我对音频工程一无所知,所以这对我帮助不大。所有歌曲的格式都相同(MP3)。而且,我正在使用Python,所以如果有它的绑定,那将是非常棒的;如果没有,JVM甚至本机库也可以,只要它在Lin
我相信这可以通过分析歌曲的结构并与原作进行比较来实现,但我对音频工程一无所知,所以这对我帮助不大。所有歌曲的格式都相同(MP3)。而且,我正在使用Python,所以如果有它的绑定,那将是非常棒的;如果没有,JVM甚至本机库也可以,只要它在Linux上运行,我就能知道如何使用它。首先,您必须更改比较域。分析未压缩文件中的原始样本将毫无用处。您的距离测量将基于从音频样本中提取的一个或多个特征。Wikipedia列出了以下常用功能: 音频指纹经常利用的感知特征包括平均过零率、估计速度、平均频谱、频谱平坦度、一组频带上的突出音调和带宽
我没有针对您的编程解决方案,但这里有一个反向工程YouTube音频ID系统。它用于版权侵权检测,这是一个类似的问题。这其实不是一个简单的任务。我认为任何现成的图书馆都做不到这一点。以下是一种可能的方法:
- (对于步骤1)
- (用于数据处理)--另请参阅以获取一些介绍信息
如果你喜欢把它作为自己的项目来做,可能会有所帮助。这也许对你的帮助最大。看看Shazam的工作原理:嗯,听起来不像我想象的那么简单。我最终使用了Picard,至少现在是这样。谢谢。:)PCM数据是字节数组,对吗?在步骤3中,由于我们需要高达32767的振幅,所以在进行规格化时,我相信您会将其转换为整数/双精度数组。如果我错了,请纠正我。此外,我们是否需要在步骤6中计算相关性?或者,如果我们只是比较fft值,看看它们是否在阈值范围内,会怎么样?@LINGS(3)假设步骤(1)中的PCM数据是适当类型的数组(例如int16或float32)。但是,如果所选解码器返回原始字节,那么是的,则需要一个转换步骤。请重新执行步骤(6):如果您的解决方案必须容忍噪声,那么简单的差异将不起作用,因为某些噪声(如咔嗒声或咔嗒声)会在FFT中造成很大的差异。不过,综合性差异可能会奏效。我不确定相关性是这里最好的比较方法,我没有像我可能应该做的那样研究它,但是当我实现类似的东西时,它工作正常。