我遇到的问题包括处理超过一百万个音频文件(来自用户生成的视频内容),这些文件可能已被编辑(主要是剪辑)并以各种质量上传。我的任务是将所有重复项映射到一个项目ID,以便我们稍后过滤以显示那些具有全长和最佳质量的视频。
由于不同文件之间视频之间的视觉差异可能不同,我们希望将音轨用于我们的目的。这就是为什么我正在搜索对上述内容有抵抗力的音频内容散列。你可以把它称为' Shazam' -problem。
我的问题是:您认为找到这些潜在重复项的最简单方法是什么(可以进行手动审批)?
一个子问题是:如何解决不处理相位不同的音频文件块的问题(确保来自2个不同长度的音频的哈希输入始终相同)。
我目前的做法是通过音频进行处理,并且在给定时间窗口内声波上的每个局部高点在随后的20-30秒块上生成某种散列。只要重复查找过程是某种键值查找而不是与所有其他哈希值的交集,我就可以轻松地为每个文件存储几十个哈希值。
我没有元数据或其他任何可以使用的内容。
答案 0 :(得分:4)
有一个很好的描述shazam如何在内部工作:
An Industrial-Strength Audio Search Algorithm
他们搜索最突出的频率成分及其相对距离,并以巧妙的方式存储这些距离,以便快速搜索和匹配。
这可能看起来非常复杂,但是对于音频文件的强大指纹识别需要付出一些努力,这根本不是一个小问题。