0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子工程师 来源:lq 2019-02-18 09:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

2018 年 9 月,苹果最终以 4 亿美金完成对 Shazam 公司的收购,让不少人为之振奋,在当时对外公布的一份声明中可以看到,自Shazam应用登陆App Store以来,是其最受欢迎的iOS应用之一。

其实早在苹果 iPhone “出道”之前,Shazam 提供的音乐识别服务和技术就已戳中了不少用户的痛点。例如,当外界播放一首你喜爱的歌曲时,手机应用能识别出该歌曲并调出手机内同样的歌曲/原唱,完成后在手机上播放出来。

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

只不过,据资料显示,在Shazam 公司 1999 年成立之初,以非常“原始”的方式提供服务的:“用户听到歌曲,打一个服务短号码,让电话那头听到,然后自动挂断,歌曲信息以短信的形式发到用户手机上。”

如今,无论被收购之后的 Shazam 是因何种战略地位为苹果生态提供服务,与其他类似的音乐识别软件在操作界面、细节功能有哪些不同,Shazam 仍受到大众的认可。抛开此前与苹果的关系、服务能力不提,Shazam 在音频识别上的技术能力得到公认的。

实际上,早在 2003 年 Shazam 联合创始人之一的 Avery Li-Chun Wang 就发表了一篇论文“An Industrial-Strength Audio Search Algorithm”(《一种工业级音频搜索算法》),提出了基于指纹(fringerprint)的音乐搜索算法,因其检索准确率较高,得到了不少算法工程师的关注。

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

根据论文资料,Shazam 设计了一套非常灵活的音频搜索引擎。其算法抗噪声和扰动能力强,计算复杂度低,同时具有很高的可扩展性。即使外界噪音很强,它也可以迅速通过手机录制的一小段压缩音频从百万级的曲库中辨识出正确的歌曲。该算法运用分析音频频谱上的星状图来组合时间-频率信息构造哈希,从而可以将混合在一起的几首歌都辨识出来。此外,针对不同的应用,即使曲库非常大,检索速度也能达到毫秒级。

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

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

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

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

相比起人类,计算机对音乐没有直观的理解,它只能将歌曲与其数据库中的其他歌曲进行对比匹配。为此,视频中 Real Engineering 重点提及了两个概念:“星状图”和“哈希函数”,并对基于“指纹”的搜索算法进行了通俗化解释。

例如,人类大脑可很容易区分钢琴和吉他的音色,但对计算机来讲,就需要一种能够量化这些特征以便进行识别的方法,即频谱图,一种声音的视觉显示。

在视频中,研究者尝试用一张三维图来表示:x 轴代表时间,y 轴代表频率,z 轴代表振幅/响度(通常用某种颜色表示)。

如此,计算机就可以通过这个三维图来识别声音并存储数据。不过,会有个问题:频谱图中有大量这样的数据,而且数据越多,需要通过计算匹配的时间就越长。

所以,减少计算时间的第一步就是减少分类歌曲的数据。

Shazam 采用的称之为“指纹”的技术,可将这些频谱图转换成看起来像的“星状图”。

每颗星星代表特定时间最强的频率。如此,不仅降低了频谱图的维度,还减少了图表上数据点的数量。

然后,Shazam 数据库中的每首单曲都以“指纹”的形式存储起来。

当用户打开 Shazam 应用时,后台将访问手机的麦克风,并创建一组接收到的声波“指纹”。不过,这种方式也有助于应用过滤噪声,因为它只会创建突出频率的数据点。

音频创建完成,并将其发送到服务器。此时,Shazam的识别过程正式开始,即“快速组合哈希”(Fast Combinatorial Hashing)。

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

Shazam 会将“指纹”进行分类,并搜索在该音频中的某个特定时间点里分别存在哪几个音符,这也是哈希表的可搜索地址。

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

实践中,输入可以是一小段文字如密码,也可以是像整部电影一样的长数据流。

为免枯燥乏味,视频里还举了个生动的例子:在图书馆如何通过搜索书的标题确定书的位置?

可以通过哈希函数来决定,书的标题为输入,书架的位置为输出。在这个过程中,我们会遇到书籍不均匀分布、书目冲撞、以及如何快速找到所需书目的问题。

例如,如果图书馆只有两个架子,那么书目冲撞(一个书架上有相同标题的书)的问题将十分突出;但如果图书馆有十亿书架,那哈希函数得出的书目冲撞结果应该会很小。

回到以上提到的案例,如果通过哈希函数,选择两组频率数据,分别除以时间并作为输入,输出的数字介于 1 至 10 亿之间。

首先,计算机将浏览歌曲数据库并计算每个锚点(anchor point)的哈希;一首歌曲将包含多个锚点,将有助于计算机对音频片段按锚点、后面的以及之间的频率进行分类。

然后,对每个锚点按哈希进行排列。

这些地址同样以歌曲 ID 和时间戳进行分类。

如此,便可以更快定位,并找到本来需要多个锚点才能找到的音乐。

以上只是大致介绍,想要了解 Shazam 听歌识曲背后的详细原理,可以查看Christophe 写的万字长文。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • APP
    APP
    +关注

    关注

    33

    文章

    1594

    浏览量

    76139
  • 数据库
    +关注

    关注

    7

    文章

    4085

    浏览量

    68562
  • 音频识别
    +关注

    关注

    0

    文章

    3

    浏览量

    7323

原文标题:一个App卖了4亿美元,这家听声识曲公司为何得到Apple的青睐?

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCUX SDK LIN 堆栈集成到 Zephyr OS 中,是否一种方法可以自动生成它们从 .ldf 文件?

    MCUX SDK LIN 堆栈集成到 Zephyr OS 中,现在正在 S32K344-wb 板上对其进行测试,但我想更改 cfg 文件,我想知道是否一种方法可以自动生成它们从
    发表于 04-24 06:33

    智能与导远科技达成战略合作

    近日,九智能与导远科技正式达成战略合作,导远科技通过多款软硬件产品赋能九智能低速无人车。
    的头像 发表于 12-25 17:10 2746次阅读

    【RA4M2-SENSOR】数字读及实现

    这里就介绍一种在RA4M2-SENSOR 开发板上实现数字读的方法,其实现的思路就是在给定数据的情况下,通过相应的功能函数来自动提取各数据位的值及权重,进而通过串口向语音模块发送指令来实现数据到
    发表于 09-15 22:47

    科技与姬械机科技达成深度战略合作

    近日,时科技(SynSense)与姬械机科技(Maschine Robot Tech Group)宣布达成深度战略合作,双方立足于类脑智能技术体系的研发与工业安全行业的应用,携手推进相关产业生态的建设与发展。
    的头像 发表于 09-06 16:19 1295次阅读

    NUC980是否可以对 EBI 进行 DMA?

    是否可以对 EBI 进行 DMA?我从 USB 到 SDRAM 的 DMA 工作,但是当我 DMA 目标地址更改为 EBI(60000000 美元)时,我没有收到任何外部总线活动。
    发表于 08-29 07:05

    请问是否可以所有 GPIO 设置为从断电或空闲模式唤醒系统?

    是否可以所有 GPIO 设置为从断电或空闲模式唤醒系统?
    发表于 08-28 06:00

    是否可以所有 GPIO 设置为从断电或空闲模式唤醒系统?

    是否可以所有 GPIO 设置为从断电或空闲模式唤醒系统?
    发表于 08-25 06:55

    一维二维码条码读器的主要功能有哪些

    ?本文详细介绍其核心功能。一、信息快速识别与解析一维二维码条码读器最基础也最核心的功能,就是对一维码和二维码进行快速识别与解析。无论是商品包装上的条形码,还是
    的头像 发表于 08-01 15:59 1221次阅读
    一维二维码条码<b class='flag-5'>识</b>读器的主要<b class='flag-5'>功能</b>有哪些

    Aurix Development Studio 中是否允许在 SCR 端添加调试编译器选项的功能

    ELF 文件中的调试信息,其中没有调试符号,并且我无法调试 SCR 代码。Aurix Development Studio 中是否允许在 SCR 端添加调试编译器选项的功能
    发表于 07-21 06:00

    是否可以客户端控件与CYW920706WCDEVAL一起使用?

    是否可以客户端控件与CYW920706WCDEVAL一起使用? 我想用它来发现蓝牙 BR/EDR,然后将其与其他设备配对。 客户端控制的下载链接或文档吗? 另外,你
    发表于 07-04 07:50

    无人车陕西运营中心展厅启幕 打造智能城配物流新标杆

    7月1日,九无人车陕西运营中心展厅正式开业,全国业务版图再添重要一子。这座展厅是九在陕西省的首家展厅,由九第一位正式提车的客户、首位代理商伙伴孙朋奇先生打造。展厅集产品展示与技术体验于一体
    的头像 发表于 07-02 17:25 1168次阅读
    九<b class='flag-5'>识</b>无人车陕西运营中心展厅启幕 打造智能城配物流新标杆

    CYW20829是否可以使用 BLE 长距离(编码 PHY)功能启用 PAWR?

    是否可以使用 BLE 长距离(编码 PHY)功能启用 PAWR?
    发表于 06-27 07:31

    是否可以AD9278的工作模式设为standby模式?

    standby模式时,可以正常工作,至少在当前常温环境下,没发现有什么异常,这是为什么?在手册中看到在standby模式下,AD9278不应该正常工作才对,为什么实际使用时,却能正常工作,而且此时功耗确实低了很多!!,在最终产品中,我是否
    发表于 06-10 08:29

    CYPD3177是否连接NonPD适配器源时通知电量不足的功能

    CYPD3177是否连接NonPD适配器源时通知电量不足的功能? 例如,当连接到具有 9V2A 请求的 NonPD 适配器(源连接器为 A 型等)时,通知电量不足。 对于 PD 兼
    发表于 05-22 08:24

    是否可以CY7C65215A的端口1用作RS485,端口2用作RS232?

    我对 CY7C65215A 两个问题。 (1)是否可以CY7C65215A的端口1用作RS485,端口2用作RS232? (2)我计划
    发表于 05-06 12:56