python指纹识别算法_shazam听歌识曲算法解析+python实现-2 生成指纹

听歌识曲是如何工作的,看完这个你就懂啦!

使用的算法是《An Industrial-Strength Audio Search Algorithm》,部分算法借鉴了Github的dejavu(https://github.com/worldveil/dejavu)项目。

上一篇:

为获得良好的阅读体验,你可能先需要了解 散列(哈希),python基础语法,一定的代码阅读能力,一定的语文理解能力(up写的很乱)。

在开始阅读本篇文章之前,最好认真阅读一下论文《An Industrial-Strength Audio Search Algorithm》,最好是一个字一个字,一个图一个图的把paper看下来(然后你就不需要来看这篇文章了,笑)

paper下载链接:https://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

中文翻译:https://blog.csdn.net/yutianzuijin/article/details/49787551

建议读英文的鸭。

好的,那么正式开始。

基本原理:对于每个音频,我们都要给他生成一些特殊的指纹,然后用这些指纹和要识别的歌曲进行比较,最后取匹配率最高的那个,就是识别出来的歌曲啦~

听起来是不是非常简单鸭~~~~

那么怎么生成这个指纹呢,好问题!我们要分为三个步骤:生成频谱图(频域图像)。

在频谱图的基础上计算出Constellation Map(星状图)

对星状图进行处理,生成指纹哈希。

首先是生成频谱图。

为了生成频谱图,我们就得把歌曲最开始拿出来的数据进行一波傅里叶变换,把时域信号转变为频域信号。什么?你不知道傅里叶变换(Fourier Transformation)?不如看看这个:https://zhuanlan.zhihu.com/p/19759362

但是,傅里叶变换有一个缺陷,那就是它在变换过程中把时间信息丢失了,也就是说傅里叶变换不能反映时间维度局部区域上

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值