一种敲击弦乐器的音乐多音符估计方法及系统的制作方法
【技术领域】
[0001] 本发明涉及钢琴音乐的多音符估计方法,更具体地说,本发明涉及基于非负矩阵 分解的钢琴音乐多音符估计方法。
【背景技术】
[0002] 随着计算机技术的快速发展,自动音乐记谱技术成为音乐信号处理领域的研究热 点之一。其中,钢琴音乐等敲击弦的乐器的自动记谱技术研究是最为关键的一个分支。作 为典型的多音乐器,钢琴音乐等敲击弦的乐器的自动记谱技术的难点和重点都在于同一时 刻的多音符估计。
[0003] 针对如何解决同一时刻的多音符估计问题,现有的技术手段包含:模式识别的方 法,特征分析的方法和矩阵分解的方法。但是这些技术手段各自的缺陷为:其中,模式识别 的方法由于未能考虑到多音符频谱重叠的问题,容易导致音符的漏检;特征分析的方法通 常采用固定的筛选规则,不能自适应的对待测文件进行处理;矩阵分解的方法通常未利用 单音符的能量信息,同时当待测多音片段较大时,系统的处理压力也较大。
【发明内容】
[0004] 本发明的目的在于,为了克服上述问题,本发明提供一种敲击弦乐器的音乐多音 符估计方法及系统,该方法利用钢琴单音片段构建能量谱包络基矩阵,通过非负矩阵分解 来提高钢琴多音符估计的性能。
[0005] 为了实现上述目的,本发明提供一种敲击弦乐器的音乐多音符估计方法,所述方 法包含:
[0006] 步骤101)利用单音片段构建单音符的能量谱包络基矩阵;
[0007] 步骤102)根据得到的单音片段的能量谱包络基矩阵,将基于待识别的多音片段 得到的归一化的平均能量谱包络通过非负矩阵分解算法进行音符结果估计,即判断待识别 的多音片段中存在的单音符情况。
[0008] 可选的,上述步骤101)进一步包含:
[0009] 步骤101-1)通过RTFI时频分析方法,采用如下公式求得单音片段的平均能量谱 包络:
[0011] 其中,i表示帧索引,m表示频率分析点索引,AESk(i,m)表示第k个单音片段的 平均能量谱在第i帧第m个频率分析点处的大小,N rfni表示用于计算能量谱包络的总帧数, AEEk(m)表示第k个单音片段的平均能量谱包络在第m个频率分析点处的大小;
[0012] 步骤101-2)对单音片段的平均能量谱包络进行能量归一化和排序处理进而得到 构建的单音能量谱包络基矩阵,所述归一化处理公式为如下的公式(2),所述排序公式为如 下的公式(3):
[0014] AEEB = (AEE1, AEE2,. . . , AEEj (3)
[0015] 其中,η是音符个数,Hiin(AEEk)代表第k个音符片段的平均能量谱包络中的最小 值,max (AEEk)表示第k个音符片段的平均能量谱包络中的最大值,AEEB为单音谱包络基矩 阵,音高从低到高顺序为:AEE 1 < AEE2,. . .,< AEEn。
[0016] 可选的,上述步骤102)进一步包含:
[0017] 步骤102-1)通过RTFI时频分析方法,采用如下公式(4)求得待识别的多音片段 的平均能量谱包络,并对得到的多音片段的平均能量谱包络采用如下公式(5)进行能量归 一化处理,得到归一化的多音片段的平均能量谱;
[0020] 其中,i表示帧索引,m表示频率分析点索引,PAES(i,m)表示多音片段的平均能量 谱在第i帧第m个频率分析点处的大小,N rfni表示用于计算能量谱包络的总帧数,PAEE (m) 表示多音片段的平均能量谱包络在第m个频率分析点处的大小;
[0021] 步骤102-2)基于归一化的多音片段的平均能量谱和单音能量谱包络基矩阵,采 用如下公式求解得到每个音符在多音片段中的鉴别性权重:
[0022] PAEE = AEEB X W (6)
[0023] 其中,W为各单音符在多音片段中权重大小的序列,即W为单音符权重系数序列;
[0024] 步骤102-3)对得到的单音符的权重系数序列W进行阈值限定;
[0025] 当一个单音符的权重大小超过设定的阈值时,则判定在多音片段中存在该单音 符。
[0026] 进一步可选的,当敲击弦乐器为钢琴时,上述方法具体为:
[0027] 步骤201)采集钢琴包含的88个音符的单音音频数据,并采用步骤101-1)的计算 公式分别求得各音符的平均能量谱包络;
[0028] 步骤202)根据步骤101-2)的公式对单音平均能量谱包络进行能量归一化后按照 音高顺序构建单音谱包络基矩阵;
[0029] 步骤203)根据步骤102-1)的公式求得多音平均能量谱包络,并进行能量归一 化;
[0030] 步骤204)基于非负矩阵分解的迭代算法将步骤203)得到的多音平均能量谱包络 分解为单音谱包络基矩阵与一个单音权重系数序列的乘积;
[0031] 步骤205)设定一个阈值,并将步骤204)得到的单音符权重系数序列中的各元素 与设定的阈值进行大小判断,当一个单音符的权重大小大于设定的阈值时则判定多音片段 中存在该音符,否则多音片段中不存在该音符。
[0032] 可选的,步骤204)所采用的非负矩阵分解的迭代算法具体包含如下步骤:
[0033] 204-1)采用单位矩阵初始化权重系数序列W ;
[0034] 204-2)根据平均能量谱包络基矩阵AEEB和权重系数序列W重构第一矩阵X
[0035] 204-3)计算多音能量谱包络PAEE同第一矩阵X的距离,得到第一距离β ,具体计 算公式为:
[0037] 其中,i表示频率分析点,M为频率分析点总数,Dist {,}表示多音能量谱包络PAEE 同第一矩阵愛的距离;
[0038] 204-4)启动迭代步骤,进而将得到的多音平均能量谱包络分解为单音谱包络基矩 阵与一个单音权重系数序列的乘积;该步骤具体包含:
[0039] 将迭代次数变量iter赋初值1,同时设定一个整数M。且M。为大于1的整数并设 定迭代次数上限为Z ;
[0040] 步骤204-4-1)判定iter当前的值是否小于等于设定的上限次数Z,如果当前 iter的值小于等于上限次数Z则进入步骤204-4-2),否则迭代停止;
[0041] 步骤204-4-2)采用如下公式(8)更新权重系数序列:
[0043] 其中,等号左边的权重系数序列为更新后的,等号右边的权重系数序列为更新前 的;
[0044] 步骤204-4-2-1)计算当前iter的值与M。的商,如果能够整除,则采用如下公式 (9)更新第二矩阵X,否则进入步骤204-4-2-7):
[0046] 步骤204-4-2-2)根据公式(10)计算第一矩阵和第二矩阵的矩阵偏差和并将矩阵 偏差和J作为第一判决值:
[0048] 步骤204-4-2-3)更新第一矩阵i,即将当前第二矩阵f的值赋予第一矩阵X ;
[0049] 步骤204-4-2-4)计算多音能量谱包络PAEE同当前第二矩阵X的矩阵距离β,将 ?作为第二距离,计算公式如公式(11)所示:
[0050]
[0051] 步骤204-4-2-5))计算多音能量谱包络PAEE同第二矩阵i的矩阵偏差比率I,并 将矩阵偏差比率哀作为第二判决值,计算公式如公式(12)所示:
[0053] 步骤204-4-2-6)计算第二距离与第一距离的差值,并计算该差值与整数M。的商, 将商作为第三判决值;
[0054] 步骤204-4-2-7)基于第一判决值,第二判决值和第三判决值分别进行如下 判决,当满足以下三个判决条件中的任意一个判决条件时,则迭代停止,否则执行步骤 204-4-2-8):
[0058] 其中,Rthras, Dthras和Ethras分别为设定的控制迭代停止的阈值;
[0059] 步骤204-4-2-8)将第二距离的值赋予第一距离;
[0060] 采用如下公式(13)更新迭代次数iter的值,然后返回步骤204-4-1),直至迭代结 束;
[0061] iter = iter+1 (13)
[0062] 基于上述方法,本发明提供了一种基于非负矩阵分解的敲击弦乐器的多音符估计 系统,所述系统包含:
[0063] 能量谱包络基矩阵获取模块,用于根据RTFI时频分析方法,并采用单音片段构建 能量谱包络基矩阵;
[0064] 分析估计模块,用于根据得到的能量谱包络基矩阵,通过非负矩阵分解算法进行 多音符估计。
[0065] 可选的,上述能量谱包络基