1.本技术属于音频信号处理技术领域,具体涉及一种基于多重相关性计算的乐音基频提取方法。
背景技术:2.基频提取也被称为音高估计、音高检测,它是音频和音乐分析任务的关键技术之一。乐音基频提取的目标是,当输入为音乐音频信号时,能够实时或非实时的输出当前帧信号的音高频率值。乐音基频提取在音乐分析领域有很多应用方向和重要用途,也是许多高级音频分析任务的前提,如:自动音乐记谱、旋律识别、基于内容的音乐检索等。
3.现有技术如专利申请号为cn2018103904699的公开文献,提供一种音乐主旋律提取方法,该方法对信号进行常q变换后,利用粒子滤波方法确定音高的估计序列,并从该序列中提取最终的音高序列成分。该方法能够提高音高估计准确性,但因为需要采用动态规划进行优化,因此该算法难以移植到实时的音高估计任务中,且低音区的八度错误难以避免。
4.现有技术又如专利申请号为cn2016800176646的公开文献,提供一种确定谐波信号的特征,通过计算信号频率变换率进而估计一段音频信号中的第一音高;并利用相关性计算,确定信号的第二音高。该方案需要采集多帧信号进行信号变化率的计算,且难以适用于频率成分复杂的基频提取任务。
5.因此在现有技术中,大多数基频提取算法聚焦于非实时性音高检测,且多以西洋乐器为研究对象。一方面,非实时检测算法由于算法特性,难以直接移植到实时检测任务中;另一方面,音高估计任务中的八度问题、低音基频丢失问题都难以得到针对性的解决。此外,针对频率成分复杂的弦乐类(尤其以民乐为代表的弦乐)基频提取算法也少之又少。因此,针对频率成分复杂、低音区频率丢失、八度问题混叠的乐音信号,本发明提出了一种可利用于实时、非实时的多重相关性计算的乐音基频提取方法。
技术实现要素:6.本技术的目的在于提供一种基于多重相关性计算的乐音基频提取方法,适用于实时和非实时基频提取,且提取准确率高。
7.为实现上述目的,本技术所采取的技术方案为:
8.一种基于多重相关性计算的乐音基频提取方法,所述基于多重相关性计算的乐音基频提取方法,包括:
9.步骤1、对实时获取的音频帧进行傅里叶变换得到原始频谱图;
10.步骤2、对所述原始频谱图进行预处理得到标准频谱图;
11.步骤3、基于标准数据频谱图根据音高和频率的固有关系得到音高模板;
12.标注4、根据标准频谱图和音高模板得到低维频谱图;
13.步骤5、基于多重相关性计算低维频谱图和音高模板之间的综合匹配度:
14.步骤51、计算低维频谱图和音高模板之间的综合频率匹配度;
15.步骤52、计算低维频谱图和音高模板之间的能量匹配度向量;
16.步骤53、计算低维频谱图和音高模板之间的频率置信度向量;
17.步骤54、计算低维频谱图和音高模板之间的奇偶谐波比;
18.步骤55、根据计算所得的综合频率匹配度、能量匹配度向量、频率置信度向量和奇偶谐波比得到综合匹配度如下:
[0019][0020]
式中,ξ为综合匹配度,β为综合频率匹配度,λ为奇偶谐波比,η
j
为能量匹配度向量的第j个元素,θ
j
为频率置信度向量的第j个元素,e
jr
为音高模板中第j个频点对应的能量值,k为音高模板中的频点数;
[0021]
步骤6、若综合匹配度ξ大于阈值τ,则判定低维频谱图与音高模板一致,则该音高模板对应的基频值作为针对实时获取的音频帧所提取的基频;否则返回步骤3继续执行。
[0022]
以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。
[0023]
作为优选,所述对所述原始频谱图进行预处理得到标准频谱图,包括:
[0024]
步骤21、取原始频谱图f
′
={(f
′
i
,e
′
i
)|i=1,2,...,n}∈r
n
,其中,n为原始频谱图中的频点数,f
′
i
为原始频谱图中第i个频点的频率,e
′
i
为频率f
′
i
处的能量值;
[0025]
步骤22、遍历序列f
′
标记能量极大值点,将序列中的非极值点以及能量值低于能量阈值的能量极大值点处的能量值置零,并在置零后按照总能量为100对各能量值进行缩放,得到极大值序列f
′
peak
;
[0026]
步骤23、根据预设的理想模板计算得到均值序列f
′
mean
;
[0027]
步骤24、取序列f
′
peak
、f
′
peak
/f
′
mean
、f
′
peak
/(f
′
mean
)2中频点对应的能量最大值替代极大值序列f
′
peak
中对应位置频点的能量值,得到最终的极大值序列作为标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
,其中,f
i
为标准频谱图中第i个频点的频率,e
i
为频率f
i
处的能量值。
[0028]
作为优选,所述根据标准频谱图和音高模板得到低维频谱图,包括:
[0029]
步骤41、获取标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
和音高模板f
r
={(f
jr
,e
jr
)|j=1,2,...,k}∈r
k
,k<n,其中,n为标准频谱图中的频点数,f
i
为标准频谱图中第i个频点的频率,e
i
为频率f
i
处的能量值,k为音高模板中的频点数,f
jr
为音高模板中第j个频点的频率,e
jr
为频率f
jr
处的能量值;
[0030]
步骤42、遍历音高模板,对于音高模板中的频率f
jr
如果能在标准频谱图内找到频率f
i
满足f
jr
‑
ε
r
<f
i
<f
jr
+ε
r
,ε
r
为预设的条件参数,则将(f
i
,e
i
)作为第j个元素加入序列f中;若不能找到满足条件的频率f
i
,则将(0,0)作为第j个元素加入序列f中,遍历完成后得到序列f={(f
j
,e
j
)|j=1,2,...,k}∈r
k
作为低维频谱图。
[0031]
作为优选,所述计算低维频谱图和音高模板之间的综合频率匹配度,包括:
[0032]
步骤511、计算频率匹配度如下:
[0033][0034]
式中,β
fr
为频率匹配度,f为低维频谱图f={(f
j
,e
j
)|j=1,2,...,k}∈r
k
,其中,k为低维频谱图中的频点数,f
j
为低维频谱图中第j个频点的频率,e
j
为频率f
j
处的能量值,f
peak
为标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
,其中,n为标准频谱图中的频点数,f
i
为标准频谱图中第i个频点的频率,e
i
为频率f
i
处的能量值;
[0035]
步骤512、计算奇偶八度匹配度如下:
[0036]
取音高模板的任一奇偶数八度音模板为其中,为奇偶数八度音模板中第j个频点的频率,为频率处的能量值,则:
[0037][0038]
式中,为奇偶八度匹配度,ε
r
为预设的条件参数,f
r
为音高模板f
r
={(f
jr
,e
jr
)|j=1,2,...,k}∈r
k
,k<n,其中,f
jr
为音高模板中第j个频点的频率,e
jr
为频率f
jr
处的能量值;
[0039]
步骤513、根据频率匹配度和奇偶八度匹配度计算低维频谱图和音高模板之间的综合频率匹配度如下:
[0040][0041]
式中,β为综合频率匹配度,c
fr
为常量,α1为第一可调参数。
[0042]
作为优选,计算低维频谱图和音高模板之间的能量匹配度向量,包括:
[0043][0044]
式中,η
j
为能量匹配度向量的第j个元素,记能量匹配度向量为η={η1,η2,...,η
k
}∈r
k
,e
j
为低维频谱图中第j个频点的频率f
j
处的能量值,e
jr
为音高模板中第j个频点的频率f
jr
处的能量值,α2为第二可调参数,α3为第三可调参数,1<α3<α2。
[0045]
作为优选,所述计算低维频谱图和音高模板之间的频率置信度向量,包括:
[0046][0047]
式中,θ
j
为频率置信度向量的第j个元素,记频率置信度向量为θ=[θ1,θ2,...,θ
k
]
∈r
k
,e
j
‑1为低维频谱图中第j
‑
1个频点的频率f
j
‑1处的能量值,e
j+1
为低维频谱图中第j+1个频点的频率f
j+1
处的能量值,e
max
为低维频谱图中的能量最大值,α4为第四可调参数,α5为第五可调参数,α6为第六可调参数,α7为第七可调参数。
[0048]
作为优选,所述计算低维频谱图和音高模板之间的奇偶谐波比,包括:
[0049][0050]
式中,λ为奇偶谐波比,e
j
′
为低维频谱图中偶数倍频能量值,即j
′
为j中的偶数项,e
j
″
为低维频谱图中奇数倍频能量值,即j
″
为j中的奇数项,j=1,2,...,k。
[0051]
本技术提供的基于多重相关性计算的乐音基频提取方法,利用预处理均衡频率能量并减小干扰,对频率成分进行提纯;再通过与已构建音高模板进行频率、能量方面的多重相关性计算,判断被测信号基频是否与期望基频一致。该方法能够凸显信号频率特征,提高八度准确率,且适用于频率间隔密集、谐波丢失较多的低音区基频提取任务中,更有利于提高频率成分复杂的乐音基频提取准确性。
附图说明
[0052]
图1为本技术的基于多重相关性计算的乐音基频提取方法的流程图;
[0053]
图2为本技术以音高f4为例预处理前后的频谱图;
[0054]
图3为本技术以音高a3为例预处理前后的频谱图。
具体实施方式
[0055]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0056]
除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本技术。
[0057]
其中一个实施例中,针对频率成分复杂、低音区频率丢失、八度问题混叠的乐音信号,本实施例提出了一种可利用于实时、非实时的多重相关性计算的基频提取方法。
[0058]
如图1所示,本实施例的基于多重相关性计算的乐音基频提取方法,包括:
[0059]
步骤1、对实时获取的音频帧进行傅里叶变换得到原始频谱图。
[0060]
对实时获取的音频帧进行傅里叶变换后得到原始频谱图(spectrum)f
′
={(f
′
i
,e
′
i
)|i=1,2,...,n}∈r
n
,即为f
′
={(f
′1,e
′1),(f
′2,e
′2),...,(f
′
n
,e
′
n
)}∈r
n
,其中,n为原始频谱图中的频点数,f
′
i
为原始频谱图中第i个频点的频率,e
′
i
为频率f
′
i
处的能量值。
[0061]
步骤2、对所述原始频谱图进行预处理得到标准频谱图。
[0062]
本实施例提出了一种基于均值平滑和标准化缩放的预处理方式,一方面利用能量筛选,滤除噪声;另一方面均衡并归一化频谱能量,可拔高能量不显著的频率分量。具体包括以下步骤:
[0063]
步骤21、取原始频谱图f
′
={(f
′
i
,e
′
i
)|i=1,2,...,n}∈r
n
,根据其数据记载方式
原始频谱图f
′
可视为序列f
′
。
[0064]
步骤22、遍历序列f
′
标记能量极大值点,将序列中的非极值点以及能量值低于能量阈值的能量极大值点处的能量值置零,并在置零后按照总能量为100对各能量值进行统一比例的缩放,得到极大值序列f
′
peak
。
[0065]
步骤23、根据预设的理想模板计算得到均值序列f
′
mean
。这里的理想模板相当于音高模板,取多个理想模板,将多个理想模板中对应位置的频点的能量值相加后取平均值作为均值序列中的能量值。
[0066]
步骤24、取序列f
′
peak
、f
′
peak
/f
′
mean
、f
′
peak
/(f
′
mean
)2中频点对应的能量最大值替代极大值序列f
′
peak
中对应位置频点的能量值,得到最终的极大值序列作为标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
,其中,f
i
为标准频谱图中第i个频点的频率,e
i
为频率f
i
处的能量值。
[0067]
如图2和图3所示,图2、图3分别为音高f4、a3预处理前后的频谱图。上部分为预处理前的原始频谱图,下部分为预处理后的标准频谱图。可以看出,通过预处理,过滤了部分能量较小的噪声干扰。并且均衡了谱图能量。原始谱图中能量较小的频率分量处被拔高(如虚线框内所示)。
[0068]
步骤3、基于标准数据频谱图根据音高和频率的固有关系得到音高模板。
[0069]
根据音高模板与频率的对应关系找到基频f
1r
直至k倍频f
kr
。预先选定模板音高的标准数据频谱图共p段,计算频率点f
1r
,f
2r
,...,f
kr
处平均能量值,经过归一化处理后得到能量值模板e
1r
,e
2r
,...,e
kr
。记音高模板为f
r
={(f
jr
,e
jr
)|j=1,2,...,k}∈r
k
,k<n,即f
r
={(f
1r
,e
1r
),(f
2r
,e
2r
),...,(f
kr
,e
kr
)}∈r
k
,k为音高模板中的频点数,f
jr
为音高模板中第j个频点的频率,e
jr
为频率f
jr
处的能量值。
[0070]
标注4、根据标准频谱图和音高模板得到低维频谱图。
[0071]
步骤41、获取标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
和音高模板f
r
={(f
jr
,e
jr
)|j=1,2,...,k}∈r
k
,k<n。
[0072]
步骤42、遍历音高模板,对于音高模板中的频率f
jr
如果能在标准频谱图内找到频率f
i
满足f
jr
‑
ε
r
<f
i
<f
jr
+ε
r
,ε
r
为预设的条件参数,则将(f
i
,e
i
)作为第j个元素加入序列f中;若不能找到满足条件的频率f
i
,则将(0,0)作为第j个元素加入序列f中,遍历完成后得到序列f={(f
j
,e
j
)|j=1,2,...,k}∈r
k
作为低维频谱图。
[0073]
步骤5、基于多重相关性计算低维频谱图和音高模板之间的综合匹配度。
[0074]
步骤51、计算低维频谱图和音高模板之间的综合频率匹配度。
[0075]
本实施例提出了一种综合频率匹配度计算方式,用于计算被测序列(即低维频谱图)与音高模板序列的频率匹配程度。一方面计算频率匹配度用于判断与音高模板的匹配程度;另一方面计算奇偶八度匹配度,提高八度准确率。具体计算步骤如下:
[0076]
步骤511、计算频率匹配度如下:
[0077][0078]
式中,β
fr
为频率匹配度,f为低维频谱图f={(f
j
,e
j
)|j=1,2,...,k}∈r
k
,其中,k
为低维频谱图中的频点数,f
j
为低维频谱图中第j个频点的频率,e
j
为频率f
j
处的能量值,f
peak
为标准频谱图f
peak
={(f
i
,e
i
)|i=1,2,...,n}∈r
n
,其中,n为标准频谱图中的频点数,f
i
为标准频谱图中第i个频点的频率,e
i
为频率f
i
处的能量值。
[0079]
步骤512、计算奇偶八度匹配度如下:
[0080]
一个基频对应一个音高。若两个基频呈现偶数倍关系,则这两个音高互为偶数八度音;若两个基频呈现奇数倍关系,则这两个音高互为奇数八度音。
[0081]
取音高模板的任一奇偶数八度音模板为其中,为奇偶数八度音模板中第j个频点的频率,为频率处的能量值。
[0082]
奇偶八度匹配度计算方式为:被测序列中所有与八度音高频率差值小于ε
r
、且不属于理想音高频率序列的极值点处的能量和,与被测序列中所有与理想频率差值小于等于ε
r
的极值点处的能量和的比值,即:
[0083][0084]
式中,为奇偶八度匹配度,f
r
为音高模板f
r
={(f
jr
,e
jr
)|j=1,2,...,k}∈r
k
,k<n,其中,f
jr
为音高模板中第j个频点的频率,e
jr
为频率f
jr
处的能量值。
[0085]
步骤513、根据频率匹配度和奇偶八度匹配度计算低维频谱图和音高模板之间的综合频率匹配度如下:
[0086][0087]
式中,β为综合频率匹配度,c
fr
为常量,α1为第一可调参数,本实施例中的可调参数为预设的常量,可根据实际需求进行调整,其作为限定的“第一”、“第二”等仅为了区别不同计算下所取的可调参数,不作为对可调参数本身取值的限定。
[0088]
步骤52、计算低维频谱图和音高模板之间的能量匹配度向量。
[0089]
本实施例提出了一种能量匹配度计算方式,用于计算被测序列与音高模板序列的能量匹配程度。计算所得的能量匹配度作为被测序列各个元素的权重。
[0090][0091]
式中,η
j
为能量匹配度向量的第j个元素,记能量匹配度向量为η={η1,η2,...,η
k
}∈r
k
,e
j
为低维频谱图中第j个频点的频率f
j
处的能量值,e
jr
为音高模板中第j个频点的频率f
jr
处的能量值,α2为第二可调参数,α3为第三可调参数,1<α3<α2。
[0092]
步骤53、计算低维频谱图和音高模板之间的频率置信度向量。
[0093][0094]
式中,θ
j
为频率置信度向量的第j个元素,记频率置信度向量为θ=[θ1,θ2,...,θ
k
]∈r
k
,e
j
‑1为低维频谱图中第j
‑
1个频点的频率f
j
‑1处的能量值,e
j+1
为低维频谱图中第j+1个频点的频率f
j+1
处的能量值,e
max
为低维频谱图中的能量最大值,α4为第四可调参数,α5为第五可调参数,α6为第六可调参数,α7为第七可调参数,sgn(
·
)为符号函数。其中,当j取1时公式中对应的e0以及当j取k时公式对应的e
k+1
低维频谱图中不存在的元素,本实施例中将这两个元素的值置为1。
[0095]
步骤54、计算低维频谱图和音高模板之间的奇偶谐波比。
[0096]
本实施例提出的奇偶谐波比用于计算被测序列中奇数倍频能量和及偶数倍频能量和之比。若比值越均衡,则说明被测序列与模板音高序列越相似。
[0097][0098]
式中,λ为奇偶谐波比,e
j
′
为低维频谱图中偶数倍频能量值,即j
′
为j中的偶数项,e
j
″
为低维频谱图中奇数倍频能量值,即j
″
为j中的奇数项,j=1,2,...,k。
[0099]
步骤55、根据计算所得的综合频率匹配度、能量匹配度向量、频率置信度向量和奇偶谐波比得到综合匹配度如下:
[0100][0101]
式中,ξ为综合匹配度,β为综合频率匹配度,λ为奇偶谐波比,η
j
为能量匹配度向量的第j个元素,θ
j
为频率置信度向量的第j个元素,e
jr
为音高模板中第j个频点对应的能量值,k为音高模板中的频点数。
[0102]
需要说明的是,本实施例中例如n,其所表示的含义为原始频谱图中的频点数,或标准频谱图中的频点数等,这里并不存在矛盾,其表示n本身为一个数量词,而原始频谱图和标准频谱图中元素的个数均为n,因此n对应表述为不同描述。
[0103]
步骤6、若综合匹配度ξ大于阈值τ,则判定低维频谱图与音高模板一致,则该音高模板对应的基频值作为针对实时获取的音频帧所提取的基频;否则返回步骤3继续执行。
[0104]
本实施例的乐音基频提取方法利用预处理均衡频率能量并减小干扰,对频率成分进行提纯;再通过与已构建音高模板进行频率、能量方面的多重相关性计算,判断被测信号基频是否与期望基频一致。该方法能够凸显信号频率特征,提高八度准确率,且适用于频率间隔密集、谐波丢失较多的低音区基频提取任务中,更有利于提高频率成分复杂的乐音基频提取准确性。
[0105]
需要说明的是,本实施例以实时基频提取为例进行说明,对于非实时基频提取只需对整曲进行分帧,即可基于相同的步骤实现基频提取。本实施例的提取方法不仅适用于普通乐音信号的基频提取,针对频率成分复杂、低音区频率丢失、八度问题混叠的乐音信号同样具有优异的提取效果。
[0106]
实验:
[0107]
为了验证本实施例的乐音基频提取方法的有效性,以频率成分相对复杂的古筝曲
目为例,设置实验组为本技术的乐音提取方法,对照组为现有的nnls方法和pyin方法,测试结果如下:
[0108]
表1提取结果对照表
[0109][0110]
表1中,所有曲目均为d调曲目,以四分音符为一拍。《找朋友》为儿童入门曲目,音符数量少、音区跨度小、节奏均匀缓慢。《春江花月夜》《沧海一声笑》为成人曲目,相对儿童入门曲目而言,音符数量多、音区跨度大、音符时值长短不一。
[0111]
对照组中的算法nnls(非负最小二乘法)及pyin算法(概率yin算法)是基频提取领域中一种较为成熟且应用广泛的方法,为非实时基频提取中颇具代表性的算法。从表1可以看出,在简单的儿童入门曲目上,本发明方法和对比方法都体现出了极高的正确率;而在相对难度提升的成人曲目上,本发明方法有效提高了准确率,降低了误检率和漏检率。
[0112]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0113]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。