技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> SHAZAM音乐旋律云搜索(云计算云存储应用midomi,百度哼唱)

SHAZAM音乐旋律云搜索(云计算云存储应用midomi,百度哼唱)

浏览:2003次  出处信息

    记得有个大家记歌词的节目,很火爆,通过旋律快速找到歌曲,旋律搜索有多少用处呢?我们常常会遭遇到这样的尴尬:在大街小巷邂逅一段熟悉的旋律,无奈又听不清歌词。遗憾也许这辈子就这样失之交臂了。

    不必懊恼,Shazam 是一款能够识别音乐讯号的应用。相信不少朋友对它并不陌生。它在 iPhone 和 Andriod 手机里出现的频率很高,诺基亚的某些手机甚至预装了这样一款软件。

    它的基本原理就是通过采集十几秒的声音样本,通过网络将音乐信号发回 Shazam公司,经过数据分析,很快便将该乐曲的相关信息发回手机。你对此一定不满足,幸运的是我们找到了开发者的一份材料。

    我们都知道,一段音乐信号可以通过频谱图表示。横轴表示时间,纵轴为频率,另一个轴表示强度,即一个三维的频谱。那么,一条水平线代表一段连续的音频,垂直线代表一个瞬间的白噪声。如下图,图中的每一个点都代表特定时间点的频率强度,即为选定的"锚点"。图中的红色标记代表该时间点声音强度的峰值。

    由开发者的材料看,他们大约是每秒提取 3 个锚点。然后,他们会把收集到的信息建成一个哈希表(Hash table),其键值就是频率。当 Shazam 收到一段音频,以下图为例,它会以第一个键值,即 823.44 Hz 搜索匹配项。

    哈希表可能如图所示:

    他们不只是标注频谱的一个点,而是一个点对,每个峰值加了第二次锚点,即一个散列的两个点的频率,这样就能减少搜索时因噪声干扰而可能产生的误差。

    接下来就是检索的过程了,如果一段音频多次匹配,就会自动坚持这些频率所对应的时间是否与哈希表一致。当两个音频近似时,这些锚点连成一条连线,如果能检测出这条线,就说明音频匹配。

    据悉,类似的技术最早由一家名为 Melodis 的公司推出,它推出的一款应用―― Midomi ,与 Shazam 相似。当然,也不乏基于电脑的应用,比如前不久测试的百度哼唱,是首次在国内推出的哼唱搜索引擎。不过由于技术问题,推出时间可能要到2011年下半年了。 Midomi和shazam的搜索在美国用的人不多,倒是中国市场贡献了1/4的点击量,人多力量大啊。

     说到语音的搜索,shazam号称收录的音乐曲目为7万,而midomi则有超过10万首歌,天文数字,传统的数据库搜索是无法完成的。只有使用使用云计算云存储的方式解决。

     举例:使用类似BIGTABLE的半结构化数据库记录每首哥的旋律:

    

    搜索方式采用数状结构:根服务器,从根音823.44赫兹开始,到第二个记录音的音频小于800则进入server A进行搜索,如此类推,进入到第三或者第四层时,搜索匹配的数据在几千个,大大缩短了收索时间,也将海量收索的负载平均分配下去。

     期盼在视频搜索上也能有如此的突破,将来的世界通过声音,动作就能进行控制。

建议继续学习:

  1. php实现百度音乐采集下载    (阅读:4119)
  2. 关于音乐搜索    (阅读:2759)
  3. 音乐搜索的极致    (阅读:2731)
  4. 移动音乐产品梳理    (阅读:1547)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1