1           数据库的建立:

1.1            特征提取:对每个音频提取spectrogram,横轴为时间,纵轴为频率,用每个坐标上点的颜色来表示能量高低,选取能量较高的作为特征点。

1.2          每秒提取三个特征点,如果数据库中总共有一百万首乐曲,每首乐曲的长度大约为4分钟,也就是240秒,那么一共大约有 个特征点。

1.3          采用Hash Table建立数据库。Key值为每个特征点对应的频率,桶内存放的数据为特征点的偏移量以及音频的ID。那么假设对频率保留五位有效数字(有效数字太多,抗噪性能会变差),最多也只能建立 个桶,用10bit来表示每个Key,平均每个桶中有 个元素,碰撞会十分严重,检索效率太低。

1.4          为了提高检索效率,必须提高Key值的熵,也就是增加Key值的位数。这里采用特征点对的方法,每个Key值用三种特征值表示 ,f表示anchor的频率, 表示anchor和target zone中特征点的频率差值, 表示他们的时间差值,这样就可以建立 个桶,大约是原来的 倍,平均每个桶中只有一个元素,大大减小了碰撞的几率,检索一次的速率提高了 倍。

1.5          由于采用了特征点对的方法,需要检索的次数是原来的100倍(数据库中多了10倍,被检索音频多了10倍)。即使这样,整体速度依然提高了10000倍。这就是一种以空间换时间的方法。

1.6          如果每个特征点仅仅检索一次的话,抗噪性能会大幅减弱。假设一个特征点匹配的概率为p,那么特征点对匹配的概率为 ,概率值减小了很多。因此采用target zone的方法,每个anchor对应一个target zone,每个target zone中有10个特征点,这样针对每个anchor都形成了10个特征点对,这10个特征点对中有一对能匹配的概率是 ,也就是每个anchor匹配的概率和原来(p)近似相等。

2          检索

2.1          对找到的匹配特征点按乐曲的ID进行分类,针对每一个ID得到一系列时间对,即数据库中音频特征点的偏移量和样例音频中特征点的偏移量。如下图:

2.2         当两个音频匹配时,这些特征点对将形成一条对角线,当能够检测到这样一条对角线时,说明两个音频匹配。

2.3         通过计算每个点横纵坐标的差值可以得到一个柱状图,找出其中最高的那根,就可以判断是否匹配了。

转载于:https://www.cnblogs.com/candybox/archive/2010/08/19/1803442.html

Shazam原理分析相关推荐

  1. java signature 性能_Java常见bean mapper的性能及原理分析

    背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...

  2. Select函数实现原理分析

    转载自 http://blog.chinaunix.net/uid-20643761-id-1594860.html select需要驱动程序的支持,驱动程序实现fops内的poll函数.select ...

  3. spring ioc原理分析

    spring ioc原理分析 spring ioc 的概念 简单工厂方法 spirng ioc实现原理 spring ioc的概念 ioc: 控制反转 将对象的创建由spring管理.比如,我们以前用 ...

  4. 一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:Muscleape jianshu.com/p/0768eb ...

  5. 原理分析_变色近视眼镜原理分析

    随着眼镜的发展,眼镜的外型变得越来越好看,并且眼镜的颜色也变得多姿多彩,让佩戴眼镜的你变得越来越时尚.变色近视眼镜就是由此产生的新型眼镜.变色镜可以随着阳光的强弱变换不同的色彩. 变色眼镜的原理分析 ...

  6. jieba分词_从语言模型原理分析如何jieba更细粒度的分词

    jieba分词是作中文分词常用的一种工具,之前也记录过源码及原理学习.但有的时候发现分词的结果并不是自己最想要的.比如分词"重庆邮电大学",使用精确模式+HMM分词结果是[&quo ...

  7. EJB调用原理分析 (飞茂EJB)

    EJB调用原理分析 EJB调用原理分析 作者:robbin (MSN:robbin_fan AT hotmail DOT com) 版权声明:本文严禁转载,如有转载请求,请和作者联系 一个远程对象至少 ...

  8. 深入掌握Java技术 EJB调用原理分析

      深入掌握Java技术 EJB调用原理分析     一个远程对象至少要包括4个class文件:远程对象:远程对象的接口:实现远程接口的对象的stub:对象的skeleton这4个class文件. 在 ...

  9. 神经网络(NN)+反向传播算法(Backpropagation/BP)+交叉熵+softmax原理分析

    神经网络如何利用反向传播算法进行参数更新,加入交叉熵和softmax又会如何变化? 其中的数学原理分析:请点击这里. 转载于:https://www.cnblogs.com/code-wangjun/ ...

最新文章

  1. WinCE电源管理的简单介绍
  2. 硬件:电脑DNS出现错误对应的解决方案
  3. leetcode343. 整数拆分(动态规划)
  4. python中argmin函数_Python numpy.argmin()用法及代码示例
  5. Redis常见配置介绍
  6. python猜数字游戏_C++编程基础: 9. 猜数字小游戏
  7. win7系统怎样开启wmi服务器,WMI服务是什么?Win7系统如何禁用WMI服务?
  8. 如何在Edge中添加兼容性站点?
  9. RMAN-06091: no channel allocated for maintenance (of an appropriate type)
  10. 针对ABCmouse的Xadmin管理端使用探究手册
  11. 关于安卓/苹果H5移动端上传视频
  12. SEM数据该如何分析?
  13. R 用回归来做 ANOVA
  14. 永磁同步电机PMSM,异步电机仿真矢量控制
  15. onNewIntent与singleTask
  16. 汽车厂商对高通骁龙820A系统平台的支持
  17. webview 上打开QQ客户端,QQ登入后自动打开添加QQ群的方法
  18. 常见的数学建模比赛汇总(参考资料)
  19. UiPath中Assign活动的作用是什么
  20. 局域网理论上的小常识(组网必备)

热门文章

  1. Linux系统bond模式原理与配置
  2. 生物医学工程方向——SCI投稿经验分享 (Ultrasound in Medicine Biology)
  3. 3月30日—4月3日四年级课程表
  4. 推荐 8 个优质技术公众号
  5. python程序系统找不到指定文件_调用失败“系统找不到指定的文件”
  6. learning的反义词英文_英语的反义词和对应词
  7. java的actionlistener_Java swing: 实现ActionListener监听器的三种途径
  8. Phoenix Salted Table
  9. 如何下载学堂在线中的视频(非常方便)
  10. 24届近3年中国科学院大学自动化考研院校分析