Java:比较两个音频文件,看它们是否相同;“音乐”;

Java:比较两个音频文件,看它们是否相同;“音乐”;,java,audio,Java,Audio,我正在从事一项音乐流媒体服务,我遇到了一个问题:如何比较两个音频文件,看它们是否代表同一首歌曲。这些文件可能没有相同的扩展名(例如OGG、mp3、wma),但可能仍然是同一首歌曲,并且它们可能具有不同的比特率和音量级别。对于类似的内容(因为我做了一点音频制作),您将需要一些能够执行频谱分析的算法(可能使用FFT-快速傅立叶变换)。 检查此项。搜索“音频指纹”。一个可能的解决方案可能是或。我想查看谷歌的开源lib musicg API: 它是Java,为两个音频文件提供了相似性度量。您可以使用

我正在从事一项音乐流媒体服务,我遇到了一个问题:如何比较两个音频文件,看它们是否代表同一首歌曲。这些文件可能没有相同的扩展名(例如OGG、mp3、wma),但可能仍然是同一首歌曲,并且它们可能具有不同的比特率和音量级别。

对于类似的内容(因为我做了一点音频制作),您将需要一些能够执行频谱分析的算法(可能使用FFT-快速傅立叶变换)。

检查此项。

搜索“音频指纹”。一个可能的解决方案可能是或。

我想查看谷歌的开源lib musicg API:

它是Java,为两个音频文件提供了相似性度量。

您可以使用

基本上,您将生成本地歌曲的指纹,并将其与找到的歌曲数据库进行比较

如果要比较两首歌曲,需要做的是创建一个本地数据库,其中包含第一首歌曲,然后尝试在自己的数据库中匹配第二首歌曲。如果找到,则表示它们相同

请注意,“是同一首歌”的概念很复杂。实际上指纹所做的是比较歌曲的许多部分,尝试匹配这些部分。这意味着即使音频中存在干扰(如人们说话、背景噪音等)您可以匹配一首歌曲,因为大部分音频都与原始音乐相似