trackid(手机看csgo回放)

作者|琥珀出品| AI技术大本营(ID:rgznai100)是否可以将 Shazam 称为有听歌识曲功能应用的鼻祖?2018年9月,苹果终于以4亿美元完成了对S

trackid(手机看csgo回放)

作者|琥珀

出品| AI技术大本营(ID:rgznai100)

是否可以将 Shazam 称为有听歌识曲功能应用的鼻祖?

2018年9月,苹果终于以4亿美元完成了对Shazam的收购,这让很多人兴奋不已。在当时发布的一份声明中可以看出,自登陆App Store以来,Shazam一直是其最受欢迎的iOS应用之一。

其实早在苹果iPhone“出道”之前,Shazam提供的音乐识别服务和技术就已经戳中了很多用户的痛点。比如,当外界播放一首喜欢的歌曲时,手机应用可以识别该歌曲并调出手机中的同一首歌曲/原曲,然后在手机上播放。

像最早流行的Gracenote、SoundHound、Track ID、Tunatic,以及如今的QQ音乐、网易云音乐等第三方音乐app,甚至微信“摇一摇”也有音乐识别的功能。

但资料显示,在1999年Shazam公司成立之初,其提供服务的方式非常“原始”:“当用户听到歌曲时,拨打一个短服务号码,让电话的另一端听到,然后自动挂断,歌曲信息以短信的形式发送到用户手机上。"

如今的Shazam,无论是服务于苹果生态的战略地位,还是在操作界面、细节功能等方面与其他同类音乐识别软件的差异,都依然得到大众的认可。抛开之前和苹果的关系和服务能力,Shazam在音频识别方面的技术能力是得到认可的。

事实上,早在2003年,Shazam的联合创始人之一艾弗里·王立春(Avery Schmidt)就发表了一篇论文《一种工业强度的音频搜索算法》(a Industrial-Strength Audio Search Algorithm),提出了一种基于fringerprint的音乐搜索算法,由于其较高的检索准确率,引起了算法工程师的高度关注。

编者注:来自维基百科:声学指纹(Acoustic fingerprint)是通过特定算法从音频信号中提取的一段数字摘要,用于识别声音样本或者快速定位音频数据库中的相似音频。

trackid(手机看csgo回放)

根据纸质材料,Shazam设计了一个非常灵活的音频搜索引擎。该算法抗噪声和干扰能力强,计算复杂度低,可扩展性强。即使外界噪音很强,它也能通过手机录制的一小段压缩音频,从数百万曲库中快速识别出正确的歌曲。该算法通过分析音频频谱上的星图,结合时频信息构造一个hash,从而可以识别出混在一起的几首歌曲。另外,对于不同的应用,即使音乐库非常大,检索速度也能达到毫秒级。

其核心简言之是,用户将某段音频中的一个片段上传至 Shazam,Shazam 会首先提取指纹,然后查询数据库,最后利用其精准的识别算法返回歌名。指纹可以看做该音频的哈希值(Hash),一个带有时间属性的数字集合。

2015年,一位名叫Christophe的工程师写了一篇一万字的文章,完整地分析了Shazam的原理是什么,并表示在过去的三年里,他花了大约200个小时来理解信号处理的概念,其背后的数学原理,并制作了自己的Shazam原型。他甚至直言:“我写这篇文章,是因为我之前从来没有找到一篇真正了解Shazam的文章”。

那么,如何更快更好地理解Shazam背后的算法奥秘呢?不久前,YouTube上一个致力于普及工程知识的频道Real Engineering上传了一段10分钟的视频,帮助人们快速获取相关知识点。

传送门:https://www.youtube.com/watch?v=kMNSAhsyiDg

与人类相比,计算机对音乐没有直观的理解,只能将歌曲与其数据库中的其他歌曲进行对比匹配。正因如此,视频中的Real Engineering重点介绍了“星图”和“哈希函数”两个概念,普及了基于“指纹”的搜索算法。

比如人脑可以很容易的分辨出钢琴和吉他的音色,但是对于计算机来说,就需要一种可以量化这些特征进行识别的方法,也就是声谱图,一种声音的可视化显示。

在视频中,研究人员试图用一个三维图形来表示:X轴代表时间,Y轴代表频率,Z轴代表振幅/响度(通常用某种颜色表示)。

trackid(手机看csgo回放)

这样,计算机就可以通过这个三维地图来识别声音和存储数据。但是会有一个问题:声谱图中有大量这样的数据,数据越多,计算匹配的时间越长。

因此,减少计算时间的第一步是减少分类歌曲的数据。

Shazam采用的名为“指纹”的技术可以将这些光谱转换成看起来像它的“星图”。

trackid(手机看csgo回放)

每颗星代表特定时间最强的频率。这样不仅降低了声谱图的维数,也减少了图上数据点的数量。

然后,Shazam数据库中的每一张都被存储为“指纹”。

当用户打开Shazam应用时,后台会接入手机的麦克风,创建一组接收到的声波“指纹”。然而,这种方法也有助于应用过滤噪声,因为它只创建具有显著频率的数据点。

音频被创建并发送到服务器。至此,Shazam的识别过程正式开始,即“快速组合哈希”。

论文链接:https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

Shazam将对“指纹”进行排序,并搜索音频中特定时间点存在哪些笔记,这也是哈希表的可搜索地址。

注:在计算机领域,哈希和哈希函数应用十分广泛。例如,在谷歌的搜索引擎算法中就应用了哈希函数,以确保文件可被下载。一句话解释就是,任意长度的输入通过哈希函数变换成固定长度的输出,该输出就是哈希值。实践中,输入可以是一小段文字如密码,也可以是像整部电影一样的长数据流。

为了避免枯燥,视频还举了一个生动的例子:如何通过在图书馆搜索书名来定位一本书?

可以通过hash函数确定,输入书名,输出书架位置。在这个过程中,我们会遇到图书分布不均、书目碰撞、如何快速找到所需书目等问题。

trackid(手机看csgo回放)

比如,如果图书馆只有两个书架,书目冲突(一个书架上有相同书名的书)的问题就会非常突出;但如果图书馆有十亿个书架,哈希函数得到的书目冲突结果应该很小。

回到上面提到的情况,如果通过哈希函数选取两组频率数据,分别按时间划分,作为输入,那么输出数在1亿到1亿之间。

trackid(手机看csgo回放)

首先,计算机会浏览歌曲数据库,计算每个锚点的哈希;一首歌曲将包含多个锚点,这将有助于计算机根据锚点、背点和它们之间的频率对音频片段进行分类。

trackid(手机看csgo回放)

然后,根据哈希排列每个锚点。

trackid(手机看csgo回放)

这些地址也按歌曲ID和时间戳分类。

这样可以更快的定位音乐,找到原本需要多个锚点的音乐。

以上只是大概介绍。如果你想知道Shazam听歌和理解歌曲背后的详细原理,可以去查一下Christophe写的长文。

传送门:http://coding-geek.com/how-shazam-works/

(本文为AI技术大本营原创文章,转载请联系微信1092722531)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/33873.html

发表回复

登录后才能评论