温馨提示:本站为音乐剧票务网官方授权演出订票中心,请放心购买。
你现在的位置:首页 > 演出资讯  > 歌剧话剧

听歌识曲秒速找歌,全靠这个“音频指纹”黑科技!

更新时间:2024-12-25 15:12  浏览量:1

我们的大脑可以很快地识别出听过的歌,但是如果用电脑来识别一首歌,那就复杂多了。电脑没有感官,所以就不能感受音乐,只能通过跟数据库中的歌曲做对比,然后找到与之匹配的那首。

听歌识曲ui界面

但是现今世界上有版权的正式注册歌曲已经超过1亿首,如果一首首对比的话,简直难上加难。那听歌识曲的功能是怎么用10秒钟的时间,在上亿首歌曲中找到一首歌的呢?

今天跟大家聊聊听歌识曲,这个日常生活中大家都会用到的小功能。

2580

很多同学可能以为听歌识曲是智能机诞生之后才出现的功能,其实早在诺基亚鼎盛的年代,这个功能就已经出现了。

那时候大家都把它叫做2580

想识别一首歌曲,就先要拨打这个号码,然后手机会在30秒后自动挂断。最后2580会把识别出的歌曲和歌手,甚至是下载链接都以短信的方式发送给用户,这就是最早的听歌识曲。

后来2580正式更名为沙赞,并开发成了一款APP,而这个APP在2014年就拥有了超过1亿的活跃用户量。其背后实现了听歌识曲算法的是沙赞的创始人之一——Avery Li-Chun Wang。

2013 年,Avery Li-Chun Wang发表了一篇名为《一种工业级音频搜索算法》的论文,他提出了基于音乐指纹的搜索算法,这种算法的识别准确率超高,一下就吸引了不少算法工程师的关注。

而在这篇论文发表之前,甚至不少人还以为沙赞公司真的雇佣了几百个“人肉识别机”,996的识别那些来自诺基亚麦克风的悠扬歌声。这让我想起了爷爷奶奶们最爱看的电视节目《开门大吉》。

在正式开始讲解听歌识曲的原理之前,让我们先来回顾一下人脑是怎么识别出我们听过的歌曲的。

首先我们把耳朵打开,听见音乐,找到这首歌最有特征的地方,可能是一句朗朗上口的旋律,也可能是歌里某个很特别的音色。接着我们在脑海里闪现出之前听到的这首歌,轻轻松松就匹配上了。

频谱图

如果把这个生理过程放到计算机上,那就会变成这样:打开麦克风接收音乐,将模拟信号转化成数字信号,提取歌曲中的特征信息并转化成音频指纹,再跟数据库做相似度计算,最后将匹配度最高的那个推送给你。

这个过程听起来复杂,其实短短几秒钟就完成了,但是同学们有没有在这当中发现一个问题?那就是提取歌曲中的特征信息。

我们常说一千个观众眼里有一千个哈姆雷特,每一首歌的特征对每个人来说都可能不尽相同。那计算机根据谁的感觉来判断歌曲特征呢?这时候就需要一个叫做频谱图的东西。

波形图

好多人可能没有见过频谱图,但是肯定见过这种波形图,但如果用波形图做依据来给计算机判断的话,其实并不准确。因为一般我们听到的歌都不是单一旋律,大多数都是复杂的旋律叠加在一起。

我们拿一首钢琴曲举例子,波形图会把不同频率的波形都叠在一条线上,这能看出来个啥?基本上除了音量大小,我们看不出来其他任何信息。

但如果转化成频谱图的话,就能把这首钢琴曲的音调、音色、节奏、音量等等信息都表现出来,理论上你能在歌里听到的,频谱图里都有展示。

频谱图,可以说是音频的视觉化效果,而且这不是一个二维图像,实际是一个3D图。 x轴为时间,y轴是频率,也就是音调的高低,而z轴是振幅,也就是音量的大小。二维呈现的时候颜色越亮,也就表示声音响度越大。

频谱图3D样式

如果电脑直接用频谱图和数据库里几千万首歌做对比的话,也不是不行,但还是太复杂,同学们要识别一首歌的话,估计能举着手机等到石化。我们需要再去掉一些对比数据,来减少计算机的检索时间。

这时候就需要用到音频指纹。音频指纹顾名思义就是属于音频的指纹,就像每个人的指纹一样独一无二,是从频谱图中转化出来的。

我们先找到频谱图中不同的时间下频率的峰值,然后标注出这个点,频谱图就转化成了音频指纹。

通过这样的方式我们就能把三维图像转换成二维,同时还减少了需要对比的数值。虽然看上去这些点好像很容易重复,但其实对于音频来说非常有代表性,几乎可以算得上是歌曲独一无二的特征。

音频指纹的方式准确率非常高,甚至在只匹配到五六个指纹的情况下也能识别出来歌曲,所以你的听歌识曲只需要几秒钟的歌曲片段就够,而且音频指纹还能抵抗噪音的干扰

音频指纹

举个例子,假如你在烧烤店听到一首歌,甭管身边有几个大哥在喝酒唠嗑,只要你还能听得到这首歌,那就说明噪音没能盖住音乐。这意味着这首歌当中的频率峰值点能够被麦克风捕捉到,这也就是为什么听歌识曲能在嘈杂的环境下运行。

不过偶尔会有例外,如果麦克风被其他东西干扰,你就可能会匹配到一首奇怪的歌。我自己经常用某音乐软件,之前有一次用听歌识曲,软件匹配了一首歌,里面有一句念白和电流声。

打开评论区发现有好多小伙伴和我一样是被听歌识曲带进来的,发现大家都是因为插了耳机或者充电的情况下,电流干扰到了麦克风,才会匹配出这首歌来。

我们现在掌握了计算机可以识别的歌曲特征,还剩下最后一步,在数据库中找到这首歌,而它就是听歌识曲秒速找歌的秘密——哈希表

哈希函数是计算机专业中最常见的技术之一,这个技术可以把具体内容转化成一串固定长度的数字编码,不管是一句话还是一部电影,都能生成一串独一无二的编码。

如果我们直接拿之前的星状图去做比对,至少要把曲库里几千万首歌中的每个时间点都对比一次,再对比下一时间点,这样做效率依旧很低。

更好的办法是把邻近的峰值两两相组,以它们之间特定的时间间隔和频率作为区分,给它们生成为一串哈希码

举个例子,假如你变身成了一台电脑之后,你的大脑要你描述超级马里奥主题曲的第二小节的前两个音,高音do0.3秒后是中音so,那你只要说我听到了15236号音色特征就可以。

电脑就是这样操作的,在收到一段歌曲后,算法就会把这段声音转化成一串哈希码,在数据库中找到对应的数字,就像在查字典一样,通过偏旁部首或者是拼音首字母,就可以找到精确的字符页数,而不需要翻完整本字典一页页的对比。

再举个例子,当你的女朋友让你给她买口红的时候,她不能说“我要那个烂番茄色口红”。如果出现这种情况,多半你买回来的口红会被女朋友翻白眼。在不懂口红颜色的你眼里,谁知道会把什么当成烂番茄色。

但如果她说“我要那支 405 色号的口红”,你就会很清楚到底要买哪支。405就是用来查找口红数据库的索引值,这就是哈希表的作用。先将关键字通过哈希函数转化成一个索引值,再把索引值对应到结果上。

这也告诉我们一个深刻的道理,对待电脑你得把要求说得简单又明白,让它们猜来猜去的后果,可能就会是收到一个错误答案。

沙赞被苹果收购

到今天,听歌识曲这个功能已经发明20多年,仅仅是沙赞公司就已经识别了几百亿首歌曲,而它也靠着这项技术在2017年以4亿美元的价格被苹果收购。

而音频指纹技术除了用在听歌识曲上,也被应用在各种平台,比如手机和电视的互动中,像微信之前推出的摇电视和淘宝首页的摇一摇,也都是通过音频识别的方式来提供电视互动和边看边买的服务。

YouTube和Facebook还会用音频识别的功能来检测用户的重复上传和侵权行为,一些地区的电视台还会通过这个技术来调研收视率。总之,这个技术的应用场景正在被不断扩展。

可能 20 年前给2580打电话的人也很难想象,帮自己找歌的小功能竟然会发展成这样。那我也真的希望那些平时被我们“调戏”的语音助手有一天真的能变成生产力工具。

标签: 音频 识曲 指纹