Shazam如何运作

Shazam允许您发送手机上几乎所有歌曲的录音,Shazam会告诉您歌曲的名称,艺术家的名称以及有关该歌曲的其他数据。 这些其他数据通常包括指向您可以购买歌曲的地方的链接,以及该艺术家的近期巡演日期。 近年来,Shazam将其库扩展到了广告和电视。 例如,您可以对Shazam进行广告宣传,并获得有关该产品的其他信息,包括购买该产品的链接。

Shazam成立于1999年,比智能手机还老。 在Shazam的早期,用户会使用如下所示的设备进行呼叫

只要在Shazam的数据库中已经有歌曲,即使在嘈杂的环境(如酒吧或夜总会)中,Shazam搜索也能够找到匹配项。 至少录制五秒钟将获得最佳效果。 您可以在歌曲中的任何一点开始录制,Shazam会在几秒钟内向您发送一个匹配项。 为了使这项服务正常运行,Shazam拥有不断增长的数据库,该数据库包含超过800万首歌曲/音频文件。 假设平均音频文件的长度为三分钟,则每个背靠背播放音频文件将花费超过45年的时间!

拥有如此大小的数据库,他们的覆盖范围很广,但是Shazam如何在如此大的数据库中如此快速地找到匹配项? 首先,Shazam歌曲时不会搜索实际的音频文件。 相反,Shazam对数据库中的每个音频文件都有一个音频指纹。 Shazam用户提交的记录也被制成音频指纹,使他们能够准确,快速地进行比较。 这些音频指纹包括数字数据的集合。 如果您想知道Shazaming的这一动听的曲调如何变成数字,那么下一部分将为您服务。

声音如何运作

从最基本的定义来看,声音是振动的粒子。 每种声音都有以下三个要素:振幅,频率和时间。 振幅是振动的大小,我们将其视为声音的响度。 频率是振动发生的速率。 声音的频率就是我们所说的音高。 频率以赫兹(Hz)表示,代表声波每秒重复多少次。 人耳可以听到20Hz至20,000Hz的声音。 从某种角度讲,传统88键钢琴的最低音A0的频率为27.5Hz。 每个八度的音高频率都呈对数增加。 换句话说,每个八度的频率是其下一个八度的两倍。 例如,A1的频率为55Hz,A2的频率为110Hz,A3的频率为220Hz。

在上表中,您可以看到许多乐器可以演奏相同的音符,但是小提琴上的音符和钢琴上的相同音符听起来会有所不同。 音质的这种差异称为音色。 声音的音色是由声音中的频率高于(感知到的)音高的频率(以更快的速度重复)产生的。 这些频率称为泛音。 查看此录音,该录音从钢琴上的音符(C4 261.23Hz)开始,然后是声音中的每个泛音一个接一个地播放,并以开头的音符结束。

对于音频文件的每个部分,选择最强的峰值,并将频谱图简化为散点图。 此时,不再需要振幅(图1B)。

现在,我们拥有所有基本数据,以匹配经过指纹识别过程的两个文件。 但是,只有Shazam用户在歌曲开始的确切毫秒开始录制时,才可以匹配它们。 由于几乎从来没有这种情况,因此还有其他步骤可以进行音频指纹识别。 通过称为组合哈希的过程,散点图上的点被选择为链接到图上其他点的锚点,这些点发生在被称为目标区域的时间和频率范围内的锚点之后(图1C)。

每个锚点对存储在一个表中,该表包含锚点的频率,点的频率以及锚点和点之间的时间(称为哈希)。 然后,此数据链接到一个表,该表包含锚点和音频文件开始之间的时间。 数据库中的文件还具有唯一的ID,这些ID用于检索有关文件的更多信息,例如歌曲的标题和艺术家的名字。

如何找到比赛

现在我们已经为两个音频文件创建了指纹,来自Shazam用户录音的每个锚点对都发送到Shazam的数据库中,以查找匹配的锚点对。 此搜索将返回包含任何哈希匹配项的所有歌曲的音频指纹。 一旦我们有了Shazam用户录制的所有可能匹配项,就需要从数据库中查找Shazam用户录制的开始与这些可能匹配项之一的开始之间的时间偏移。 可以通过从Shazam的数据库中,从音频文件中匹配哈希的出现时间减去Shazam用户记录中锚点对出现的时间,来计算时间上的偏移。 如果大量匹配的哈希具有相同的时间偏移,则确定该歌曲为匹配!

当映射到散点图时,y轴表示Shazam用户记录中哈希发生的时间,x轴表示Shazam数据库中音频文件中哈希发生的时间,将形成匹配的哈希对角线(图3A)。 在相同数据的直方图中,其中y轴表示偏移时间,x轴表示匹配的数量,在正确的偏移时间会有一个大的尖峰(图3B)。

尽管Shazam用户的录音中包含诸如人说话,道路噪声甚至其他歌曲之类的噪声,但这种音频搜索方法仍足够准确以找到匹配项。 由于由音频指纹创建的锚点哈希数远远多于返回肯定搜索结果所需的锚点匹配数,因此被外部噪声掩盖的锚点哈希不足以防止Shazam一致地从数据库中找到音频文件的匹配项。 由于搜索算法旨在在Shazam的数据库中查找与录制的音频相匹配的内容,因此,如果您正在听音乐会,并且在为一首歌曲着色时会得到正匹配,则表演者很可能正在使用背景音乐和/或口型同步。 另一个副作用是,如果艺术家没有将样本与其他声音组合并且未以任何方式改变样本,Shazam将返回该样本的原始录音。

参考文献

Shazam联合创始人Avery Wang的研究论文https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

Shazam如何工作–编码极客
您是否想过Shazam的工作原理? 几年前,我问了自己这个问题,并读了一篇研究文章…… coding-geek.com