V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hxy060799
V2EX  ›  程序员

对QQ音乐"听歌识曲"API的分析

  •  2
     
  •   hxy060799 · 2013-08-01 14:52:37 +08:00 · 11506 次点击
    这是一个创建于 4114 天前的主题,其中的信息可能已经有所发展或是发生改变。
    近来手机QQ音乐(iOS和Android)中出现了"听歌识曲"的功能.当听到中意的歌曲的时候,把手机的麦克风对准音响,并打开此功能,数秒之后便可以找到这首歌的歌名,歌手,专辑等信息,并可以同步显示歌词.为了了解这个看似神奇的功能的实现方式,便进行了简单的分析.

    经过Google查找,没有找到任何关于这个接口的开发资料,所以只好进行抓包.

    先是用Fiddler进行的,但是在设置了Fiddler代理以后,使用这个功能会莫名其妙的出现HTTP501错误,只好换Charles进行抓包.通过抓包,得到了它的请求地址:

    http://proxy.music.qq.com/sound_print_r/search

    通过POST传输二进制音频,服务器便会以json的形式返回结果.根据抓包分析,Request的Header中有一个Host属性,值为weixin.music.qq.com,使用接口的时候也要对这个属性进行设置,否者只会返回502 Bad Request.

    写了一个简单的 iPhone App,传了几段MP3,却只得到了"无匹配结果"的返回,经分析发现,QQ音乐客户端在调用这个功能的时候,传输的音频采用了特殊的格式,对几次搜索的Request信息提取后分析,这种格式文件头如下:
    00000000h: DD D0 D6 2C 1A A8 87 B5 89 62 82 3C 20 3B 41 30 ; 菪?.▏祲b? ;A0
    00000010h: 0F 9C 4A A9 A3 13 2E BC FB D5 CA A4 80 E4 F5 28 ; .淛..见帐漉(
    搜索以后没有找到相关的信息,也确定不下来这种文件的格式,所以只好到此为止.

    不知是否有高手可以继续分析下去并且把这个"神奇"的接口应用起来.
    12 条回复    2020-10-02 15:53:47 +08:00
    notedit
        1
    notedit  
       2013-08-01 15:03:47 +08:00   ❤️ 1
    不一定传输的是音频 你可以搜索一下 音频指纹 根据音频指纹然后再跟数据库对比 找出相识的歌曲

    音频指纹提取的算法跟参数 你是很难获取的 除非你把他的代码获取到
    ejin
        2
    ejin  
       2013-08-01 17:13:52 +08:00
    http://www.midomi.com/ 哼唱搜搜,哼一下就知道是什么歌曲了,出来至少好几年了,快去分析下
    CalifLove
        3
    CalifLove  
       2013-08-01 17:39:02 +08:00
    @ejin 知道这个网站还是在2年前下载的SoundHound这个软件,个人觉得他网站比软件还好用,识别速度快,识别率非常高。
    go
        4
    go  
       2013-08-01 17:52:59 +08:00
    QQ音乐 识别度 感觉不高
    zlbruce
        6
    zlbruce  
       2013-08-01 23:59:00 +08:00
    Shazam 应用都出来好几年了。。。
    LokiSharp
        7
    LokiSharp  
       2013-08-02 01:09:09 +08:00
    非中国歌曲, SoundHound 识别度是最高的
    ETiV
        8
    ETiV  
       2013-08-02 01:42:43 +08:00 via iPhone
    盛大创新苑有个开源项目,就是哼唱搜索的。
    可以搜一下

    下面是我自己的理解:

    音调跟频率有关,可以把收录到的波形图转成频谱图

    再由频率分析出音调

    根据音调的起伏,产生指纹(因为会有哼跑调或者根本哼不上去的时候,所以要考虑到容错)

    再拿这个指纹从已收录的特征库里搜索,直至返回结果
    est
        9
    est  
       2013-08-02 08:47:43 +08:00
    @ETiV 最后一点是最有技术含量的。模糊匹配+海量索引不是谁都能做出来的。 MVP tree 这种数据结构还得自己写索引引擎。
    ariza
        10
    ariza  
       2013-08-02 21:13:03 +08:00
    Soundhound是最早嘛
    astonysh
        11
    astonysh  
       2014-08-03 17:22:17 +08:00
    如果需要音乐/哼唱识别的api的话可以联系我
    edmteam
        12
    edmteam  
       2020-10-02 15:53:47 +08:00 via iPhone
    @astonysh 你好,我需要音乐识别,VX8840919
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5749 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.