Shazam原理分析
来源:互联网 发布:mac在哪里更新系统 编辑:程序博客网 时间:2024/05/18 01:34
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 通过计算每个点横纵坐标的差值可以得到一个柱状图,找出其中最高的那根,就可以判断是否匹配了。
- Shazam原理分析
- Shazam 是如何听音辨曲的?
- Slyce:购物界的 Shazam
- 电视才是移动音乐应用Shazam的未来
- 苹果Shazam合作让手机快速识别出歌曲
- 《Shazam It! Music Recognition Algorithms, Fingerprinting, and Processing》译文
- 苹果证实收购英国音乐识别应用Shazam
- 苹果拟4亿美元收购音乐识别软件Shazam
- 苹果4亿美元收购Shazam,大白菜终于被猪拱了!
- EJB调用原理分析
- BT原理分析
- EJB调用原理分析
- 珊瑚虫外挂原理分析
- 珊瑚虫外挂原理分析
- Fragroute原理详细分析
- ICAP协议分析原理
- Ajax技术原理分析
- EJB 调用原理分析
- EXT片段(自用)
- oracle临时表的用法总结 - 转自CSDN:wyzxg
- 1656 How many different numbers
- MJ评《曝光SAP在华真相:天价收费与"骗"客户签单》
- WindowsCE.NET CEPC 的建立
- Shazam原理分析
- 裁剪mplayer到只适合播放文件,并且支持VAAPI硬解码
- 通过流或利用jspsmartupload.jar实现文件下载
- 架构师能力模型解析(转载)
- 关于 C++ 引用 的面试题
- SQL 2005 分析服务基于角色的动态授权
- 函数参数的理想个数
- 重定位类型分析(2)
- Head First C# 中文版 第13章 控件和图形 page599