哼唱音乐检索

根据前段时间对论文参考和研究,总结了几种对语音音乐搜索的一些常用技术和大概框架。随着项目的实施和深入,将会继续深化对该领域的技术探讨和性能分析。

1、大概框架:

预处理:建立候选MIDI音乐文件的数据库和索引,每一首歌曲,通过基音周期检测的手段,将歌曲的音乐信号转换为音高和音长。说白了,就是提取旋律特征,建立音高序列的数学模型。本系统打算采用音高差和音长比的二元组表示旋律轮廓。

 在线处理:测试者通过麦克风哼唱一段输入歌曲,可以根据用户的习惯来哼唱。然后利用最低信号强度,音高连续性、人类唱歌音高范围等方法来消除不需要或者错误的音高点,再利用自相关函数、平均幅度差函数来寻找最有可能用来接下匹配的音高序列。关于最后生成音高序列的方法有待进一步探讨,因为根据实际经验来看采用自相关函数(ACF)、平均幅度差函数(AMDF)得到的音高序列各有优势,需要开发者据情况做分析。

 后处理:把查询输入音高序列转化为跟数据库里的音乐旋律轮廓相同的序列(Thus we adopt a mean-adjustment method that shifts the input pitch sequence to have the same average value as that of each song’s in the database)。然后利用DTW算法在音乐数据库找到排名靠前的查询结果列表。当然,为了系统的性能和查询时间平衡,可以利用分层处理(n-step HFM---hierarchical filtering method)的方式提高检索效率。

2、技术学习:

DTW(动态时间规整)、HMM(隐马尔可夫模型)、key shifting(音调变换)、Autocorrelation function(ACF-自相关函数)、Average magnitude difference function(平均幅度差函数)、旋律直方图(针对高维情况的数据结构,论文里说的看不懂而有待学习)、Bit Vector Indexing(BVI)算法(技术有点先进,看不懂有待学习)等。

posted @ 2012-02-29 21:44  liftBug  阅读(591)  评论(0编辑  收藏  举报