Bar*_*art 16 algorithm audio android audio-processing
我想在两段音频之间得到某种距离测量.例如,我想比较动物的声音和模仿该动物的人的声音,然后返回声音有多相似的分数.
这似乎是一个难题.接近它的最佳方法是什么?我想从音频信号中提取一些特征,然后对这些特征进行欧几里德距离或余弦相似性(或类似的东西).什么样的功能很容易提取,有助于确定声音之间的感知差异?
(我看到Ahazam如何使用散列的东西,但这似乎是一个不同的问题,因为两个音频完全相同,增加了噪音.而在这种情况下,两个音频不一样,他们只是在感知上相似)
比较一组声音的相似性的过程在计算机科学研究中称为基于内容的音频索引,检索和指纹识别.
一种方法是:
在每个音频文件上运行几位信号处理,以提取特征,例如随时间变化的频率,频谱,自相关,动态范围,瞬态等.
将每个音频文件的所有功能放入多维数组中,并将每个多维数组转储到数据库中
使用优化技术(例如梯度下降)来查找多维数据数据库中给定音频文件的最佳匹配.
使这项工作做得好的诀窍是选择哪些功能.自动执行此操作并获得良好结果可能会非常棘手.在这些家伙潘多拉做到这一点非常好,在我看来,他们周围有最好的相似性匹配.他们通过手工编码他们的矢量,通过让人们听音乐并以多种不同的方式评价它们.有关详细信息,请参阅他们的音乐基因组计划和音乐基因组项目属性列表.
对于自动距离测量,有几个项目可以做这样的事情,包括marsysas,MusicBrainz和EchoNest.
Echonest拥有我在这个领域见过的最简单的API之一.很容易上手.