一种基于MDCT系数进行正弦频率估计的方法
【技术领域】
本发明属于信号处理与通信技术领域,具体涉及一种基于MDCT系数进行正弦频率估计的方法,其用于音频信号处理与编解码系统。
【背景技术】
正弦频率估计是信号处理领域的一个非常重要的基本问题,它是许多依赖于信号频率的相关应用的基础。目前典型的正弦频率估计算法可以在时域通过自相关、线性预测等方式进行,也可以在变换域如DFT(离散傅里叶变换)域通过变换系数的内插等来得到估算结果。具体使用哪种算法取决于整体系统的需求和系统本身的特征。在语音和音频信号处理中,精确地获取信号成分的频率信息非常重要。但是对于以MDCT(改进离散余弦变换)为核心的高质量语音音频处理系统来说,典型的时域和变换域的方法都需要单独进行频率估计,无法与整体系统的变换处理框架相结合,提取频率成分时的复杂度高。
考虑到MDCT本身也是一种时频转换的过程,如果能够使用MDCT变换系数进行正弦频率估计,就会避免额外的单独估计过程,大大降低系统的复杂度。但是,MDCT变换系数对信号的相位信息相当敏感,即使是一个单频的正弦信号,它的MDCT变换系数也会随着各个分析帧的初始相位的不同而表现出巨大的差异。为了解决这个问题,有研究者推导出单频正弦信号MDCT变换系数的解析表达式,阐释了MDCT系数的特征及其与信号参数之间的关系。近年来,已经出现了一些通过MDCT系数进行正弦频率估计的算法。但是有些算法受制于MDCT变换时所使用的窗函数,有些算法受相位条件的影响性能极不稳定。MDCT变换系数本身包含着相位信息,这种相位信息形成了对系数数值的调制效果,使系数呈现多样性,在极端情况下会严重地影响使用这些系数进行频率估计的结果。
【发明内容】
本发明的目的在于针对现有技术的不足,提供了一种基于MDCT系数进行正弦频率估计的方法,该方法支持使用正弦窗和KBD(Kaiser-Bessel Derived凯撒-贝塞尔导出)窗时的MDCT系数,采用特有的决策算法来确定进行频率估计时所使用的MDCT系数组,有效地提高了频率估计的精度和稳定度。
为实现上述目的,本发明采用如下的技术方案:
一种基于MDCT系数进行正弦频率估计的方法,包括以下步骤:
1)构建两个关于频率偏移与系数比值关系的查找表Rα(ξ)和Rβ(ξ);
2)获取正弦信号一个分析帧的MDCT系数,记做X(k),其中,k=0,1,…,N,N为MDCT分析的子带数;
3)查找所述一个分析帧的MDCT系数X(k)绝对值的极大值及其所在的子带位置,分别记做Xmax,i和pi,其中,i=1,...,l,l为检测到的极大值的个数;
4)根据所述每个极大值Xmax,i所对应MDCT系数X(pi),及其相邻的MDCT系数值X(pi-2)、X(pi-1)、X(pi+1)以及X(pi+2),使用决策算法得到对该极大值所对应分量进行频率估计的分支决策参数,其中,分支决策参数包括小系数跳转因子ai、正向比值I0,i、反向比值I1,i和小系数判定因子λi;
5)使用所述得到的分支决策参数ai、I0,i、I1,i、λi以及MDCT变换所使用的窗函数类型,通过查表和内插的方法估算每一个频率分量的正弦频率值。
本发明进一步改进在于,步骤1)中,构建两个关于频率偏移与系数比值关系的查找表包括:
(1)设置频率偏移的步长Δξ;
(2)根据所述频率偏移的步长Δξ,计算系数比值Rα(ξ)|ξ=nΔξ和Rβ(ξ)|ξ=nΔξ,其计算公式分别如下:
Rα(ξ)|ξ=nΔξ=AH(nΔξ-1)/AH(nΔξ+1) (1)
Rβ(ξ)|ξ=nΔξ=AH(nΔξ-2)/AH(nΔξ+2) (2)
其中:AH(ξ)是MDCT变换所使用的窗函数h(n)的中心离散傅里叶变换系数的实部,ξ的取值范围为[-1.5,-0.5],n为频率偏移数,按所需精度设定步长Δξ,通过控制频率偏移数n,获得在ξ的取值范围内的系数比值Rα(ξ)|ξ=nΔξ和Rβ(ξ)|ξ=nΔξ。
本发明进一步改进在于,步骤2)中,具体步骤如下:
(1)当给定信号为时域信号样本x(n)时,取连续2N个点作为一帧信号,对所述一帧信号加窗h(n)后计算其MDCT系数X(k);
(2)当给定信号为MDCT域压缩数据,结合压缩域数据解码的过程,获得分析子带从低到高依次排布的MDCT系数X(k)。
本发明进一步改进在于,步骤3)中,具体步骤如下:
(1)设定正弦分量检测门限Xth,对所述一个分析帧的MDCT系数X(k)绝对值进行预处理,预处理的结果为Xout(k),其计算公式如下:
(2)检测Xout(k)的极大值及其所在的子带位置,并按极大值从大到小的顺序排列;
(3)设定极大值的最小有效间距pth,按所述从大到小排序的极大值从大到小检测,若该极大值所在位置pi的最小有效间距邻域[pi-pth,pi+pth]中存在其它极大值,则删除存在的其它极大值,最终得到X(k)绝对值的极大值及其所在的子带位置,分别记做Xmax,i和pi,其中i=1,...,l,l为检测到的极大值的个数。
本发明进一步改进在于,步骤4)中,具体步骤如下:
设定小系数检测阈值ath,若对所述极大值Xmax,i及其所对应的位置pi有:当|X(pi+1)-X(pi-1)|<athXmax,i时,则ai=1,否则ai=0;
当ai=0时,按如下过程更新位置索引并计算决策参数:
(1)若|X(pi+1)|>|X(pi-1)|,则更新位置索引为pi=pi+1;
(2)计算决策参数:I0,i=-X(pi-2)/X(pi),以及I1,i=-X(pi+1)/X(pi-1);
(3)计算小系数判定因子λi:
若I0,i>I1,i,λi=|X(pi-1)/[X(pi-2)-X(pi)]|;
否则,λi=|X(pi)/[X(pi-1)-X(pi+1)]|;
当ai=1时,按如下过程更新位置索引并计算决策参数:
当使用KBD窗时,
若|X(pi+2)|<|X(pi-2)|,则pi=pi+1,决策参数I1,i=-X(pi+1)/X(pi-1),并置I0,i=-∞;
若|X(pi+2)|≥|X(pi-2)|,则决策参数I0,i=-X(pi-2)/X(pi),并置I1,i=-∞;
当使用正弦窗时,
若|X(pi+2)|≥|X(pi-2)|,则pi=pi+1,决策参数I1,i=-X(pi+1)/X(pi-1),并置I0,i=-∞;
若|X(pi+2)|<|X(pi-2)|,则决策参数I0,i=-X(pi-2)/X(pi),并置I1,i=-∞。
本发明进一步改进在于,步骤5)中,具体步骤如下:
(1)构建MDCT系数比值Ii选取策略方案;
(2)对使用KBD窗的情况,根据选取的Ii估算频率分量的正弦值;
(3)对使用正弦窗的情况,根据选取的Ii估算频率分量的正弦值。
本发明进一步改进在于,步骤(1)中,具体步骤如下:
(a)当ai=0时,对使用KBD窗的情况,设定阈值λth,则MDCT系数比值Ii选取方案为:
若λi<λth,当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
若λi≥λth,当I0,i≥I1,i时,Ii=I1,i;
当I0,i<I1,i时,Ii=I0,i;
(b)当ai=0时,对使用正弦窗的情况,设定阈值λth和Ith,则MDCT系数比值Ii选取方案为:
若λi<λth,当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
若λi≥λth,当I0,i≥I1,i时,如果I1,i≥Ith,则Ii=I1,i;
如果I1,i<Ith,则Ii=I2,i=X(pi-3)/X(pi+1);
当I0,i<I1,i时,如果I0,i≥Ith,则Ii=I0,i;
如果I0,i<Ith,则Ii=I3,i=X(pi+2)/X(pi-2);
(c)当ai=1时,对使用KBD窗的情况,MDCT系数比值Ii选取方案为:
当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
(d)当ai=1时,对使用正弦窗的情况,设定阈值Ith,MDCT系数比值Ii选取方案为:
当I0,i≥I1,i时,如果I0,i≥Ith,则Ii=I0,i;
如果I0,i<Ith,则Ii=I3,i=X(pi+2)/X(pi-2);
当I0,i<I1,i时,如果I1,i≥Ith,则Ii=I1,i;
如果I1,i<Ith,则Ii=I2,i=X(pi-3)/X(pi+1)。
本发明进一步改进在于,步骤(2)中,具体步骤如下:
(a)通过查表并内插的方式得到Ii所对应的频率偏移
(b)获得使用KBD窗情况下的频率估算结果:
若Ii=I0,i,则频率估算结果为
若Ii=I1,i,则频率估算结果为
本发明进一步改进在于,步骤(3)中,具体步骤如下:
(a)通过查表并内插的方式得到Ii所对应的频率偏移
若Ii=I0,i或Ii=I1,i,则通过查表并内插的方式得到Ii所对应的频率偏移
若Ii=I2,i或Ii=I3,i,则通过查表并内插的方式得到Ii所对应的频率偏移
(b)获得使用正弦窗情况下的频率估算结果:
若Ii=I0,i,则频率估算结果为
若Ii=I1,i,则频率估算结果为
若Ii=I2,i,则频率估算结果为
若Ii=I3,i,则频率估算结果为
与现有的正弦频率估计算法相比,本发明具有以下有益效果:
1、与经典的正弦频率估计算法相比,本发明公开的算法能有效地与高品质语音音频处理系统所采用的MDCT变换框架结合起来,不需要额外的时域数据处理或DFT域变换;
2、与目前已有的支持正弦窗的MDCT域正弦频率估计算法相比,本发明公开的算法一方面不受限于变换时使用的窗函数,另一方面也局部提高了使用正弦窗时的频率估算精度;
3、与目前已有的支持任意窗的MDCT域正弦频率估计算法相比,本发明公开的算法极大地提高了频率估计的精度和估算结果的稳定度。
【附图说明】
图1a为归一化频率整数部分为10时正弦窗情况下频率估计结果的最大误差曲线图;图1b为归一化频率整数部分为10时正弦窗情况下频率估计结果的误差均值曲线图;
图2a为归一化频率整数部分为500时正弦窗情况下频率估计结果的最大误差曲线图;图2b为归一化频率整数部分为500时正弦窗情况下频率估计结果的误差均值曲线图;
图3a为归一化频率整数部分为10时KBD窗情况下频率估计结果的最大误差曲线图;图3b为归一化频率整数部分为10时KBD窗情况下频率估计结果的误差均值曲线图;
图4a为归一化频率整数部分为500时KBD窗情况下频率估计结果的最大误差曲线图;图4b为归一化频率整数部分为500时KBD窗情况下频率估计结果的误差均值曲线图。
【具体实施方式】
下面结合附图和具有实施例对本发明做进一步详细说明。
以一帧音频信号为例,本发明一种基于MDCT系数进行正弦频率估计的方法,包括以下步骤:
1、构建两个关于频率偏移与系数比值关系的查找表Rα(ξ)和Rβ(ξ),具体步骤如下:
(1)设置频率偏移的步长Δξ;
(2)根据所述频率偏移的步长Δξ,计算系数比值Rα(ξ)|ξ=nΔξ和Rβ(ξ)|ξ=nΔξ,其计算公式分别如下:
Rα(ξ)|ξ=nΔξ=AH(nΔξ-1)/AH(nΔξ+1) (1)
Rβ(ξ)|ξ=nΔξ=AH(nΔξ-2)/AH(nΔξ+2) (2)
其中:AH(ξ)是MDCT变换所使用的窗函数h(n)的中心离散傅里叶变换(CDFT,Centered DFT)系数的实部,ξ的取值范围为[-1.5,-0.5],n为频率偏移数。按所需精度设定步长Δξ,通过控制频率偏移数n,获得在ξ的取值范围内的系数比值Rα(ξ)|ξ=nΔξ和Rβ(ξ)|ξ=nΔξ。
2、获取正弦信号一个分析帧的MDCT系数,记做X(k),其中k=0,1,…,N,N为MDCT分析的子带数,具体步骤如下:
(1)当给定信号为时域信号样本x(n)时,取连续2N个点作为一帧信号,对所述一帧信号加窗h(n)后计算其MDCT系数X(k);
(2)当给定信号为MDCT域压缩数据,如AAC(先进音频编码)压缩音频数据时,结合压缩域数据解码的过程,获得分析子带从低到高依次排布的MDCT系数X(k)。
3、查找所述一个分析帧的MDCT系数X(k)绝对值的极大值及其所在的子带位置,分别记做Xmax,i和pi,其中i=1,...,l,l为检测到的极大值的个数,具体步骤如下:
(1)设定正弦分量检测门限Xth,对所述一个分析帧的MDCT系数X(k)绝对值进行预处理,预处理的结果为Xout(k),其计算公式如下:
(2)检测Xout(k)的极大值及其所在的子带位置,并按极大值从大到小的顺序排列;
(3)设定极大值的最小有效间距pth,按所述从大到小排序的极大值从大到小检测,若该极大值所在位置pi的最小有效间距邻域[pi-pth,pi+pth]中存在其它极大值,则删除存在的其它极大值,最终得到X(k)绝对值的极大值及其所在的子带位置,分别记做Xmax,i和pi,其中i=1,...,l,l为检测到的极大值的个数。
4、根据所述每个极大值Xmax,i所对应MDCT系数X(pi),及其相邻的MDCT系数值X(pi-2)、X(pi-1)、X(pi+1)、X(pi+2),使用决策算法得到对该极大值所对应分量进行频率估计的分支决策参数,其中,分支决策参数包括小系数跳转因子ai、正向比值I0,i、反向比值I1,i和小系数判定因子λi,,具体步骤如下:
设定小系数检测阈值ath,若对所述极大值Xmax,i及其所对应的位置pi有:当|X(pi+1)-X(pi-1)|<athXmax,i时,则ai=1,否则ai=0;
当ai=0时,按如下过程更新位置索引并计算决策参数:
(1)若|X(pi+1)|>|X(pi-1)|,则更新位置索引为pi=pi+1;
(2)计算决策参数:I0,i=-X(pi-2)/X(pi),以及I1,i=-X(pi+1)/X(pi-1);
(3)计算小系数判定因子λi:
若I0,i>I1,i,λi=|X(pi-1)/[X(pi-2)-X(pi)]|;
否则,λi=|X(pi)/[X(pi-1)-X(pi+1)]|;
当ai=1时,按如下过程更新位置索引并计算决策参数:
当使用KBD窗时,
若|X(pi+2)|<|X(pi-2)|,则pi=pi+1,决策参数I1,i=-X(pi+1)/X(pi-1),并置I0,i=-∞;
若|X(pi+2)|≥|X(pi-2)|,则决策参数I0,i=-X(pi-2)/X(pi),并置I1,i=-∞;
当使用正弦窗时,
若|X(pi+2)|≥|X(pi-2)|,则pi=pi+1,决策参数I1,i=-X(pi+1)/X(pi-1),并置I0,i=-∞;
若|X(pi+2)|<|X(pi-2)|,则决策参数I0,i=-X(pi-2)/X(pi),并置I1,i=-∞。
5、使用所述得到的分支决策参数ai,I0,i,I1,i,λi,以及MDCT变换所使用的窗函数类型,通过查表和内插的方法估算每一个频率分量的正弦频率值,具体步骤如下:
(1)构建MDCT系数比值Ii选取策略方案;
(a)当ai=0时,对使用KBD窗的情况,设定阈值λth,则MDCT系数比值Ii选取方案为:
若λi<λth,当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
若λi≥λth,当I0,i≥I1,i时,Ii=I1,i;
当I0,i<I1,i时,Ii=I0,i;
(b)当ai=0时,对使用正弦窗的情况,设定阈值λth和Ith,则MDCT系数比值Ii选取方案为:
若λi<λth,当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
若λi≥λth,当I0,i≥I1,i时,如果I1,i≥Ith,则Ii=I1,i;
如果I1,i<Ith,则Ii=I2,i=X(pi-3)/X(pi+1);
当I0,i<I1,i时,如果I0,i≥Ith,则Ii=I0,i;
如果I0,i<Ith,则Ii=I3,i=X(pi+2)/X(pi-2);
(c)当ai=1时,对使用KBD窗的情况,MDCT系数比值Ii选取方案为:
当I0,i≥I1,i时,Ii=I0,i;
当I0,i<I1,i时,Ii=I1,i;
(d)当ai=1时,对使用正弦窗的情况,设定阈值Ith,MDCT系数比值Ii选取方案为:
当I0,i≥I1,i时,如果I0,i≥Ith,则Ii=I0,i;
如果I0,i<Ith,则Ii=I3,i=X(pi+2)/X(pi-2);
当I0,i<I1,i时,如果I1,i≥Ith,则Ii=I1,i;
如果I1,i<Ith,则Ii=I2,i=X(pi-3)/X(pi+1);
(2)对使用KBD窗的情况,根据选取的Ii估算频率分量的正弦值:
(a)通过查表并内插的方式得到Ii所对应的频率偏移
(b)获得使用KBD窗情况下的频率估算结果:
若Ii=I0,i,则频率估算结果为
若Ii=I1,i,则频率估算结果为
(3)对使用正弦窗的情况,根据选取的Ii估算频率分量的正弦值:
(a)通过查表并内插的方式得到Ii所对应的频率偏移
若Ii=I0,i或Ii=I1,i,则通过查表并内插的方式得到Ii所对应的频率偏移
若Ii=I2,i或Ii=I3,i,则通过查表并内插的方式得到Ii所对应的频率偏移
(b)获得使用正弦窗情况下的频率估算结果:
若Ii=I0,i,则频率估算结果为
若Ii=I1,i,则频率估算结果为
若Ii=I2,i,则频率估算结果为
若Ii=I3,i,则频率估算结果为
为了测试本发明所公布方法的有效性,现对本发明与Sandler等所提方法和Zhang等所提算法进行了比较。测试中,MDCT分析的子带数设置为1024,对数字频率的整数部分分别为10和510的两组频率进行了测试,每组频率的频率步进值为0.01。图1a为归一化频率整数部分为10时正弦窗情况下频率估计结果的最大误差曲线图;图1b为归一化频率整数部分为10时正弦窗情况下频率估计结果的误差均值曲线图;图2a为归一化频率整数部分为500时正弦窗情况下频率估计结果的最大误差曲线图;图2b为归一化频率整数部分为500时正弦窗情况下频率估计结果的误差均值曲线图;图3a为归一化频率整数部分为10时KBD窗情况下频率估计结果的最大误差曲线图;图3b为归一化频率整数部分为10时KBD窗情况下频率估计结果的误差均值曲线图;图4a为归一化频率整数部分为500时KBD窗情况下频率估计结果的最大误差曲线图;图4b为归一化频率整数部分为500时KBD窗情况下频率估计结果的误差均值曲线图(Sandler等所提方法不支持使用KBD窗情况)。从对比结果可以看出,本发明明显地提高了估算的精度,并且避免了现有方法所存在的估算结果性能不稳定的问题。