论文部分内容阅读
音乐作为人们生活中必不可少的一部分,音乐搜索具有广大的用户群体,也蕴含着巨大的商机。传统的音乐搜索是根据用户输入的关键词进行搜索,关键词可以是歌曲的名称,歌手名,歌词等,这种方式被称为基于文本的检索。对于这种方式的检索,如果用户不能准确地记住歌曲的相关信息(歌曲名称,歌词等),就不能准确的检索歌曲。同时,采用这种检索方式需要手动去维护一个音乐数据库,对每首歌曲的基本信息进行标注,增加了管理者的工作量,因此需要找到一种更简单,更快捷的检索方式。哼唱检索便是一种新型的检索方式,它充分利用歌曲自身的特征,如音高,音长等特征,为用户提供一种更简单更自然的检索方式。这种新型的检索方式可以广泛地应用在移动互联网,卡拉OK中,也可以应用于音乐教育等方面。哼唱检索最核心的两部分是音乐旋律特征提取和匹配。如何准确的提取歌曲的特征信息,利用特征信息描述歌曲轮廓;采用哪种匹配算法又快又准确的检索出我们所需要的歌曲是本文的研究重点。围绕这两个问题,本文做了如下相关研究和探索。(1)综合分析了音乐的各种特征,介绍了常见的几种基音提取的算法。包括自相关函数法,平均幅度差函数法等。同时为了使基音的提取更加准确,本文介绍了常用的预处理操作和后期处理操作。总结了当前音乐旋律特征的表示方式,最后确定了本文中采用绝对音高序列来描述音乐特征。(2)介绍了常用的几种旋律匹配算法,包括欧氏距离,编辑距离,DTW算法等。确定了本文中采用LS算法和DTW算法来进行旋律的匹配操作。首先采用LS算法粗略过滤掉一部分差异比较大的候选项,然后利用DTW算法进行二级过滤,完成精确匹配。充分发挥LS算法在时间上的优势和DTW算法在效率上的优势。(3)本文中采用台湾清华大学资讯工程系张智星老师提供的48首MIDI音乐,采用midtoolbox工具提取MIDI音乐的音乐特征,搭建了一个小型的哼唱检索音乐数据库。并在此基础上开发一个哼唱检索系统。本文研究成果的特色之处在于:(1)设计了基于能量的过滤和平滑处理两种后期处理方式,使提取到的基频更加准确。(2)开发了一个批量提取MIDI音乐音高特征的工具,采用此工具可以很方便的提取MIDI音乐文件中的音乐信息,构建一个音乐特征数据库。(3)综合采用LS算法和DTW算法进行旋律匹配,充分发挥两种算法的优势。同时,本文分析了提高系统执行效率的几种方式并简单介绍了GPU和CUDA,分析了使用CUDA来加速MATLAB执行速度的可行性和具体的操作流程。