论文部分内容阅读
随着数据存储能力的增加和传输技术的发展,数字音乐的数量呈现前所未有的增长。然而,这种爆炸式的增长使得在如此巨大的音乐数据库中查找感兴趣的音乐片段变得越来越困难。最近几年,这种窘境已经促使大量的研究人员把研究重点放在如何快速准确地从海量音乐数据库中检索出需要的音乐歌曲。本文主要研究基于内容的海量音乐检索中的两个技术:基于哼唱的音乐检索和基于样例的音乐检索,并对音乐检索中的一个关键技术,即快速索引查找技术,进行深入的研究,本文的主要工作和创新点包括以下几个方面:1)提出了局部对齐哼唱检索算法在哼唱检索中,哼唱片段通常被看作某首歌曲的一个子片段,因此哼唱检索可以看作一个子序列匹配的问题,即在音乐库中查找与哼唱片段最相似的子片段。但是,由于哼唱错误频繁发生,一般只有部分片段准确匹配,因此,哼唱片段中只有部分子片段与音乐库中的某个子片段能够实现较好的匹配。为了找到最相似的子片段,本文提出了局部对齐的框架,其目标是在哼唱片段和歌曲库片段中找到最相似的公共子片段。采用此算法,哼唱片段中的严重哼唱错误会被丢弃,避免了哼唱错误带来的负面影响,提高了哼唱检索的准确率。2)提出了基于音符和基频的两层局域敏感哈希哼唱检索算法以往的哼唱检索技术使用基于基频的局域敏感哈希(Locality Sensitive Hashing, LSH)算法提高检索速度,本文提出了一种基于音符的LSH检索算法,能够提高候选片段的召回率,再使用更准确的重音移位迭代对齐算法可以提高哼唱检索的准确率。同时考虑到海量数据下哼唱检索的效率问题,本文提出了一种基于置信度的两层LSH滤波检索策略,只有当第一层的基于音符的LSH检索结果不可靠时再使用基于基频的LSH检索给出更准确的结果,使用这种检索策略,显著地降低了哼唱检索系统的平均检索时间。3)提出了基于哼唱速率的多层滤波和渐进式滤波哼唱检索算法在哼唱检索系统中,大部分用户的哼唱速率比较接近原始歌曲的正常速率,因此哼唱速率也是衡量歌曲匹配程度的一个重要因素。基于哼唱速率的不同,本文提出了一种基于哼唱速率的多层滤波检索算法,即先使用原始片段进行搜索,然后对哼唱速率进行不同程度的调整再搜索,此算法有效地提高了哼唱检索的速度。哼唱速率的不同调整程度也体现了歌曲的匹配程度,基于此点的考虑,本文提出了一种哼唱速率融合的渐进式滤波算法:先使用速度快但不精确的算法缩小候选歌曲的搜索范围,再使用速度慢但精确的算法计算候选歌曲的相似度,最后融合哼唱速率得分与其他精确匹配算法得分,并根据融合得分进行排序。哼唱速率提供了歌曲匹配程度的新信息,使用融合策略提高了哼唱检索的准确率。4)提出了基于熵的局域敏感哈希算法和边界扩展局域敏感哈希算法在基于内容的音乐检索研究中,一个关键问题是面向海量数据的快速查找。本文研究了一种当前最流行的快速检索算法:局域敏感哈希算法,在此基础上,提出了两种改进算法:基于熵的LSH算法和边界扩展LSH算法。在原始的LSH算法中,哈希函数的生成并没有考虑实际数据分布,而通常情况下,数据分布是不均匀的,导致某些哈希函数把数据点映射得比较密集,而某些哈希函数把数据点映射得比较稀疏,两者的碰撞概率差异很大。本文基于均匀映射的思想提出了一种基于熵的哈希函数生成方法,使映射之后的数据点大致呈现均匀分布,不同桶中的数据点数目也大致相同。使用LSH算法时,近邻点被映射到相邻桶中的概率通常也很大,因此相邻桶中的点也可能是近邻点,基于此点的考虑,本文提出边界扩展LSH算法扩展每个桶的边界,使得相邻桶之间有共同的区域,每个点有可能被映射到多个桶中,显著地增加了近邻点的碰撞概率。5)提出了基于结构音乐指纹的两层滤波样例检索算法一个好的基于样例的音乐检索系统,不仅需要满足高准确率的要求,还需要满足快速性要求。本文在研究Shazam算法的基础上,提出了一种结构音乐指纹构建方法,使用多个峰值特征点构建音乐指纹,增加指纹的信息量和区分性,显著地提高了检索速度;为了提高检索准确率,使用有选择的两层滤波检索算法筛选更多候选片段,并使用原始峰值特征点计算候选歌曲的相似度。使用本文提出的检索算法,同时提高了基于样例的音乐检索系统的精度和速度。