一种基于深度学习的中小学演奏评分方法及系统 |
|||||||
申请号 | CN202311758565.1 | 申请日 | 2023-12-20 | 公开(公告)号 | CN117746901A | 公开(公告)日 | 2024-03-22 |
申请人 | 南京光辉互动网络科技股份有限公司; | 发明人 | 刘云光; 尚兴年; | ||||
摘要 | 本 发明 公开了一种基于 深度学习 的中小学演奏评分方法及系统,包括S1、收集学生录音进行噪声提取和训练;S2、收集相应 乐器 的演奏声作为训练样本,随机筛选学生考试乐器演奏的音频作为测试样本,并训练神经卷积网络的输出模型结构;S3、对学生的录音、演奏题目的xml文件和标准的泛音样本进行处理;S4、采用多维度评价模 块 进行打分,并通过输出模块将多维度评价模块的分数根据加权值进行汇总,得到学生演奏乐器的最终成绩。本发明提出的基于深度学习的音乐演奏评分系统解决了 现有技术 的多个 缺陷 。通过自动化和智能化的方法提高了评分的效率和准确性。 | ||||||
权利要求 | 1.一种基于深度学习的中小学演奏评分系统,其特征在于,包括 |
||||||
说明书全文 | 一种基于深度学习的中小学演奏评分方法及系统技术领域[0001] 本发明涉及深度学习技术领域,尤其涉及一种基于深度学习的中小学演奏评分方法及系统。 背景技术[0002] 在传统的中小学艺术素质测评系统中,尤其是音乐演奏评分方面,通常依赖于人工评委的主观判断,这种方法不仅耗时而且容易受到个人偏好和情绪的影响,从而导致评分的不一致性和不准确性。此外,传统评分方法在捕捉和评估演奏的各个细微方面,例如音准、节奏、音色和表现力方面也存在限制。往往忽略了演奏的动态和情感表达,这对于全面理解和评价一个音乐演奏是非常重要的。同时,传统方法在提供全面、客观和一致性的评估方面存在局限,特别是在处理大量学生演奏时。因此,如何提供一种基于深度学习的中小学演奏评分方法及系统是本领域技术人员亟需解决的问题。 发明内容[0003] 本发明的一个目的在于提出一种基于深度学习的中小学演奏评分方法及系统,本发明提出的基于深度学习的音乐演奏评分系统解决了现有技术的多个缺陷。通过自动化和智能化的方法提高了评分的效率和准确性。 [0007] 多维度评价模块,用于根据曲目信息,对预处理后的学生演奏音频进行多维度评价,所述多维度评价包括对乐器种类、音高评分、节奏评分、完整度评分和感情评分; [0008] 识别模块,用于对演奏音频使用的乐器做智能识别分类; [0009] 输出模块,用于将多维度评价的各维度分数和乐器识别结果做加权运算,最终输出学生演奏得分。 [0010] 可选的,包括如下方法步骤: [0011] S1、收集学生录音进行噪声提取和训练; [0012] S2、收集相应乐器的演奏声作为训练样本,随机筛选学生考试乐器演奏的音频作为测试样本,并训练神经卷积网络的输出模型结构; [0013] S3、对学生的录音、演奏题目的xml文件和标准的泛音样本进行处理; [0014] S4、采用多维度评价模块进行打分,并通过输出模块将多维度评价模块的分数根据加权值进行汇总,得到学生演奏乐器的最终成绩。 [0015] 可选的,所述S1具体包括: [0016] S11、将学生录音断转化为单声道、16位的wav音频格式; [0017] S12、将学生录音进行噪声提取并分类标注:噪声1、噪声2、…噪声n,得到噪声样本; [0018] S13、将纯净学生录音进行分类标注:纯净音1、纯净音2、…纯净音n,得到纯净音样本; [0021] purgain=rand(‑24,24)dB; [0022] noisegain=rand(‑12,12)dB; [0023] noiseFramen=fn*purgain+noise[rand(0,noise_len)[0:frame_len]*noisegain]; [0024] 其中,noiseFramen表示第n个带噪声的帧信号,fn表示第n个纯净音频帧,purgain、noisegain分别表示纯净音和噪声的随机增益值,noise_len表示噪声种类的长度,frame_len表示帧长度; [0025] 循环执行到纯净音的帧片段都处理结束,得到所有随机生成的不同噪声类型和噪声强度的帧信号。 [0026] 可选的,所述噪声训练具体包括采用循环神经网络技术方案,深度学习框架采用keras、tensorflow,音频处理算法采用librosa,将噪声帧数据和纯净音数据分别进行DCT变换,得到BFCC巴克频率倒谱系数,计算MFCC特征和谱质心、谱衰减、基频周期特征系数,输入到由密集层和GRU层组成的训练网络中进行多轮次训练,得到一个过滤噪声的网络模型,并将网络模型保存到训练模块中用于后续的测试和运行。 [0027] 可选的,所述S2具体包括: [0028] S21、将训练样本和测试样本处理成16位、单声道、16khz采样率的wav文件并裁切得到样本单元的数据结构; [0029] S22、将数据结构进行MFCC梅尔倒谱系数转换,得到梅尔倒谱频带数据量的样本单元数据结构,并进行拟合得到单次训练样本数据结构; [0030] S23、对每个乐器样本单元的类别进行oneHot转换,并且扩展到与样本单元数据结构一致的形态; [0033] 可选的,所述S3具体包括: [0034] S31、将学生的录音通过S1中的训练模块降噪,对降噪后的学生音频采用带通滤波器进行信号增强,得到最终学生录音预处理音频; [0035] S32、将演奏题目中的xml数据文件进行解析,得到曲目基础信息,所述曲目基础信息包括小节数、每小节拍数、每拍的时值、调性、音符的时值与频率序列,对xml数据进行填充或压缩,将xml信息转化成时域下各个音符频率的序列:XmlSeq; [0036] S33、将降噪后的学生wav音频通过pyin技术提取基频序列,得到与xml相同时间轴的频率序列:StuSeq; [0037] S34、将标准的泛音样本进行响度提取,得到每个采样点的振幅数据: [0038] sample_loundness1,sample_loundness2,...sample_loundnessn; [0039] 得到泛音时域范围下的声音振幅序列; [0040] S35、同样的处理方法将学生音频进行响度提取,得到学生时域范围下的振幅序列。 [0041] 可选的,所述完整度评价参考XmlSeq标准曲谱序列,对比学生演奏序列,将学生演奏序列StuSeq取掩码,将静音掩码提取,计算静音掩码的分布: [0042] 将XmlSeq标准曲谱序列中本身是静音的部分过滤; [0043] 将过滤后的静音序列进行小节间隙的换气识别,如果分布符合周期性的、并且间隔在预设范围之间,将静音序列纳入正常演奏换气序列,不计入扣分部分; [0044] 将最终过滤后的静音序列进行所属小节和所属拍点的归档,将连续丢帧数量*拍点总帧数作为扣分区间,即拍点所有帧全部丢失为全扣,最终乘以完整度扣分系数即为完整度总扣分; [0045] 所述音高评价参考XmlSeq标准曲谱序列,对比学生演奏序列,将XmlSeq和StuSeq两个序列进行归一化处理,让两个序列值范围固定在相同的频率维度,采用逐小节归一化处理进行校对,如果校对异常,就会用逐小节归一化处理的方式处理序列,将两个序列按照小节和拍点进行切分,然后通过DTW算法将每小节序列进行对齐操作,将逐小节对齐的序列进行逐帧的音高对比: [0046] 标准拍的帧序列是xf1,xf2,xf3,...xfn; [0047] 学生拍点帧序列sf1,sf2,sf3,...sfn; [0048] 将两个序列进行标准均值对比: [0049] [0050] [0051] 其中, 分别表示标准曲谱和学生演奏的一个拍点的序列标准均方差,两个均 方 差 越接 近 说 明 演 奏 的 越 平 稳 ,取 序 列 的均 值xf sf 两个均值越接近说明音高越准,mean ‑mean 结果是负数时,认为是 音高降低,当结果为正数时,认为音高提升; [0052] 将音高平稳度和准度两个标准进行扣分设置,,当标准均方差两者的绝对值差在此范围内,进行平稳度扣分,当均值差的绝对值范围在预设倍的标准均值范围内,进行准度扣分,两项指标乘以扣分系数及指标权重配比,得到每个拍点的音高扣分; [0053] 所述节奏评价对于序列的处理方式同音高,将对齐后的XmlSeq和StuSeq序列直接进行DTW路线对比,得到每个拍点每个帧偏移的位置分布,并得到帧偏移序列; [0054] shf1,sf2,sf3,...sfn; [0055] 将帧偏移按小节为单位进行归档,每小节的帧偏移计算标准均方差: [0056] [0057] 得到的 值越小说明当前小节的节奏偏移越稳定,同时计算小节节奏偏移均值shf shfmean 的值代表小节节奏点偏移的平均帧数,当mean <小节拍点 帧数*10%范围认定当前小节节奏踩点是准确的,在此范围外扣分,节奏评价同样包含了节奏平稳度和节奏准确度两个指标,根据指标的配置和扣分系数权重配置,得到每个小节节奏的扣分。 [0058] 可选的,所述泛音响度参考序列和学生演奏响度序列,根据完整度、音高和节奏的DTW校准,将泛音响度参考序列和学生演奏响度序列剔除静音掩码后与泛音进行时域上的重新校准,得到每个小节、每一拍的声强对比序列,将校准后的两个声强序列进行归一化处理,得到分贝刻度为[0,1]的序列,将每一拍对应的采样点进行归档,得到每一拍声强的子序列: [0059] batch1:[ln1,ln2,ln3,...lnn]; [0060] 得到泛音和学生音频声强每一拍的序列: [0061] sample_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]; [0062] stu_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]; [0063] 将两个序列同时做声强趋势和差值量化,拍的声强变化趋势及拍升高变化差值,对于声强趋势可以直接进行拍点对比,升代表1,将代表‑1,平代表0,将两个序列每个拍进行且运算和乘法运算: [0064] result_upi=sample_upi AND stu_upi*(sample_upi*stu_upi); [0065] 其中,result_upi结果代表的是第i拍,两个音频声音强度变化趋势,如果非负数代表趋势一致,如果是负数代表趋势相反; [0066] 对于声强差值的运算,采用直接计算拍声强均值间的差值: [0067] result_sample_shifti=sample_shifti‑sample_shifti‑1; [0068] 学生音频做同样的序列化操作: [0069] result_stu_shifti=stu_shifti‑stu_shifti‑1; [0070] 得到两个声强拍点间差值的序列,两个序列每个点都进行差值运算,并将差值运算的结果求标准均方差,得到整体拍点声强幅度变化的趋势: [0071] shift_diff i=result_sample_shifti‑result_stu_shifti; [0072] [0073] 其中, 是整首曲子所有拍点声强幅度变化的标准均方差,此结果越小代表的两首曲子整体声音强度变化趋势一致。 [0074] 本发明的有益效果是: [0075] 本发明提出的基于深度学习的音乐演奏评分系统解决了现有技术的多个缺陷。通过自动化和智能化的方法提高了评分的效率和准确性。系统能够全面分析音频,客观评估音准、节奏和音色等多个维度,从而提供更全面和一致的评估。这减少了人工评分的主观性和时间成本,使评估过程更为公正、高效。对于大规模的学生演奏评估,这种系统尤为有益,能够为中小学艺术教育带来更高的质量和标准。附图说明 [0077] 图1为本发明提出的一种基于深度学习的中小学演奏评分方法及系统的系统流程图; [0078] 图2为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中噪声训练的流程图。 [0079] 图3为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中网络的输出模型结构的流程图; [0080] 图4为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中乐器的识别的流程图; [0081] 图5为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中裁剪补偿的流程图; [0082] 图6为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中完整度评价的实施结果图; [0083] 图7为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中音高评价的实施结果图; [0084] 图8为本发明提出的一种基于深度学习的中小学演奏评分方法及系统实施例1中节奏评价的实施结果图。 具体实施方式[0085] 现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。 [0086] 参考图1,一种基于深度学习的中小学演奏评分系统,包括 [0087] 训练模块,用于对各种乐器的声音和环境噪声进行深度学习训练,得到乐器分类模型和降噪模型,并输送至预处理模块; [0088] 预处理模块,用于处理特定环境下的学生演奏音频和曲目信息,处理内容包括结合乐器分类模型和降噪模型对演奏音频、midi音和泛音的AI降噪、信号增强、信号转换、归一处理以及xml解析; [0089] 多维度评价模块,用于根据曲目信息,对预处理后的学生演奏音频进行多维度评价,多维度评价包括对乐器种类、音高评分、节奏评分、完整度评分和感情评分; [0090] 识别模块,用于对演奏音频使用的乐器做智能识别分类; [0091] 输出模块,用于将多维度评价的各维度分数和乐器识别结果做加权运算,最终输出学生演奏得分。 [0092] 本实施方式中,包括如下方法步骤: [0093] S1、收集学生录音进行噪声提取和训练; [0094] S2、收集相应乐器的演奏声作为训练样本,随机筛选学生考试乐器演奏的音频作为测试样本,并训练神经卷积网络的输出模型结构; [0095] S3、对学生的录音、演奏题目的xml文件和标准的泛音样本进行处理; [0096] S4、采用多维度评价模块进行打分,并通过输出模块将多维度评价模块的分数根据加权值进行汇总,得到学生演奏乐器的最终成绩。 [0097] 本实施方式中,S1具体包括: [0098] S11、将学生录音断转化为单声道、16位的wav音频格式; [0099] S12、将学生录音进行噪声提取并分类标注:噪声1、噪声2、…噪声n,得到噪声样本; [0100] S13、将纯净学生录音进行分类标注:纯净音1、纯净音2、…纯净音n,得到纯净音样本; [0101] S14、采用噪声样本与纯净音样本随机组合并随机设置信噪比的方式生成带噪音频片段,用来输入模型,快速拟合各种噪声环境下的特征。 [0102] 本实施方式中,S14具体包括将纯净音样本进行切割,得到纯净音的帧片段,每个帧片段随机选择一种噪声进行噪声训练,并设置随机信噪比,得到包含不同噪声类型和噪声强度的帧信号: [0103] purgain=rand(‑24,24)dB; [0104] noisegain=rand(‑12,12)dB; [0105] noiseFramen=fn*purgain+noise[rand(0,noise_len)[0:frame_len]*noisegain]; [0106] 其中,noiseFramen表示第n个带噪声的帧信号,fn表示第n个纯净音频帧,purgain、noisegain分别表示纯净音和噪声的随机增益值,noise_len表示噪声种类的长度,frame_len表示帧长度; [0107] 循环执行到纯净音的帧片段都处理结束,得到所有随机生成的不同噪声类型和噪声强度的帧信号。 [0108] 参考图2,本实施方式中,噪声训练具体包括采用循环神经网络技术方案,深度学习框架采用keras、tensorflow,音频处理算法采用librosa,将噪声帧数据和纯净音数据分别进行DCT变换,得到BFCC巴克频率倒谱系数,计算MFCC特征和谱质心、谱衰减、基频周期特征系数,输入到由密集层和GRU层组成的训练网络中进行多轮次训练,得到一个过滤噪声的网络模型,并将网络模型保存到训练模块中用于后续的测试和运行。 [0109] 本实施方式中,S2具体包括: [0110] S21、将训练样本和测试样本处理成16位、单声道、16khz采样率的wav文件并裁切得到样本单元的数据结构; [0111] S22、将数据结构进行MFCC梅尔倒谱系数转换,得到梅尔倒谱频带数据量的样本单元数据结构,并进行拟合得到单次训练样本数据结构; [0112] S23、对每个乐器样本单元的类别进行oneHot转换,并且扩展到与样本单元数据结构一致的形态; [0113] S24、采用神经卷积网络架构对训练数据进行处理,使用神经卷积网络层将数据特征图降维处理,输入到密集层进行近似预测,得到最终预测结果数据,构成神经卷积网络的输出模型结构。 [0114] 本实施方式中,演奏题目的xml文件是由专业的打谱软件将制作好的midi导出的谱信息文件,泛音样本是由演奏题的命题人员现场录制的样本音频,用来作为演奏情感判定的标准。 [0115] 本实施方式中,S3具体包括: [0116] S31、将学生的录音通过S1中的训练模块降噪,对降噪后的学生音频采用带通滤波器进行信号增强,得到最终学生录音预处理音频; [0117] S32、将演奏题目中的xml数据文件进行解析,得到曲目基础信息,曲目基础信息包括小节数、每小节拍数、每拍的时值、调性、音符的时值与频率序列,对xml数据进行填充或压缩,将xml信息转化成时域下各个音符频率的序列:XmlSeq; [0118] S33、将降噪后的学生wav音频通过pyin技术提取基频序列,得到与xml相同时间轴的频率序列:StuSeq; [0119] S34、将标准的泛音样本进行响度提取,得到每个采样点的振幅数据: [0120] sample_loundness1,sample_loundness2,...sample_loundnessn; [0121] 得到泛音时域范围下的声音振幅序列; [0122] S35、同样的处理方法将学生音频进行响度提取,得到学生时域范围下的振幅序列。 [0123] 本实施方式中,完整度评价参考XmlSeq标准曲谱序列,对比学生演奏序列,将学生演奏序列StuSeq取掩码,将静音掩码提取,计算静音掩码的分布: [0124] 将XmlSeq标准曲谱序列中本身是静音的部分过滤; [0125] 将过滤后的静音序列进行小节间隙的换气识别,如果分布符合周期性的、并且间隔在预设范围之间,将静音序列纳入正常演奏换气序列,不计入扣分部分; [0126] 将最终过滤后的静音序列进行所属小节和所属拍点的归档,将连续丢帧数量*拍点总帧数作为扣分区间,即拍点所有帧全部丢失为全扣,最终乘以完整度扣分系数即为完整度总扣分; [0127] 音高评价参考XmlSeq标准曲谱序列,对比学生演奏序列,将XmlSeq和StuSeq两个序列进行归一化处理,让两个序列值范围固定在相同的频率维度,采用逐小节归一化处理进行校对,如果校对异常,就会用逐小节归一化处理的方式处理序列,将两个序列按照小节和拍点进行切分,然后通过DTW算法将每小节序列进行对齐操作,将逐小节对齐的序列进行逐帧的音高对比: [0128] 标准拍的帧序列是xf1,xf2,xf3,...xfn; [0129] 学生拍点帧序列sf1,sf2,sf3,...sfn; [0130] 将两个序列进行标准均值对比: [0131] [0132] [0133] 其中, 分别表示标准曲谱和学生演奏的一个拍点的序列标准均方差,两个均 方 差越 接 近 说 明 演 奏的 越 平 稳 ,取 序 列 的均 值xf sf 两个均值越接近说明音高越准,mean ‑mean 结果是负数时,认为是 音高降低,当结果为正数时,认为音高提升; [0134] 将音高平稳度和准度两个标准进行扣分设置,,当标准均方差两者的绝对值差在此范围内,进行平稳度扣分,当均值差的绝对值范围在预设倍的标准均值范围内,进行准度扣分,两项指标乘以扣分系数及指标权重配比,得到每个拍点的音高扣分; [0135] 节奏评价对于序列的处理方式同音高,将对齐后的XmlSeq和StuSeq序列直接进行DTW路线对比,得到每个拍点每个帧偏移的位置分布,并得到帧偏移序列; [0136] shf1,sf2,sf3,...sfn; [0137] 将帧偏移按小节为单位进行归档,每小节的帧偏移计算标准均方差: [0138] [0139] 得到的 值越小说明当前小节的节奏偏移越稳定,同时计算小节节奏偏移均值shf shfmean 的值代表小节节奏点偏移的平均帧数,当mean <小节拍点 帧数*10%范围认定当前小节节奏踩点是准确的,在此范围外扣分,节奏评价同样包含了节奏平稳度和节奏准确度两个指标,根据指标的配置和扣分系数权重配置,得到每个小节节奏的扣分。 [0140] 本实施方式中,泛音响度参考序列和学生演奏响度序列,根据完整度、音高和节奏的DTW校准,将泛音响度参考序列和学生演奏响度序列剔除静音掩码后与泛音进行时域上的重新校准,得到每个小节、每一拍的声强对比序列,将校准后的两个声强序列进行归一化处理,得到分贝刻度为[0,1]的序列,将每一拍对应的采样点进行归档,得到每一拍声强的子序列: [0141] batch1:[ln1,ln2,ln3,...lnn]; [0142] 得到泛音和学生音频声强每一拍的序列: [0143] sample_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]; [0144] stu_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]; [0145] 将两个序列同时做声强趋势和差值量化,拍的声强变化趋势及拍升高变化差值,对于声强趋势可以直接进行拍点对比,升代表1,将代表‑1,平代表0,将两个序列每个拍进行且运算和乘法运算: [0146] result_upi=sample_upi AND stu_upi*(sample_upi*stu_upi); [0147] 其中,result_upi结果代表的是第i拍,两个音频声音强度变化趋势,如果非负数代表趋势一致,如果是负数代表趋势相反; [0148] 对于声强差值的运算,采用直接计算拍声强均值间的差值: [0149] result_sample_shifti=sample_shifti‑sample_shifti‑1; [0150] 学生音频做同样的序列化操作: [0151] result_stu_shifti=stu_shifti‑stu_shifti‑1; [0152] 得到两个声强拍点间差值的序列,两个序列每个点都进行差值运算,并将差值运算的结果求标准均方差,得到整体拍点声强幅度变化的趋势: [0153] shift_diff i=result_sample_shifti‑result_stu_shifti; [0154] [0155] 其中, 是整首曲子所有拍点声强幅度变化的标准均方差,此结果越小代表的两首曲子整体声音强度变化趋势一致。 [0156] 实施例1: [0157] 参考图6,完整度评价是参考XmlSeq标准曲谱序列,对比学生演奏序列,将学生演奏序列StuSeq取掩码(Mask),将静音掩码提取,然后计算静音掩码的分布,计算静音掩码分布的方法:1、将XmlSeq标准曲谱序列中本身是静音的部分过滤,因为曲谱中可能存在空拍、占位符的情况(乐曲中本来不需要演奏的部分)。过滤后的静音序列就是潜在的完整性扣分点;2、将过滤后的静音序列进行小节间隙的“换气”识别,因为吹奏类型的乐器是需要学生在部分小节末换气的(弹奏的乐器不需要),所以结合乐器识别的类型,吹奏类乐器演奏的时候提取小节末静音序列的分布,如果分布符合周期性的、并且间隔在250ms~1000ms之间,将这部分静音序列纳入正常演奏“换气”序列,不计入扣分部分;3、将最终过滤后的静音序列进行所属小节和所属拍点的归档,将连续丢帧数量[0.5,1]*拍点总帧数作为扣分区间(丢帧),即拍点所有帧全部丢失为全扣,最终乘以完整度扣分系数即为完整度总扣分:integrity_dp。 [0158] 参考图7,音高评价是参考XmlSeq标准曲谱序列,对比学生演奏序列,将XmlSeq和StuSeq两个序列进行归一化处理,让两个序列值范围固定在相同的频率维度,即纵轴值都是0~1的范围,这样更合理和直观的评价音高差异,同时也避免学生演奏乐器的时候,因吹奏的气力或者弹奏调性不同造成乐器音高的八度变化影响音高比对,归一化让算法更具有鲁棒性。注意,实际学生演奏过程中可能存在演奏的前后使用了不同的八度(学生突然用力吹奏或者修改弹奏调性),这在归一处理的过程中会造成序列的不对称,影响音高客观对比。针对这种情况,算法中采用逐小节归一化处理进行校对,如果校对异常,就会用逐小节归一化处理的方式处理序列。 [0159] 将音高平稳度和准度两个标准进行扣分设置: 当标xf 准均方差两者的绝对值差在此范围内,按照(0,1)*拍点分值进行平稳度扣分;abs(mean ,sf xf mean )∈[0.2,1]*mean ,当均值差的绝对值范围在0.2~1倍的标准均值范围内,按照(0, 1)*拍点分值进行准度扣分。两项指标还要乘以扣分系数及指标权重配比,最终得到每个拍点的音高扣分:pitch_dp。 [0160] 参考图8,节奏评价对于序列的处理方式同音高,将对齐后的XmlSeq和StuSeq序列直接进行DTW路线对比,可以得到每个拍点每个帧偏移的位置分布。 [0161] 有了帧偏移分布,得到帧偏移序列:shf1,sf2,sf3,...sfn,理论上所有的帧偏移全部为0,代表节奏点最佳(跟标准曲谱一样),将帧偏移按小节为单位进行归档,每小节的帧偏移计算标准均方差: 得到的 值越小说明当前小节的节奏偏移越稳定,当 认为节奏在当前小节是稳定的,此范 shf 围外扣分。同时计算小节节奏偏移均值 mean 的值代表小节节奏点 shf 偏移的平均帧数,当mean <小节拍点帧数*10%范围认定当前小节节奏踩点是准确的,在此范围外扣分。自此,节奏评价同样包含了节奏平稳度和节奏准确度两个指标,根据指标的配置和扣分系数权重配置,得到每个小节节奏的扣分:rhythm_dp。 [0162] 最后是情感评价,情感的评价主要是学生演奏乐曲的声音饱满度和声强变化,突出强弱差异并根据曲目特征表达出欢快、悠扬、热情等情绪。这种表达可以通过声音强度变化表现出来:比如有的曲目节奏就是欢快的、热情的、抒情的等等,每种情感对应的音符的起落(开始发声和收尾)都是有相似特征的,比如欢快的,发声通常是干脆的、音符时长是短促的、收尾是干脆的;热情的情感发声是迅速的,声强是陡升的、强弱关系是周期性敏感的等。每首曲目都可以定义情感的要求,同时使用泛音来直接定义情感中声音强度变化的“模版”,做为情感评分标准。 [0163] 本发明的应用主要面向于机房环境下学生现场演奏的考试场景,受限于机房硬件设备、学生考试秩序等客观因素影响,学生的演奏录音质量差异比较大,针对这种特定场景,本发明采用AI降噪方法,将大量学生录音进行噪声提取和训练,减少环境和设备的差异对学生演奏评分的影响。 [0164] 将学生演奏的音乐片断转化为单声道、16位的wav音频格式。人工将学生录音进行噪声提取并分类标注:噪声1、噪声2、…噪声n,得到噪声样本。 [0165] 人工将纯净学生录音进行分类标注:纯净音1、纯净音2、…纯净音n,得到纯净音样本。 [0166] 为了让深度学习模型能更好的提取噪声特征,本发明采用噪声与纯净音随机组合并随机设置信噪比的方式生成大量的带噪音频片段,用来输入模型,快速拟合各种噪声环境下的特征,具体的处理设计如下: [0167] 将纯净音每20ms进行切割,傅里叶变换一般帧时长约10ms到30ms之间,得到纯净音的帧片段,每个片段随机选择一种噪声进行混合,并设置随机信噪比,最终得到包含不同噪声类型和噪声强度的帧信号。 [0168] 噪声训练采用循环神经网络技术方案(RNNoise),深度学习框架采用keras、tensorflow,音频处理算法采用librosa,将噪声帧数据和纯净音数据分别进行DCT变换,得到BFCC巴克频率倒谱系数(频带范围更小,运算效率更高),一共得到22个特征数据,然后计算MFCC特征和谱质心、谱衰减、基频周期等共计36个特征系数,输入到由3层密集层和3层GRU层组成的训练网络中进行多轮次训练。 [0169] 通过以上步骤可以得到一个过滤噪声的网络模型,将模型保存到训练模块中用于后续的测试和运行。 [0170] 专业音乐人员录制不同乐器的演奏声,包括竖笛、陶笛、口风琴、口琴、葫芦丝五种(根据乐器考核需求扩展),每个乐器录制2小时时长音频(样本基础,后期根据每种乐器分类精确度动态补充)作为训练样本。随机筛选200首学生考试乐器演奏的音频作为测试样本。 [0171] 统一将样本音频处理成16位、单声道、16khz采样率的wav文件,将音频裁切成4秒左右的音频,得到样本单元的数据结构(通道数,采样点数):(1,16000*4)。 [0172] 将剪切的音频进行MFCC梅尔倒谱系数转换,得到64个频带特征,样本单元数据结构(1,64,250),其中250是16k采样率下转化成每个梅尔倒谱频带数据量(16000/64/1)。 [0173] 每32个样本单元为一个批次进行拟合:得到单次训练样本数据结构(32,1,64,250),其中批次数量可根据训练性能进行动态调节。 [0174] 对每个乐器样本单元的类别进行oneHot转换,并且扩展到与样本单元数据结构一致的形态(数据结构为(5)),其中5是当前训练的乐器种类。 [0175] 参考图3,采用CNN神经卷积网络架构对训练数据进行处理,使用三个CNN层将数据特征图降维到(32,64,3,31),输入到1个密集层进行近似预测,得到(32,5)最终预测结果数据,其中5代表当前训练的乐器种类,输出的结果是32个样本单元针对5种乐器预估的相似度(0到1的数字)。至此,网络的输出模型结构已经确定完成。 [0176] 乐器的识别就是将学生录制的音频文件输入模型,由模型将预测结果输出,根据上一步中结果,直接取最大值对应的乐器下标即为最终识别的乐器。识别到的乐器类型可以与测试样本进行比对第一步中人工随机筛选200个音频并标注演奏乐器,这样就能得识别的准确度。 [0177] 参考图4,为了使专业的音乐人员一站式生成识别乐器模型,训练模块要求音乐人员按照乐器名创建文件夹,将各乐器声音归档上传到训练模块,训练模块会自动根据文件夹名创建分类标签并进行:音频切割、静音剔除、特征提取、网络训练、训练结果评价、生成模型、测试模型整个自动化流程,同时输出每个流程运行日志,供开发人员跟踪问题,输出测试报告反馈给音乐人员,音乐人员可以根据报告内容中显示识别错误的音频进行调整或补充训练数据重新训练。最后测试结果100%正确后输出最终模型。 [0178] 此部分训练模块将开发人员与业务人员协作分离,让双方更关注各自专业领域的工作,大大加快乐器识别的效率、可扩展性、专业性。 [0179] 预处理中需要对学生的录音、演奏题目的xml文件和标准的泛音样本进行处理,以便能更好的对学生演奏的水平做多维度评分。其中演奏题目的xml文件是由专业的打谱软件(西贝柳斯等)将制作好的midi导出的谱信息文件。泛音样本是由演奏题的命题人员现场录制的样本音频,用来作为演奏情感判定的标准。 [0180] 首先将学生的录音通过步骤1中的训练模块降噪,对降噪后的学生音频采用带通滤波器进行信号增强,得到最终学生录音预处理音频。 [0181] 将演奏题目中的xml数据文件进行解析,得到曲目基础信息,如:小节数、每小节拍数、每拍的时值、调性、音符的时值与频率序列等。由于xml信息中没有速度属性,需要对xml数据进行填充或压缩(统一成与题目真实演奏相同的时长,保证时间轴上数据对齐才能进行后续的运算),最终将xml信息转化成时域下各个音符频率的序列:XmlSeq(334hz,334hz,334hz…|112hz,231hz,231hz…|…)。 [0182] 同样,将降噪后的学生wav音频通过pyin技术提取基频序列,得到与xml相同时间轴的频率序列:StuSeq。 [0183] 参考图5,由于学生演奏录制的过程中,受限于学生的演奏专业水平、硬件以及系统运行过程中一些不可控因素影响,学生的录音可能存在延迟、拖尾等情况,造成录音头尾存在空白、节奏偏差等,严重影响后续的节奏评分。为此,预处理模块采用了头尾补偿、裁剪方案,将学生的音频的开头和结尾分别填充或裁剪1~n拍(根据题目的拍点和时长设定)0Hz的音符(相当于占位符)。这样学生的录音时长将超过xml数据长度,将xml音频序列XmlSeq与学生音频序列StuSeq头部对齐,然后逐拍移动XmlSeq直到最后尾部对齐StuSeq,每次移动都使用DTW技术对两个序列进行最小距离运算,找到最优结果(XmlSeq与StuSeq音符一一对应并且距离最短的对齐位置)即认定为学生最终真实的演奏意图,这样解决了学生录制过程中进入慢或者拖尾、录音延迟等问题。 [0184] 下一步,将标准的泛音样本进行响度提取(loundness),得到每个采样点的振幅数据:sample_loundness1,sample_loundness2,...sample_loundnessn。保留每个采样点的振幅数据是为了让序列连续可导,这样我们更容易得到响度变化的方向,如果转化成时域范围会丢失很多精度。最终我们得到泛音时域范围下的声音振幅序列:SampleLoundness。 [0185] 同样的处理方法将学生音频进行响度提取,最终得到学生时域范围下的振幅序列:StuLoundness。 [0186] 经过以上的信号预处理工作后,我们得到了在相同时间轴上四个序列,其中XmlSeq为基础的曲谱标准序列,StuSeq为学生演奏序列,SampleLoundness为泛音响度参考序列,StuLoundness为学生演奏响度序列。 [0187] 经过预处理模块,得到了SampleLoundness和SampleLoundness响度序列,同时根据之前完整度、音高和节奏的DTW校准,我们可以将两个强度序列剔除静音掩码后与泛音进行时域上的重新校准,得到每个小节、每一拍的声强对比序列。 [0188] 将校准后的两个声强序列进行归一化处理,得到分贝刻度为[0,1]的序列,两个序列目前是采样点对应的声强,我们将每一拍对应的采样点进行归档,这样我们就可以得到每一拍声强的子序列:batch1:[ln1,ln2,ln3,...lnn],分割子序列是为了局部去判定声强变化的方向和计算变化差。最终我们得到泛音和学生音频声强每一拍的序列: [0189] sample_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]; [0190] stu_ln_seq=[[ln1,ln2,ln3...lnn],...[ln1,ln2,..lnk]]。 [0191] 将两个序列同时做声强趋势和差值量化,也就是求出两个声音,拍的声强变化趋势(升、降、持平...)及拍升高变化差值(+0.2,‑0.1,0.0,+3.0...),我们定义这两组变化序列分别是: [0192] sample_ln_dir_seq=[[up1,up2,up3,...upn],...[up1,up2,up3,...upk]; [0193] stu_ln_dir_seq=[[up1,up2,up3,...upn],...[up1,up2,up3,...upk]; [0194] sample_ln_shift_seq=[[shift1,...shiftn],..[shift1,shift2,...shiftk]; [0195] stu_ln_shift_seq=[[shift1,...shiftn],...[shift1,shift2,...shiftk]; [0196] 对于声强趋势可以直接进行拍点对比,升代表1,将代表‑1,平代表0,将两个序列每个拍进行且运算和乘法运算: [0197] result_upi=sample_upi AND stu_upi*(sample_upi*stu_upi); [0198] 两个音频声音强度变化趋势,如果非负数代表趋势一致,如果是负数代表趋势相反。特别注意:因为0很难出现(泛音也很难保证两拍之间声强均值相同),但是可能在相对平稳的拍点间对比产生出截然相反的结果(比如连续拍点分贝差分别+0.05dB和‑0.05dB,理论上都认为是相似的区间,但是他们相乘结果是负数),我们这里将区间在±[0.05,0.1]范围数据全部重置为0,用以减少这种敏感度带来的趋势评估错误。 [0199] 对于声强差值的运算(每拍声强变化的幅度),采用直接计算拍声强均值间的差值: [0200] result_sample_shifti=sample_shifti‑sample_shifti‑1; [0201] 同样,学生音频做同样的序列化操作 [0202] result_stu_shifti=stu_shifti‑stu_shifti‑1; [0203] 这样我们得到两个声强拍点间差值的序列,两个序列每个点都进行差值运算,并将差值运算的结果求标准均方差(MSE),得到整体拍点声强幅度变化的趋势。 [0204] shift_diff i=result_sample_shifti‑result_stu_shifti; [0205] [0206] 此结果越小代表的两首曲子整体声音强度变化趋势一致,并且定义区间对应情感加分,比如0.01以下代表情感完全匹配,并配置情感加分权重,给于情感加分:emotion_bp。 [0207] 乐器识别部分是通过训练模块得到的乐器音色模型,将学生音频进行分类,与曲目中要求的乐器进行匹配,如果匹配成功代表正确使用乐器演奏,否则或者题目没有配置则视为错误乐器演奏或自由演奏,相应的扣分配置和权重根据业务需求进行灵活配置即可,这里 [0208] 将乐器判定扣分项定义为:celesta_dp。 [0209] 输出模块即为将上一步骤多维度评价模块的分数根据加权值进行汇总,最终得到学生演奏乐器的最终成绩: [0210] score=100‑(integrity_dp*wi+pitch_dp*wp+rhythm_dp*wr+ [0211] celesta_dp*wc)+emotion_bp。 [0212] 本实施例基于深度学习的中小学演奏评分方法及系统的主要有益效果包括提高评分效率和准确性。系统能够全面分析音频,客观评估音准、节奏和音色等多个维度,提供更全面和一致的评估。这减少了人工评分的主观性和时间成本,使评估过程更为公正、高效。对于大规模的学生演奏评估,这种系统尤为有益,能够为中小学艺术教育带来更高的质量和标准。 [0213] 本发明提出的基于深度学习的音乐演奏评分系统解决了现有技术的多个缺陷。通过自动化和智能化的方法提高了评分的效率和准确性。系统能够全面分析音频,客观评估音准、节奏和音色等多个维度,从而提供更全面和一致的评估。这减少了人工评分的主观性和时间成本,使评估过程更为公正、高效。对于大规模的学生演奏评估,这种系统尤为有益,能够为中小学艺术教育带来更高的质量和标准。 [0214] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。 |