听歌识曲:手机怎么认出这首歌

12 分钟

路边放一首歌,掏出手机听几秒,它就能告诉你歌名——哪怕周围很吵。这是怎么办到的?

这门学问叫音乐信息检索(MIR),思路分三步:

  1. 画指纹:先把音频转成频谱图——横轴是时间、纵轴是频率、颜色深浅是响度(把每一瞬间「哪些频率在响」画出来)。然后在图上只挑最突出的点(某个时刻能量最强的几个频率),并记下相邻点之间的相对距离。这些点阵就是这首歌的指纹。
  2. 比指纹:把这几秒的指纹,拿去和服务器上几千万首歌的指纹库做匹配。
  3. 报结果:对上的,就是答案。

妙处在哪里:指纹只记相对关系,不记绝对数值——所以环境嘈杂、音质差、音量大点小点、甚至隔着电话,都不影响识别。整首歌压缩成几百个点,几 KB 就能代表,所以匹配快到秒回。

MIR 还能做很多事

  • 音乐 App「猜你喜欢」:分析你听过的歌的音频特征,找相似的
  • 自动打标签:给没有信息的音乐标上风格、情绪
  • 翻唱识别:同一首歌不同人唱、不同编曲,也能认出是同一首
  • 抄袭检测:比较两首歌的旋律相似度,给版权官司提供证据

音乐 + 算法,是一个正经的、正在招人的研究方向。

小纸条

听歌识曲为什么在嘈杂环境里也能认出歌曲?「指纹」为什么不记绝对数值而记相对关系?

登录 后可看答案