为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

副歌提取和人声检测设计文档.doc

2017-10-27 13页 doc 83KB 24阅读

用户头像

is_597436

暂无简介

举报
副歌提取和人声检测设计文档.doc副歌提取和人声检测设计文档.doc 音乐主题提取系统设计文档 一(算法概述 1. 算法流程说明 本算法需要解决的技术问题是,给定一首音频文件, 通过对现有音乐信号提取技术的整合及优化,让计算机能 够自动识别出副歌的位置。基本的流程图如右图所示。 (1) 读入音频文件 本步骤由用户完成,注意需要读入的是wav文件格式, 可以批量读入也可以单个读入。 (2) 节拍追踪 首先进行能量和相位的音符开端检测,接下来使用动 态规划算法计算最优节拍序列间隔。 测量的方法是将分帧的音频信号通过短时傅立叶 变换映射到频域进行...
副歌提取和人声检测设计文档.doc
副歌提取和人声检测文档.doc 音乐主提取系统设计文档 一(算法概述 1. 算法流程说明 本算法需要解决的技术问题是,给定一首音频文件, 通过对现有音乐信号提取技术的整合及优化,让计算机能 够自动识别出副歌的位置。基本的流程图如右图所示。 (1) 读入音频文件 本步骤由用户完成,注意需要读入的是wav文件格式, 可以批量读入也可以单个读入。 (2) 节拍追踪 首先进行能量和相位的音符开端检测,接下来使用动 态规划算法计算最优节拍序列间隔。 测量的方法是将分帧的音频信号通过短时傅立叶 变换映射到频域进行频谱得到音符开端包络线, 为了保证短时变换中的信号相对稳定,因此首先对音 频信号进行固定长度的分帧。选取的帧长为32ms,每 次以4ms 为单位进行推进,再对于每一帧进行短时傅 立叶变换(Short-time Fourier Transfer)。那么在频域会 有n 个bin(n 为该帧短时信号的采样点个数),对于 其中的某一帧(该帧的帧数由m 表示)的第k 个bin 可以以复数的形式被表示为: ,,,,,,,,,,,,,,,, ,, 其中,,,,为第m帧中的第k个bin的幅度,Φk (m)为第m帧中的第k个bin, 的相位。之后可以通过当前一帧对于接下来的一帧进行估计。对于该帧内的每 ,,一个bin,其幅度的估计值:,, 即为之前一帧与之对应的bin的幅度,即: , ,,:,,,,,,,,,。 ,, ,,而相位的估计值:,,则为前一帧与之对应的bin 的相位以及其相位的差分, 之和。表示为: ,,,,:,,,,,,,,,,,,,,,,,,,,,,,,, ,,, 其中函数 princ arg将相位映射到[?π ,π]的范围中。这样就得到了第m帧幅度和相位的估计值。此时可以在复平面上对这两个点求欧几里德距离,用 ,,,, 表示第m帧的第k 个bin的实际值与估计值之间的距离,即: , ,,,,,,,,,,,,,,,,,,:,,,,,,,,:,,,,, ,,,,, 将这 n 个距离相加,就可以得到一个以帧为单位的音符开端检测函数: , ,,,,,,,,,, , , (3) 提取与节拍同步的chroma特征 对音符开端检测的结果应用动态规划的方式进行节拍追踪(Beat Tracking),使得检测出的节拍同时满足以下两个条件:?节拍的开端尽可能与音符开端重合;?两个节拍之间的时间长度恒定。节拍实际上即为固定间隔的时间点序列,并且要让尽可能多的音符开端落在节拍的时间上。动态规划的过程也正是在这两个限制条件下寻求最优的节拍位置以及节拍间隔。用算式表示的目标函数即为: ,,,,,,,,,,,,,,,,,,,,,,,,,) ,,,,,,,,其中,,,,,,,)是一个衡量速率的。目标是寻找最优的节拍序列{ti} 来使,,, 得目标函数(C{ti })最大。 将每一帧内的信号通过傅立叶变换由时域映射到频域,这里分割出的帧就是经过节拍同步后划分的帧长度;将对应于不同八度同一个音名频率内的部分映射到对应的半音音名中,产生一个12维的向量,每一维对应于一个八度中的一个半音;以节拍追踪的结果为依据,在一个节拍之内对属于其中的帧的chroma特征向量进行平均,即可得到与节拍同步的一个chroma特征向量,每个节拍对应一个chroma特征向量。 (4) 计算chroma特征的自距离矩阵 定义自距离矩阵为D[m,m],其中m为整个歌曲的节拍数,则其中矩阵的元素D(i, j)表示第i拍所对应的chroma特征向量与第j拍所对应的chroma特征向量的欧式距离。具体公式如下: ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, 其中 , 表示第i 个节拍对应的特征向量。使用自距离矩阵,可以对歌曲, 节拍与节 拍之间的关系进行衡量,并且可以非常直观的反映出歌曲的结构信息。 从自距离矩阵的主对角线开始向左下方平移,计算每一条子对角线所有元素的平均值,并且将得出的结果表示成为一个以k(该子对角线与主对角线相比向左下方平移的长度)为自变量,元素平均值为函数值的函数F(k).具体表示为: ,,,,,,,,,,,,,,,,,, ,,,,,, 其中 M 是整个歌曲的节拍数。可以认为整个子对角线的元素平均值若较小,则说明有可能有重复的段落出现在了这条子对角线所表示的这段音乐中,因此找出函数F (k )的极小值,取出对应于这些极小值的子对角线,则副歌以及其他多次重复的部分(如主歌)就应该会包含在其中。 (5) 自距离矩阵的二值化 设定一个阈值(在实现中此阈值可使80%的元素值取值为1,20%的元素取值为0,该取值通过实验证明可产生较好的结果),将所有这些子对角线中的元素值与阈值进行比较,若大于阈值则该点为1,否则为0。 (6) 打分判断最高分段落为副歌 将所有的可能的副歌段落基于以下几个方面对于可能的副歌段落进行打分: ?段落在歌曲中的位置; 一般来讲,某一类副歌的出现位置都是在一个大约的位置,因此可以对该位置进行估计。基于观察的结果,大部分的流行音乐歌曲的副歌都会出现在接近歌曲1/4以及3/4的位置附近,因此可以通过可能副歌段落与歌曲1/4以及3/4的距离作为一个衡量的标准。若段落与1/4或者3/4较近,则得分较高。定义如下的片段表示方式:将开始位置在自距离矩阵中的下标为(i, j)结束位置在自距离矩阵中下标为(i’, j’) 的片段表示为[Xp = [i, j, i’, j’],并进一步定义 Δxp = j’-j +1 为该片段的长度(以节拍为单位)。则进行打分的过程用公式表示为: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,, ,,,,其中 M 是整个歌曲的节拍数,,,,和,,,分别表示了片段与歌曲1/4 以,, 及3/4 处距离的打分。从式子中可以看出该标准会对于首次出现的副歌片段予 以更加高的评分。 ?段落对应的音频信号的平均能量以及在自距离矩阵中的平均距离。 副歌部分通常给人以歌曲达到了“高潮”的感觉,正是由于副歌部分信号具有较 ,,高的能量。因此能量也最为一个衡量的评分标准,能量越高得分越高。用 ,,, , 来表示片段平均对数能量和歌曲总对数能量的比值。 在自距离矩阵中,若该可能的副歌段落的平均距离与整个歌曲的平均距离比较 接近,那么它也更有可能是副歌。因此这一项也可以作为一个衡量的评分标准。 ,,用 ,,, 来表示此项得分则有: , ,,,,,,,,,,,,,,, , 其中 ,,,,, 是片段Xp在自距离矩阵对应段落的距离的中间值,而是整个自 距离矩阵的平均距离。最终片段Xp的得分由如下公式所得 ,,,,,,,,,,,,,=,,,,,,,,,,,,,,,,,,,,,,,, ,,,, 该权值的分配为实验测试中较为良好的测试结果对应的权值。计算出所有可能 段落的得分,最高得分的段落即被判断为副歌 2. 代码实现描述 本系统的核心算法由matlab代码完成,其中chorusdetection.m是计算副歌 的程序,也是调用COM接口的程序。 com接口的输入参数: readDir读入文件夹,writeDir输出文件夹,wavname读入文件名,minnum(最 小片段长度),debug(调试方法),算法选择(method),output_opt输出状态 选择; com接口的输出参数:CTime(副歌起止时间点) 下面对于各函数的作用按字母顺序做一个解释 (1) Avenergy.m 将候选片段能量平均成一个分数 (2) Beat.m进行节拍追踪 (3) Beatavg.m 对提取的以帧为单位的特征向量进行节拍内平均 (4) Bts2time.m 将以节拍单位转换成以时间为单位 (5) Caldiag.m计算对角线的函数值 (6) Chromagram_E.m, Chromagram_IF.m, Chromagram_P.m 根据不同输入参数的计 算chroma特征向量的三种方法 (7) Chrombeatftrs.m计算以节拍为单位的chroma特征向量 (8) Chromehance.m 增加chroma特征向量的数值 (9) Delete0.m 删除值为0的矩阵 (10) Distsc.m 根据距离给出分数 (11) Fft2melmx.m 取出一个矩阵将他们从频域的维度转换到mel频率的维度 (12) Fftoneside.m 单边快速傅里叶变换 (13) Hz2octs.m 从频率刻度转换度八度空间 (14) Ifgram.m,ifptrack.m 加窗函数,具体定义详见函数 (15) isenhan.m 判断是否需要处理Kernel值 (16) localmax.m 返回局部最大值 (17) Locseg.m二值化自距离矩阵,打分选出可能的副歌段落 (18) Main.m 批量测试主程序,与界面程序无关 (19) Matcentre.m 测量chroma特征的中间步骤 (20) Mfccbeatftrs.m 计算以节拍为单位的MFCC特征向量 (21) Oct2hz.m从八度空间转换到频率刻度 (22) Sdm.m计算自距离矩阵 (23) Tempo.m 输出节拍的BPM值 (24) Tokenize.m 合并分离的子串 (25) 以上具体算法特征在注释中都已经写明,如有疑问请参阅算法注释或直接发邮 件询问作者:gothictoro@gmail.com 二(性能分析和准确性验证 (1) 通过对结果进行分析可以发现提取出的副歌片段与实际的副歌有如下几种关系: 提取出的副歌片段包含在实际的副歌片段中;提取出的副歌片段中包含实际的 副歌片段;提取出的副歌片段与实际的副歌无包含关系但是有重叠部分;提取 出的副歌片段与实际的副歌完全无重叠部分。对于前两种,考虑到我们对于副 歌提取的主要应用功能(自动生成手机铃声以及彩铃),目的基本上已经达到, 因此可记分数为1 分;第三种情况下找到了部分的副歌,但是也有一些干扰, 因此可记分数为0.5 分;最后一种完全没有定位出副歌的位置,因此记为0分。 对于整个测试集的结果,则将每一首歌曲提取副歌的得分相加再除以歌曲的总 数即可得到正确率。 (2) 数据集的选择:2000首不同风格,类型,地区,节奏的歌曲 (3) 实验结果:根据上述的评分标准,进行人工标注副歌的开始起止,2000首的总 分为1500分,即正确率为75%。 三(使用说明书 1. 界面预览 A B G H C F I D E 2. 功能介绍 A. 打开需要提取副歌的wav文件 B. 开始计算,默认状态下会在默认的地址开始计算副歌输出 C. 显示副歌提取状态 D. 显示需要提取的目录,文件名和输出的文件名等信息 E. 播放副歌和原歌曲进行比对 F. 打开设置菜单,即右图 G. 设置输出格式,分别为MP3、MAT和WAV三种格式 H. 设置采用的特征向量,由MFCC和chroma可供选择 I. 歌曲类型为偏好选项,若歌曲风格存在,则系统会建议用户使用哪种特性来进 行计算
/
本文档为【副歌提取和人声检测设计文档.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索