音符切割方法、切割系统及视唱评价方法与流程

文档序号:29041802发布日期:2022-02-25 20:56阅读:207来源:国知局
音符切割方法、切割系统及视唱评价方法与流程

1.本发明涉及音频数据处理领域,尤其涉及一种音符切割方法、切割系统及视唱评价方法。


背景技术:

2.音乐评分是一种实时对用户的个人演唱进行及时反馈的技术,可以对演唱者的演唱准确度进行评估,给用户带来新奇体验的同时,还能提高演唱水平。这种方式常见于ktv等娱乐场所当中,能够大大的增强演唱者和所唱歌曲的互动性,因此,深受现在年轻人们的喜爱。
3.如申请号为202110610610.3的发明专利申请中提到一种演唱评分系统,包括数据采集模块、控制器、显示播放模块、数据传输模块、用户终端和云服务器,数据采集模块用于采集用户数据信息与用户演唱过程中的数据信息,控制器用于对数据采集模块采集的数据信息进行处理后得到演唱评价结果,显示播放模块用于将演唱评价结果和数据采集模块采集的数据信息进行显示,用户终端和云服务器均通过数据传输模块与控制器相互通信,本发明可实现对演唱音频和演唱情感综合评价得到演唱评价结果,同时,用户可通过移动终端实现与其他用户之间的互动。
4.通过上述的系统,能够实现评分和演唱者的互动,但是由于其对于具体的评价方法的改进不大,无法更加客观的给出相应的评价分数。
5.因此,为了更好的对音符进行精细化的切割,也为了能够给出更加客观公证的评价体系,本技术提出一种音符切割方法及基于该方法的视唱评价方法。


技术实现要素:

6.鉴于背景技术中存在的问题,本发明的目的在于提供一种音符切割方法及基于该方法的视唱评价方法,能够对音频完成精细化的音符切割,同时由于音频在切割后通过音频调整对齐,因此能够兼容整体节奏的超前和滞后,并且由于音频的精细化切割,在进行视听评价时,受到相邻声音影响越小,因此在各种音色下均能够保持高精度识别的打分效果。
7.为了实现上述目的,本发明提供了一种音符切割方法及基于该方法的视唱评价方法。
8.根据本技术的一个方面,本技术提供了一种音符切割方法,包括以下步骤:
9.将音频文件切分为多帧音频片段;
10.对所述多帧音频片段进行静音帧检测,并标记出所述多帧音频片段中的每一帧静音帧、同时将除去静音帧以外的各帧音频片段定义为非静音帧音频片段;
11.对各非静音帧音频片段进行音高检测和音高转换,并得到转换后的音高序列;
12.对各非静音帧音频片段进行音符起始点检测,并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列;
13.将所述转换后的音高序列按照所述音符起始点序列中的音符起始点进行分割并
得到多个音高组;
14.将每个音高组中数量最多的音高作为该音高组的音符,由所述多个音高组的音符组成视唱音符序列。
15.优选的,将音频文件切分为多帧音频片段包括步骤:
16.设定每帧音频片段的音频参数,其中所述音频参数包括声道类型和采样频率;
17.按照所述音频参数将所述音频文件切分为多帧音频片段。
18.优选的,对所述多帧音频片段进行静音帧检测,并标记出所述多帧音频片段中的每一帧静音帧、同时将除去静音帧以外的各帧音频片段定义为非静音帧音频片段,包括步骤:
19.设定静音帧的能量阈值;
20.计算每帧音频片段的能量值;
21.将每帧音频片段的能量值与所述能量阈值进行比较,将能量值小于等于所述能量阈值的音频片段标记为静音帧;
22.将除去静音帧以外的各帧音频片段定义为非静音帧音频片段。
23.优选的,静音帧的所述能量阈值设为0~0.1。
24.优选的,对各非静音帧音频片段进行音高检测和音高转换,并得到转换后的音高序列,包括步骤:
25.采用常数q变换对各非静音帧音频片段进行频率分析,并获得各非静音帧音频片段的频谱特征;
26.采用音高提取算法提取各非静音帧音频片段的基频,并将各非静音帧音频片段的基频作为该非静音帧音频片段的音高,由此得到由所有非静音帧音频片段的全部音高组成的初始音高序列;
27.对所述初始音高序列进行预处理、并得到预处理后的音高序列;
28.将预处理后的音高序列中的音高与钢琴的标准音进行转换,由此得到转换后的音高序列。
29.优选的,对所述初始音高序列进行预处理方式为:
30.当前后两帧的音高均为零时,将所述前后两帧并成一帧、且音高为零;
31.当前后两帧的音高偏差值超出预设的阀值时,将所述前后两帧的音高均设置成所述前后两帧的音高平均值。
32.优选的,将预处理后的音高序列中的音高与钢琴的标准音进行转换的转换公式为:note=69+12*log(f/440)/log(2),其中,f为预处理后的音高序列中的各音高的频率,note为钢琴音高。
33.优选的,对各非静音帧音频片段进行音符起始点检测,并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列,包括步骤:
34.计算各非静音帧音频片段的能量值和相位值;
35.根据各非静音帧音频片段的能量值和相位值找出所有的候选起始点;
36.对所有的候选起始点进行编号,并计算各候选起始点作为音符起始点的概率;
37.将各候选起始点的概率值与设定的概率阙值进行比对,当候选起始点的概率值大于所述概率阙值时,则该候选起始点确定为一个音符起始点,由此得到由所有的音符起始
点组成的音符起始点序列。
38.优选的,
39.对各非静音帧音频片段进行音符起始点检测、并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列,还包括步骤:对所述音符起始点序列中的所有的音符起始点进行后处理;
40.所述后处理方式为:合并时间间隔小于0.1秒的连续音符起始点、以及前后频率为零的音符起始点。
41.根据本技术的另一个方面,本技术提供了一种音符切割系统,用于实现上述任意一项所述的音符切割方法,所述音符切割系统包括:
42.音符第一切割模块,用于将音频文件切分为多帧音频片段;
43.静音帧检测模块,用于对所述多帧音频片段进行静音帧检测;
44.音高检测模块,用于对除去静音帧以外的各帧音频片段进行音高检测和音高转换、并得到转换后的音高序列;
45.音符起始点检测模块,用于对各非静音帧音频片段进行音符起始点检测、并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列;
46.音符第二切割模块,用于将所述转换后的音高序列按照所述音符起始点序列中的音符起始点进行分割并得到多个音高组;
47.音高识别模块,用于识别出每个音高组中数量最多的音高、并得到视唱音符序列。
48.根据本技术的另一个方面,本技术还提供了一种视唱评价方法,包括以下步骤:
49.将视唱音频按照上述中任意一项所述的音符切割方法进行切割、并得到视唱音符序列;
50.将所述视唱音符序列与乐谱音符串进行对齐;
51.根据所述视唱音符序列与乐谱音符串对齐后的结果,计算视唱音频的视唱正确率并给出视唱评价。
52.优选的,
53.将所述视唱音符序列与乐谱音符串进行对齐,包括步骤:
54.将所述视唱音符序列中的音符进行编号、并得到a=(a1,a2,...,am),其中m为所述视唱音符序列中的音符个数;
55.将所述乐谱音符串中的音符进行编号、并得到b=(b1,b2,...,bn),其中n为所述乐谱音符串中的音符个数;
56.找出所述视唱音符序列与所述乐谱音符串之间的最长配匹字串c=(c1,c2,...,ck),其中k为所述视唱音符序列与所述乐谱音符串的音符对齐的个数;
57.找出所述视唱音符序列中漏唱的音符个数并记为u;
58.找出所述视唱音符序列中多唱的音符个数并记为v;
59.找出所述视唱音符序列中唱错的音符个数并记为m-v-k=n-u-k;
60.所述视唱音频的视唱正确率的计算公式为:
61.视唱正确率=k/(m+u)*100%;或者
62.视唱正确率=k/(n+v)*100%。
63.本发明的有益效果如下:
64.(1)给出一种音符切割方法,其能够快速完成对于音符的精细化切割,并且较完美的保留原始音频的声学特征,有利于对音符进行再处理;
65.(2)通过音符串对齐能够对演唱者在演唱过程中的微小提前和滞后进行精确的调整,使得最后的评价更加的精准。
66.(3)该视唱评价方法基于音符的精细化切割,切割后的音符串,在评价时能够避免相邻音符串的干扰,因此使得该评价方法在各种音色下都能够实现高精度的打分效果。
附图说明
67.图1是本发明中音符切割方法的流程图;
68.图2是本发明中视唱评价方法的流程图。
具体实施方式
69.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
71.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
72.下面参照附图来详细说明根据本技术的音符切割方法、切割系统及基于该方法的视唱评价方法。
73.如图1所示的一种音符切割方法,包括以下步骤:
74.步骤1-1,将音频文件切分为多帧音频片段;
75.步骤1-2,对所述多帧音频片段进行静音帧检测,并标记出所述多帧音频片段中的每一帧静音帧、同时将除去静音帧以外的各帧音频片段定义为非静音帧音频片段;
76.步骤1-3,对各非静音帧音频片段进行音高检测和音高转换,并得到转换后的音高序列;
77.步骤1-4,对各非静音帧音频片段进行音符起始点检测,并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列;
78.步骤1-5,将所述转换后的音高序列按照所述音符起始点序列中的音符起始点进行分割并得到多个音高组;
79.步骤1-6,将每个音高组中数量最多的音高作为该音高组的音符,由所述多个音高组的音符组成视唱音符序列。
80.通过将音频文件进行分帧切割,切割采样精度高,颗粒小,现有的按照时长切割后
对比相似度的方式,能够使得在后续对比评分过程中对比更加精细;通过高音转化,采用转化后的音高,避免了由于声源类型(例如地方口音等)影响评价的准确性,配合采用按照音符起点进行音高划分,在后续评价过程中更加准确和精细,能够对一段歌词中进行细致划分,相比整段对比更精细。
81.步骤1-1中将音频文件切分为多帧音频片段包括步骤:
82.设定每帧音频片段的音频参数,其中所述音频参数包括声道类型和采样频率;具体的,声道类型可以选择单声道或双声道等,可以根据音频文件类型确定,进行提取时提取的为单声道,采样频率可选可以根据需要选择,优选为44100,在此频率下对音频文件的适应性好。
83.按照所述音频参数将所述音频文件切分为多帧音频片段。
84.例如:可以采用下述方式进行操作,将输入的视唱音频文件,使用ffmpeg进行音频参数设置。具体设置为音频参数采用单声道、频率44.1k赫兹,每秒44100个采样。具体转换命令为:ffmpeg-isrc.mp3-ac1-ar44100-ydest.mp3,其中-ac1代表单声道,-ar44100代表采样率44100(根据需要选择采样率,最好高于44100此时精度好适配性好。
85.转换之后的具体信息为每一帧的帧长取512、1024、2048或4096个点,优选的选取2048个点,帧移为256、512、1024个采样点,优选的采用512个采样点,每秒约86帧。
86.在帧长2048和帧移512的条件下分帧过程对于音频文件的适应性好,设置过高造成结果输出过慢效率低,过低的话会对于低频适配性不好。
87.步骤1-2中对所述多帧音频片段进行静音帧检测,并标记出所述多帧音频片段中的每一帧静音帧、同时将除去静音帧以外的各帧音频片段定义为非静音帧音频片段,包括步骤:
88.设定静音帧的能量阈值;阈值具体指强度或响度;
89.计算每帧音频片段的能量值;
90.将每帧音频片段的能量值与所述能量阈值进行比较,将能量值小于等于所述能量阈值的音频片段标记为静音帧;
91.将除去静音帧以外的各帧音频片段定义为非静音帧音频片段。
92.具体的,静音帧检测可以采用语音活动检测(voiceactivitydetection,vad),vad又称语音端点检测或语音边界检测,先把静音帧检测检测出来,对静音帧跳过后面的处理,vad主要有基于能量、频域、倒谱、谐波、长时信息几种特征提取方式;这里采用的是能量提取,采用能量提取的结果更优更准确。
93.具体方法可以参考:
94.首先,假设初始时人是没有演唱的,计算8帧初始声音的平均能量作为基线,这个能量相当于底噪。若进入的一帧的均方根大于这个基线,认为有人演唱,否则认为无人演唱。音频的开头、结尾以及遇到休止符会出现无人声唱的情况,将这种帧称为静音帧,把帧每个点能量值与一预先设定的阈值进行比较,小于阀值被认为是静音帧,频率记为0赫兹。
95.优选的,静音帧的所述能量阈值设为0~0.1。采用上述范围适应性最好,过大会造成判断静音的准确性,可能将人声误认为是静音造成结果偏差。
96.步骤1-3中对各非静音帧音频片段进行音高检测和音高转换,并得到转换后的音高序列,包括步骤:
97.采用常数q变换对各非静音帧音频片段进行频率分析,并获得各非静音帧音频片段的频谱特征;
98.常数q变换(cqt):指中心频率按指数规律分布,滤波带宽不同、但中心频率与带宽比为常量q的滤波器组。它频谱的横轴频率不是线性的,而是基于log2为底的,并且可以根据谱线频率的不同该改变滤波窗长度,所以性能较好。由于cqt与音阶频率的分布相同,所以通过计算音乐信号的cqt谱,可以直接得到音乐信号在各音符频率处的振幅值,非常适合音乐音频数据信号处理,本发明中常数q变换中采用递归次抽样法进行变换,其中采样频率fs在512、1024、2048和4096中选取或者其他适合的频率可以根据需要进行选择;优选的采用2048,采用上述的频率的优点是适用性好。
99.采用音高提取算法提取各非静音帧音频片段的基频,并将各非静音帧音频片段的基频作为该非静音帧音频片段的音高,由此得到由所有非静音帧音频片段的全部音高组成的初始音高序列。
100.cep(倒谱基音检测方法):是将音频信号放在频域范围内,通过计算快速傅立叶变换,获取泛音信息,从而提取基频,具体是将音频信号的频谱取对数后,经过离散傅立叶逆变换取倒谱,再通过倒谱峰值的提取确定基础频率位置,从而获得音高频率数值f。本发明中具体采用的采样频率为512、1024、2048或4096,也可以选择其他常用的频率,优选的采用2048,采用上述的频率的优点是适用性好。
101.采取cqt和cep方法配合使用,输出的结果准确度高;并且能够直接得到音频信号在各音符频率处的振幅值,对于音频处理便捷。
102.对所述初始音高序列进行预处理、并得到预处理后的音高序列;
103.将预处理后的音高序列中的音高与标准音(可以是钢琴标准音等)进行转换,由此得到转换后的音高序列。
104.例如,使用音高提取算法检测出每片音帧的音高检测出来,并转换为钢琴的88个标准音。声音是由发声体发出的一系列频率振幅各不相同的震动复合而成,这些震动中有一个频率最低的震动,由它发出的音就是基音,其他就是泛音,基音决定音高。采用常数q变换(constantqtransform,cqt)进行频率分析获得频谱特征,cqt变换低频具有较高的分辨率;采用音高提取算法cep选择基频作为每帧的音高。
105.步骤1-4中对所述初始音高序列进行预处理方式为:
106.当前后两帧的音高均为零时,将所述前后两帧并成一帧、且音高为零;
107.当前后两帧的音高偏差值超出预设的阀值,可以选择50%,通过这样的处理能够避免噪音干扰,结果更准确时,将所述前后两帧的音高均设置成与所述前后两帧的音高平均值,例如,相邻的1/2/3帧,其中第2帧的音高明显高于1和3,则将2视为非常高音高,将第2帧音高删除,然后计算第1和3音高的平均值作为第二帧音高,这样处理能够有效消除噪音干扰。
108.具体的,将预处理后的音高序列中的音高与标准音进行转换的转换公式为:note=69+12*log(f/440)/log(2),其中,f为预处理后的音高序列中的各音高的频率,note为标准音高,例如:midi音高。
109.步骤1-5中对各非静音帧音频片段进行音符起始点检测,并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列,包括步骤:
110.计算各非静音帧音频片段的能量值和相位值;
111.根据各非静音帧音频片段的能量值和相位值找出所有的候选起始点;
112.对所有的候选起始点进行编号,并计算各候选起始点作为音符起始点的概率;
113.将各候选起始点的概率值与设定的概率阙值进行比对,当候选起始点的概率值大于等于所述概率阙值,则该候选起始点确定为一个音符起始点,由此得到由所有的音符起始点组成的音符起始点序列。具体的阈值选择0.75-0.85在此范围内识别准确度更高。
114.音符起始点检测一直是音乐信息检索的难点问题,本发明采用qmul算法,这个基于信号的算法,它结合了能量(观察信号的能量)和相位(观察fft状态偏差)所共同构成复域。它包括一个自适应增白组件,该组件平滑了信号的时间和频率变化,从而通过“将每个频段的幅度引入一个类似的动态范围,使振幅较大的峰值更加明显。该算法跟进复域内的峰值计算每个频域内发生突发事件的可能性,并使用峰值选取算法来标记onset。检测音符起始点算法得到onset序列,onset为1表示候选起始点。
115.onset序列样例:(序号时间戳概率阙值)比如(1118956320.83),(2118956990.60),

116.优选的,对各非静音帧音频片段进行音符起始点检测、并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列,还包括步骤:对所述音符起始点序列中的所有的音符起始点进行后处理;
117.所述后处理方式为:合并时间间隔小于0.1秒的连续音符起始点、以及前后频率为零的音符起始点。
118.通过上述处理方式可以消除非人声的背景音等干扰,提高准确性。
119.本发明提供了一种音符切割系统,用于实现上述的音符切割方法,所述音符切割系统包括:
120.音符第一切割模块,用于将音频文件切分为多帧音频片段;
121.静音帧检测模块,用于对所述多帧音频片段进行静音帧检测;
122.音高检测模块,用于对除去静音帧以外的各帧音频片段进行音高检测和音高转换、并得到转换后的音高序列;
123.音符起始点检测模块,用于对各非静音帧音频片段进行音符起始点检测、并得到由所有非静音帧音频片段中的音符起始点组成的音符起始点序列;
124.音符第二切割模块,用于将所述转换后的音高序列按照所述音符起始点序列中的音符起始点进行分割并得到多个音高组;
125.音高识别模块,用于识别出每个音高组中数量最多的音高、并得到视唱音符序列。
126.如图2所示,本发明提供了一种视唱评价方法,包括以下步骤:
127.步骤2-1,将视唱音频按照上述中所述的音符切割方法进行切割、并得到视唱音符序列;
128.步骤2-2,将所述视唱音符序列与乐谱音符串进行对齐;
129.步骤2-3,根据所述视唱音符序列与乐谱音符串对齐后的结果,计算视唱音频的视唱正确率并给出视唱评价。
130.步骤2-2中将所述视唱音符序列与乐谱音符串进行对齐,包括步骤:
131.将所述视唱音符序列中的音符进行编号、并得到a=(a1,a2,...,am),其中m为所述
视唱音符序列中的音符个数;
132.将所述乐谱音符串中的音符进行编号、并得到b=(b1,b2,...,bn),其中n为所述乐谱音符串中的音符个数;
133.找出所述视唱音符序列与所述乐谱音符串之间的最长配匹字串c=(c1,c2,...,ck),其中k为所述视唱音符序列与所述乐谱音符串的音符对齐的个数,其中对齐也包含将音高对齐。
134.步骤2-3的具体步骤为:
135.找出所述视唱音符序列中漏唱的音符个数并记为u;
136.找出所述视唱音符序列中多唱的音符个数并记为v;
137.找出所述视唱音符序列中唱错的音符个数并记为m-v-k=n-u-k;
138.所述视唱音频的视唱正确率的计算公式为:
139.视唱正确率=k/(m+u)*100%;或者
140.视唱正确率=k/(n+v)*100%。
141.下面具体说明对齐及评价方式:
142.音符串对齐的输入是音符切割后形成唱音符序列a=(a1,a2,...,am)和乐谱音符串b=(b1,b2,...,bn)。采用动态规划算法之一-尼德曼-翁施(needleman-wunsch,nw)算法来寻找最长配匹字串c=(c1,c2,...,ck)。c序列中每个音符在a和b二个序列中都出现并且次序相同,但可以不连续。二个音符串a和b对齐后出现后,每个音符会出现四种情况:
143.a)共有k个音符对齐;
144.b)a中出现空缺,即漏唱,在a序列相应位置补上
‘‑’
。假设漏唱了u个音(即a序列补了u个
‘‑’
);
145.c)b中出现空缺,即多唱,在b序列相应位置补上
‘‑’
。假设多唱了v个音(即b序列补了v个
‘‑’
);
146.d)其他的音符属于不匹配,即唱错。不匹配数为m-v-k=n-u-k。
147.不难看出:m+u=n+v,就是说分别补上漏唱和多唱数量后,二个音符串数量变成一样长;
148.唱错的音符数=漏唱数(u个)+多唱数(v个)+不匹配数(m-v-k)=m+u-k;例如,音高不足。
149.视唱正确率计算公式如下:
150.视唱正确率:k/(m+u)*100%。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1