哼唱旋律到midi旋律的转换方法_3

文档序号:9490322阅读:来源:国知局
哼唱旋律"与"期望哼唱旋律"的差异,可以鉴别输入哼唱信号的"哼唱质量"以及系 统的自动校正能力;
[0063] 2)提出一种基于变采样技术与倍音理论相结合的信号帧快速基频(音高)估算 算法,其计算复杂度为〇 (nlog2n),这要比目前被广泛使用的YIN算法速度快(YIN算法的 计算复杂度为〇(n2));另外,该算法估算基频(音高)的误差精度为25音分。尽管低于 YIN算法精度,但在统一测试数据的实验结果比较中,有声帧音高估算准确率(rawpitch accuracy)高达了 86. 35%。很接近最好的Monlinaetal的SiPTH系统[18]的结果;
[0064] 3)所提出的方法可以分析包含"滑音"、"颤音"、"气音"等装饰性音符,并将其作为 一个"哼唱音符"的一部分,使得每个"哼唱音符"仅有唯一一个音高。另外,处于一个"哼 唱音符"所对应的信号区域的信号帧的基频(音高)波动范围不固定,不像传统的以平均律 的整数MIDI音高为中心,且可以从原先半音音程(100音分)以内扩展至全音音程(200) 音分;
[0065] 4)大多实际哼唱都存在不同程度的走音现象。传统的哼唱旋律自动识别系统局限 与估算"实际哼唱旋律"。一个高度智能化的系统应能从含有一定程度走音的实际哼唱片段 中寻找出正确的哼唱旋律(我们称之为期望哼唱旋律)。这要求系统应具备评判哼唱音符 音高对误的能力。记谱专家判断哼唱音符音高的对误往往以他对哼唱旋律的调性认知为参 照。这意味着系统需先分析哼唱旋律调性,再以调性音级(scalestep)为参照评估实际哼 唱音符音高的对误。任意实际哼唱片段中哼唱音符的基频(音高)与相应标准音的频率总 有不同程度的偏离。把哼唱音符的基频音高直接规整到相应的标准音高频率(roundedto MIDI)会损失估算精度。为此,本发明采用一种基于相邻或间邻哼唱音符音程分析的哼唱旋 律的调性分析法。即先估算实际哼唱相邻或间邻哼唱音符的音程,而后再在音程序列上估 算哼唱旋律的调性。并由此建立期望哼唱旋律的估算模型。
【附图说明】
[0066]图1为哼唱旋律自动识别系统的工作流程。
[0067]图2为本发明与Monlina的SiPTH系统[1S],Tiitaniemi的Baseline方法[17], G0mez's与Bonada的哼唱旋律识别方案[19]以及Ryynanen的基于HMM的方法[16]的各项系 统性能评估结果比较图。
[0068] 图3为M. 的方法[16]分析38首人声哼唱的1)算法估算的实际哼唱旋 律,2)手工标注的Groundtruth的结果(涉及调性估算正确率与平均音程正确率)比较图 以及本发明分析1)算法估算的期望哼唱旋律与,2)手工标注的Groundtruth的结果(涉 及调性估算正确率、平均演算音程正确率及平均校正音程正确率)比较图。
【具体实施方式】
[0069] 本发明实施例包括以下步骤:
[0070] 步骤1(估算信号帧的基频):采用倍音分析与变采样技术相结合,为每个信号帧 估算指定精度范围内的音高。与现有的自动记谱系统中被广泛用来估算基频的YIN[1]算法 相比较,本发明具更小的计算复杂度(〇(nlog2n),YIN算法是ο(η2))以及很好的有声帧音高 估算准确率(rawpitchaccuracy) 〇
[0071] 步骤2 (规范哼唱音符的听觉标准):哼唱音符是哼唱旋律的基本组成单位。我们 可以把一段实际的哼唱片段视为由一个听觉可辨识的听觉成分序列所组成。每个听觉成分 在听觉上可呈现为音高波动相对稳定的稳定音,或为具有较大音高上下波动性的颤音,或 为音高沿单一方向变动的滑音,或为以气流开始的气音,以及换气或停顿等等不同的声学 特性。记谱专家可以在这样的听觉成分序列上判定某一听觉成分子串能否可认定为一个哼 唱音符,并由此规范各种哼唱音符的听觉标准。与传统的按公式(F- 1)界定音高方法不 同,本发明将不把MIDI音高(整数)p作为界定一个音符音高的中心点,而是引入一种精度 更高(误差在25音分以内)的扩展MIDI音高表达P-,p-,p+,p++。在一个哼唱信号区域 内界定音高的基频波动范围不固定,可由原先的半音(100音分)扩展至全音音程(200音 分)的上下波动范围。这种方法更适合哼唱旋律中哼唱音符的音高辨识。
[0072] 步骤3 (哼唱音符切割与音符音高估算):人在凝听一段哼唱时对其中某个哼唱音 符所产生的音高听觉很依赖于这个哼唱音符由何种听觉成分构成以及这个哼唱音符的上 下文。例如,一个具有滑音听觉成分的信号区域能否构成一个哼唱音符与其后面的信号区 域为何种听觉成分有着密切的关系。若这个滑音听觉成分的后继为一个稳定音成分,则这 个滑音听觉成分必须与后面的稳定音成分合并以构成一个哼唱音符,同时,处于稳定音听 觉成分后段的信号帧的平均基频会被认定为合并后音符的音高。若这个滑音听觉成分的后 继为一个短促的停顿或为另一个音高变化方向相反的滑音听觉成分,则前面的滑音听觉成 分自身就可独立地构成一个哼唱音符。且前面滑音成分尾部信号帧的基频会被听觉认定为 这个音符的音高。通过构造ATN网络,可在一个听觉成分序列上识别音高波动范围在半音 甚至全音音程内变化且由不同听觉成分构成的哼唱音符从而实现哼唱音符的自动切割。同 时,通过观察与比较由听觉确认的各种不同类型哼唱音符中各种听觉成分信号帧基频与实 际首尚听觉的关系,可以建立各种哼唱首符的首尚估算t旲型。
[0073] 步骤4 (基于哼唱旋律调性分析的期望哼唱旋律的估算):本发明采用一种基于相 邻或间邻哼唱音符音程分析的哼唱旋律的调性分析法。基本分析策略是先通过相邻音程 (第j个音符与第j+Ι个音符所构成的估算音程,精度误差为25音分以内,即估算音程含 小数部分〇.25, 0. 50, 0. 75)分析推导第j+Ι个哼唱音符的音级,当相邻音程最小取整误差 达到某个阈值(〇.75)时就使用间邻音程(第j-Ι个音符与第j+Ι个音符所构成的估算音 程,精度误差也是25音分以内)分析并优先匹配第一候选音级。同时,允许匹配至多一个 非调性音级(这个唯一的非调性音级可以多次出现)。即算法所输出的音级序列中允许出 现至多一种非调性音级。而这个非调性音级既可理解为实际哼唱的一个走音音符,也可理 解为在自然调式体系下的一个临时变化音级。另外,为提高间邻音程分析结果的可靠性,算 法在使用第j-1个哼唱音符的音级通过间邻音程分析推导第j+1个哼唱音符的音级时,要 求第j-ι个哼唱音符的音级必须是通过唯一的第1候选推导出来的结果,并以此作为使用 间邻音程分析的条件。任意二个相邻音符或间邻音符的估算音程不一定正好是整数,每当 算法根据二个相邻音符或间邻音符从当前音符的音级推算下一个音符音级时,就会产生取 整误差。算法会累积这些取整误差。并按累积的取整误差由小到大的次序排列输出解的优 劣。累积取整误差最小的解为最优解。
[0074] 步骤5 (系统性能评估方法的建立):与现有哼唱旋律自动识别的系统评估方法不 同,作者提出任意实际哼唱均具有二种旋律,即"实际哼唱旋律"与"期望哼唱旋律"。我们 把"期望哼唱旋律"作为哼唱旋律的正确旋律。通过比较音符"绝对音高"及"调性音级"的 主观听觉判定与系统客观估算结果的差异,评估系统识谱能力。
[0075] 以下通过实验与评估来说明本发明的技术效果。具体包括三方面内容,S卩:1)测 试数据集与评估标准;2)性能测试、评估方法与结果;3)结果的比较与讨论。
[0076] 1)测试数据集与评估标准
[0077]使用EmilioMolina[18]在http://www.atic.uma.es/ismir2014singing/ 中提供 的测试数据(包括总时长为1154秒的38首人声哼唱及其Groundtruth文件)以便实施 比较。这些数据所包含的音乐家手工标注的38个Groundtruth文件可视为38首以我们 算法估算的实际哼唱旋律的评估标准。另外,在SingingTracker系统上为这38首人声哼 唱手工标注期望哼唱旋律。以此作为38首我们算法估算的期望哼唱旋律的评估标准。为 使评估标准尽可能一致,我们要求每首人声哼唱的手工标注的期望哼唱旋律,其任一音符 的起始位置(onset)与音长(duration)均与Groundtruth文件相应音符一致。在调性分 析的评估标准上,我们规定含有转调、移调的哼唱不参与算法估算的期望哼唱旋律的测试 与评估。鉴于哼唱中存在不同程度的跑调(keyoff)现象,规定半音音程以内的移调现象 仍然认为没有移调。算法的调性分析结果与人工听觉判定的调性结果若相差半音音程,也 算正确。
[0078] 2)性能测试、评估方法与结果
[0079] 包括二个部分,一是以Groundtruth为标准,对以我们算法估算的实际哼唱旋律 的性能测试与评估。二是以手工标注的期望哼唱旋律为标准,对以我们算法估算的期望哼 唱旋律的测试与评估。Groundtruth中手工标注的音符音高值被称为音符的Groundtruth pitch。最接近Groundtruthpitch的MIDI音高就是音符的绝对音高。而手工标注的期 望哼唱旋律中手工标注的音符音高则是最接近Groundtruthpitch的调性音级(scale st印)所对应的MIDI音高。文献[18]指出Groundtruth中手工标注音符音高的听觉误差 可保正在50音分以内。由手工标注的期望哼唱旋律中相邻音符构成的音程的听觉误差也 可保证在50音分以内。
[0080]A.算法估算的实际哼唱旋律的评估与结果:
[0081] 按与文献[18]类似的评估方法,以Groundtruth为标准的正确结果,本发明把下 面几个属性的测算数据作为算法估算的实际哼唱旋律的评估结果:
[0082] 鲁有声帧音高估算准确率(rawpitchaccuracy):有声帧中音高估算正确的百分 率(参见公式(F-2)),简称RPA;
[0083] ?有声帧估算召汇率与无声帧估算误判率(voicingrecallandvoicingfalse alarm):此二属性为MIREX关于音频旋律抽取的二个标准技术指标;有声帧估算召汇率为 处于手工标注为有声区域的信号帧中被算法也认定为有声帧的百分率,简称VR;无声帧 估算误判率为处于手工标注为有声区域的信号帧中被算法认定为无声帧的百分率,简称 VFA;
[0084] ?未被检测音符率(Non-detectednoterate):出现在手工标注的Groundtruth 中的一个音符叫无法与算法估算的实际哼唱旋律中的任意一个音符η^相匹配(即音符η;与η,既不在音高上相匹配,也不在时间区域上相匹配);称音符n 未被检测音符,简称ND 音符;ND音符ηι在手工标注的Groundtruth中出现的百分率称为未被检测音符率,简称ND率;
[0085] ?音符误判率(Spuriousnoterate):出现在算法估算的实际哼唱旋律中的一个 音符nj无法与出现在手工标注的Groundtruth中的任意一个音符η;相匹配(即音符η。与 叫既不在音高上相匹配,也不在时间区域上相匹配);称音符η,为误判音符,简称PU音符; 音符nj在算法估算的实际哼唱旋律中出现的百分率称为音符误判率,简称PU率;
[0086] ?音符误分割率(Splitnoterate):在手工标注的Groundtruth中的一个音 符叫在算法估算的实际哼唱旋律中被错误地分割成η个相邻的音符:音符叫的 起始时间(onset)与音符-χΙ的起始时间(onset)相差不超过±50ms,且η个相邻的音符 \的总时间区域覆盖音符叫的时间区域超过50%,且音符ni的手工标注的音高取 整为MIDI音高后与η个相邻的音符%,"、?'《九的估算音高的取整MIDI音高是一致的;称音 符叫为误分割音符,简称S音符;S音符ni在手工标注的Groundtruth中出现的百分率称 为误分割音符率,简称S率;
[0087] ?音符误合并率(Mergednoterate):在算法估算的实际哼唱旋律中的一个音符 n_j正好为手工标注的Groundtruth中η个相邻的音符合并的结果。其中音符 的起始时间(onset)与音符〃八的起始时间(onset)相差不超过±50ms,且η个相邻的音符 η/?.的总时间区域覆盖音符nj的时间区域超过50%,且音符η,的手工标注的音高取 整为MIDI音高后与η个相邻的音符的估算音高的取整MIDI音高是一致的;称音 符A为误合并音符,简称Μ音符;Μ音符nj在算法估算的实际哼唱旋律中出现的百分率称 为音符误合并率,简称Μ率;特别
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1