Echoprint: 开源的声纹识别

标签: echoprint 开源 | 发表时间:2011-07-13 09:31 | 作者:Linux@SOHU
出处:http://sohulinux.blog.sohu.com/

Echoprint: Open acoustic fingerprinting
June 29, 2011
This article was contributed by Nathan Willis
翻译:王鑫/曾怀东

移动智能业务极大推动了声纹识别技术的发展。你可能已经看过这样的电视广告场景:用户拿起电话录制了一段几秒的附近播放的音频,然后程序计算出这段音轨的声纹并利用声纹去远端的数据库查询艺术家和音轨的名字。在以前该领域一直被专属软件占据,但是在上周一个新的开源的项目—— Echoprint诞生了。

Fingerprints on the databases

尽管名字类似,声纹识别技术和用来检测文件改动的基于hash的数字指纹识别技术差别很大。hash函数对单独比特的变化很敏感,声纹函数则必须努力得分析音频,分析的方法要独立于音频编码方式,比特率乃至静态或环境噪声。声纹关注于从音轨中提取可感知的信息,例如节奏,平均频谱以及周期性的音调模式。声纹识别技术主要用于从未知音频片段中获取可能的音轨信息,不过也可以用来查找相类似的音乐(依靠相关算法的调整)

声纹识别服务市场主要被专有软件垄断,其中比较著名的有 Shazam, SoundHound, 以及 Gracenote。许多自由软件组织的人都知道Gracenote,原因是十年前发生那场争端,Gracenote的母公司突然限制了对CDDB(一个由用户建立的唱片识别数据库)的使用。很多人都由于政策的更改而感到被背叛,因为CDDB的数据都是由用户在播放或翻录CD时自愿提交的,但是用户们却不能使用或是享有CDDB带来的好处。这个数据库是因特网众包的早期例子,很多人发现自己无法访问这个数据库,自己努力的成果被公然掠夺了。

转眼到了2011年,相比较专有软件,大多数开源应用使用"open content"的服务。例如由遵循501(c)(3)条款的非盈利的MetaBrainz 基金会运营的MusicBrainz。在过去的几年中, MusicBrainz通过MusicIP(后更名为AmpliFIND)提供的闭源MusicDNS服务来支持声纹识别。

尽管 MusicBrainz同AmpliFIND在该服务上签订了永久性合同,人们仍认为这并非一个好选择,因为 MusicBrainz的 社会契约要求服务保持100%免费(译者注:依赖闭源服务无法保障这一点)。最近,很多开源声纹识别项目开始渐成气候,例如Lukáš Lalinský的  Acoustid ,MusicBrainz 也开始寻求开源和开放的内容来取代MusicDNS。同时,声纹识别技术团队  Echo Nest 确定自己最佳的策略是将全部产品做成开源并尝试商业化声纹服务,而不是试图和这些资深对手玩贴身肉搏式的交锋。

Echo Nest和 MusicBrainz在一些项目有过合作,例如  Rosetta Stone —一个用于在不同音乐服务ID数据库间匹配艺术家和音轨ID的工具—所以决定推动Echoprint这一开放项目并把它和 MusicBrainz进行整合对双方来说都是很好的选择。而且这也没有损害到 AmpliFIND,因为 AmpliFIND已经将自己所有的知识产权包括 MusicDNS和portable unique identifier (PUID)数据库转让给了 Gracenote。

The Echoprint release

Echoprint系统由三部分组成。 Codegen指纹生成器将音频文件(或者音频样本)作为输入,基于Echo Nest Musical Fingerprint (ENMFP)算法产生声纹。Echoprint服务器维护一个声纹和音轨信息的索引数据库,并且支持远程访问和添加新的声纹及音轨。 Echoprint数据库本身维护对外公开的音轨和声纹信息。数据库里有整段音轨的声纹代码,但是同大多数声纹识别技术类似,有部分片段即可进行比对。 Echo Nest声明 Echoprint可以提供至少20s时长片段的声纹精确匹配。

在实际使用中,应用程序会对音频(捕获的或是从文件中获取的)进行抽样,然后使用Codegen库计算声纹,最后在Echoprint服务器中检索匹配项。服务器以JSON格式返回所有匹配的音轨记录。另外,如果没有符合要求的匹配,应用程序会向服务器数据库提交该声纹信息和一些通过其他手段获得的音轨元数据。

Codegen的代码,服务器以及各种工具(包括一个iPhone app的实例)都 存储在GitHub上了。 Codegen应用和共享库在MIT许可下有效,而服务器(基于 Apache Solr 和  Tokyo Tyrant)则遵循Apache License 2.0许可。

公共的Echoprint数据库则是遵循其一个特定的 条款来授权,这个条款被称为“Echoprint数据库许可(Echoprint Database License)”。它允许商业和非商业的应用,并且要求任何下载了数据和加入其中的人都要把额外数据贡献给Echo Nest。这个条款看起来不如知识共享式的“Share Alike”公平,因为它要求给Echo Nest提供数据。这个许可的导言看起来是说所有的贡献都会同公众一起分享,但是Echo Nest可没有承担分享数据的义务。 第一版用在线音乐厂商7Digital所拥有的数字音乐和MusicBrainz所提供的元数据生成了将近1300w的声纹,并以其作为“种子库”。

在这个协议中还有其它令人烦恼的条款,包括要求任何访问此数据的应用程序都要使用Echoprint的“powered by”logo。此外,这个协议中也没有明确说明将来Echo Nest如何修改或者终止这份协议。对于那些曾经在CDDB灾难中受到伤害的人,这份协议会使他们犹豫,因为它对于Echoprint数据库会不会发生同样的事情这点压根没有提及。

目前,Echo Nest没有将其算法细节以一种方便阅读的形式公之于众。当然,Codegen的源码是提供了,但是大家还在期望详细解释其过程的白皮书能够在不久的将来被放出。不幸的是,当前的法律文书没有明确解释涉及到软件的专利许可(MIT许可过于简单了),而这有可能涉及到一些开发者。声纹识别是一个专利领域,并且确实有一些调查揭示了几个以Echo Nest和其创始人Brian Whitman以及Tristan Jehan名义的相关专利申请。从好的一面看,所有专属的声纹识别服务也有专利问题

当前Echo Nest自己的“song/identity”服务器是唯一的已开始运行的Echoprint数据库,尽管任何应用程序作者都可以以测试为目的建立自己的服务器。Codegen的命令行程序可以被任何现代Linux系统所构建,仅需几个重要的依赖,分别是TagLib,Boost和FFmpeg。这个程序以文件为参数(其后跟可选的参数,开始时间,持续时间,均以秒为单位)生成一个声纹。其输出是一个JSON对象,其中包括了文件的ID3标签信息和一个经过base64编码后的声纹。这个输出可以用cURL或者类似的工具直接发送到Echo Nest的服务器,在Codegen的README文件中有说明。

Play or Pause

MusicBrainz的Robert Kaye称此项目计划在可预见的未来(或者直到“人们纠缠我去解决它”)保持对PUID和MusicBrainz数据库中的MusicDNS的支持。这个项目正在 运行一个使用Echoprint替代MusicDNS的测试服务器,但是并没有一个何时开始支持Echoprint的明确时间表。

Kaye还称,他期望在Echoprint产品被大范围采用前能够做更多的调整,但是他注意到“临界物质(critical mass)”是最重要的因素——即对客户应用以及一个相当大的可靠声纹数据库的支持。在7Digital的帮助下预装载1300万首歌曲听起来很多,但是对比一下,Shazam 宣称其已经可以鉴定超过十亿首了。

考虑到使用MusicBrainz的开源音频项目的数量,可以毫不夸张地说,Echoprint已经有了一个成功的开始。它是首个以“立即可用”的姿态杀入市场的完全开源的音乐声纹系统,因此很可能产生大量的音乐识别的开源移动应用。没有了许可费的负担,技术可以在独立的音乐识别应用程序,开源或闭源之间传播。

然而,Kaye强调MusicBrainz的后MusicDNS的迁移意味着使这个项目的声纹识别算法变得不可知。Acoustid仍然处在十分活跃的开发领域中,这里有篇 文档叙述了该算法的细节,而且不需要改变MusicBrainz数据库的格式就可以支持它。

这两个声纹识别技术是重叠抑或是互补,还是竞争的关系,这也许最终将由用户来评判。Echoprint是如此的新生态,我们很难预测它最终会发展成什么样。MusicBrainz的支持自然是一个很大的优势,但是在应用程序作者大规模采取这个技术之前可能更需要的则是更好的技术文档以及对模糊的法律问题的说明。但是,它无疑填补了开源移动软件中的巨大空白。如果这个众包技术能很好运行并创建出一个声纹数据库,该开放方案将很可能在如此之多的相似的专属供应中拥有一片商机。

相关 [echoprint 开源] 推荐:

Echoprint: 开源的声纹识别

- - Linux@SOHU
移动智能业务极大推动了声纹识别技术的发展. 你可能已经看过这样的电视广告场景:用户拿起电话录制了一段几秒的附近播放的音频,然后程序计算出这段音轨的声纹并利用声纹去远端的数据库查询艺术家和音轨的名字. 在以前该领域一直被专属软件占据,但是在上周一个新的开源的项目——. 尽管名字类似,声纹识别技术和用来检测文件改动的基于hash的数字指纹识别技术差别很大.

Echoprint:免费的开放源码音乐识别应用

- imx - 36氪
The Echo Nest昨天刚刚发布了一款开放源码音乐识别应用-Echoprint. Echoprint使第三方开发者能利用自己的应用软件帮助歌迷们识别周围播放的音乐,而且这完全是免费的. 这引起了提供相似服务的Shazam公司的注意,有所不同的是Shazam提供的则是封闭源码. 目前,Shazam已融资了3200万美元.

Google开源LevelDB

- 酿泉 - Solidot
Google宣布在BSD许可证下开源其键值存储引擎LevelDB. LevelDB C++库可用于多种不同环境,如被浏览器用于存储最近访问的网页缓存,或者被操作系统使用去储存安装的软件包和依赖包清单,或被应用程序用于存储用户设置. Google称,即将发布的新版Chrome浏览器,就包含了基于LevelDB的IndexedDB HTML5 API实现.

再论开源

- - 谢益辉
几年前我写过一些关于开源的 想法,如今再来看开源,我觉得问题已经不在说教上,而是在趋势上. 倒退十年或更久,那时候程序员相对还比较稀缺,软件闭源开发出来之后别人模仿的成本高,而这些年计算机教育的普及让码农数量变得越来越多,更多人懂编程了,模仿的成本大幅下降. 写软件作为谋生的目的已经在弱化,更多的是为了自己的实际需求,或社区名声:你不开源.

SoftEther VPN开源

- - Solidot
日本筑波大学的全球分布式公共VPN中继服务器软件SoftEther VPN正式在GPLv2许可证下开源,源代码托管在Github、SourceForge和Google Code上. SoftEther VPN是VPN Gate的底层VPN引擎,在开源之后用户将可以编译出自己定制的二进制包. SoftEther VPN提供了一种分布式的免费公共VPN中继服务,服务器由志愿者托管,因此很少能提供长时间的VPN连接,但代理服务器的不断变化也增加了封杀难度.

Facebook 开源 Detectron

- - 最新更新 – Solidot
Facebook 在 Apache 2.0 许可证下 开源了它的目标识别平台 Detectron, 源代码托管在 GitHub 上. Detectron 用 Python 开发,基于 Caffe2 深度学习框架. Facebook 同时公开了超过 70 个预先训练的模型. Detectron 项目始于 2016 年,实现了一系列最新的目标识别算法如 Mask R-CNN,该软件平台在社交巨人的视觉感知系统的进步上扮演了重要角色.

ios代码开源

- - CSDN博客移动开发推荐文章
本人从10年开始搞ios开发,从菜鸟到现在的入门,期间遇到了许多困难,也总结了一些东西,本着开源精神,希望大家共同成长的目的把这个工程开源出来.. 这个工程是从11年到13年之前完成的.主要是我平时用到的一些基础功能模块.其中有其他开源的代码和我自己写的一些.代码结构基本乱,12年以后的代码结构还可以,不是很乱,之前水平有限,如果不怎么样就别喷我了.

Azul开源Zing Jvm

- - InfoQ cn
4月末,继Zing 5.2 之后,. Azul Systems宣布他们将无停顿(pauseless )的 Zing JVM提供给开源软件开发者和项目,以供开发和测试. Azul Systems 工程部副总裁和合作创始人Shyam Pillalamarri向InfoQ说明道:. 我们的部署很大一部分基于开源组件,所以我们认为:“假设我们不能将一些有价值的东西免费提供给开源项目贡献者,他们将一直受限于从Java虚拟机(JVM)视角所看到的内容”,他们将不会考虑额外的用例,或者选择其他能解决了所有内存或扩展性问题、类似Zing的系统.

Java开源建站工具

- Amom - 阮一峰的网络日志
美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单. 他的语言平台是Java,开发项目是一个网站(还未上线). 所用到的工具都是开源的,可以免费得到. 在目前的创业者之中,用Java作为网站开发语言的人似乎很少. 这当然不是没有原因的,Java看上去确实不像是最便捷的网站开发工具,给人的感觉是用起来麻烦又费事.

开源Python UI框架:Kivy

- xin - 秀码趣 - ShowMuch.com
Kivy是一个可用以快速创建新颖用户界面应用的开源Python库,比如可以用它来创建多点触摸的应用程序,它具备跨平台特性,目前发行有Windows、MacOS、Linux以及Android版本. 作为一个开源框架,Kivy具备以下特性:A.百分百免费使用;B.基于 LGPL3协议 开源,对商业化应用友好;C.跨平台,支持Windows、MacOS、Linux以及Android;D.允许在不同的平台上运行同一套代码;E.稳定以及有完善的API文档;F.通过OpenGL ES 2.0对硬件进行加速;G.自然支持大部分的输入协议或者输入设备;H.基于Python的简单API……等等.