基于重叠变换压缩编码的错误隐藏帧重建方法

文档序号:2837107阅读:565来源:国知局
专利名称:基于重叠变换压缩编码的错误隐藏帧重建方法
技术领域
本发明涉及压缩音频信号的数字处理和恢复,及其实现。本发明属于音频信号处理领域。
背景技术
音频错误隐藏技术是一种基于音频信号特性,结合人的生理、心理系统特点,对传输错误导致的丢失信息的恢复和估计的技术。播放器通过音频差错隐藏处理,降低音质损坏程度,达到提高接收端音频质量的目的。
音频信号处理中通常采用子带编码和变换编码实现压缩音频信号的目的。传统的采用子带编码的数字音频信号编码、解码装置如图1和图3所示。编码器中,分析滤波器将输入信号分为K个子带,在各个子带内,编码过程如图2所示,将预先设定好的分析窗加在子带信号S上,将S分割成有50%重叠的子块S0,S1,S2和S3,进行正交变换,例如修正离散余弦变换(MDCT),将信号从时域变换到频域获得频谱系数。量化编码单元将频谱系数量化后进行编码。经过比特分配后,按照预先规定的帧格式,将量化的信号以帧为单位打包,每包为一个压缩帧,进行传输。
接收端解码器如图3所示,采用同编码器的相反方法将压缩后的编码数据解码成音频流。
在解码器中,解码器以帧为单位处理音频信号,双声道信号一帧包含左右两个声道,如图4所示。压缩音频信号解码过程中,当检测音频错误或丢失的最小单位是一个压缩帧时(区别于帧内比特位错误),出现帧错误或帧丢失将导致一个压缩帧不能够正确解码,引起两个解码帧出错。
在压缩数字音频传输与存储过程中,发生帧头错误或因突发误码引起的帧丢失,都将导致解码过程中出现无法恢复原信号帧的结果。如图6所示,压缩编码帧A中一帧F2发生错误或丢失,将会引起解码帧C中两帧Er1和Er2受到影响。如果用错误的数据来恢复这些帧,将会引起音质明显的下降。
为避免这种情况发生,音频技术研究人员利用音频信号的短时平稳特性采取了多种处理措施来减轻音质的下降。
子带上的处理方法有静音,静音方法用全零序列来替换错误帧(错误帧是指发生错误或丢失的压缩帧对应的解码后的帧;正确帧是指完全正确解码的帧。并且以下文中没有特别提示时,本说明书所指代的帧均是对应帧位置上的一个子带,并非前面所述的全带数据帧)Er1和Er2。静音方法有直接置零和慢衰减到零两种基本方式。直接置零方法简单,但是当错误帧之前相邻的正确帧或错误帧之后相邻的正确帧信号幅度比较大时,直接置零会导致信号突然的跳变,会造成音质明显下降;衰减静音方法多用于较长帧(或连续多帧)丢失的情况,由于音频信号平稳性只在较短时间内满足,当帧长特别长时,错误帧无法恢复,强制恢复只会引进更多噪声,因此出现连续多帧错误或帧长特别大(>40ms)时,一般采用衰减静音方法。
复制替换,复制错误帧Er1之前帧C1或Er2之后帧C4的内容来替换Er1与Er2。当帧丢失率比较低,Er1帧与Er2帧不是很长时(<25ms)复制可以得到较好的效果,但是随着帧长的增大,复制会造成明显的回声,降低音质。
频域插值替换,利用提前设定的权系数乘错误帧相邻的前帧或后帧或前后两帧双向的频谱系数。由于利用了频域特征,此方法可以取得较好的效果。但是该方法仅适用于频谱变化比较平稳的信号,当插值所利用的前帧或后帧中存在瞬态时,插值结果将会因为引入了相邻帧的瞬态信号而导致音质下降。而且当相邻帧间频谱相关性不大时,插值结果将把与原信号相差比较大的频谱分量引入到处理生成的帧中,在处理生成的帧与相邻正确帧之间过渡时,频谱分量变化率增大,会引起声音明显的跳变,也不符合错误隐藏的要求。
时域插值替换,同频域插值替换相似,利用提前设定的权系数乘错误帧相邻的前帧或后帧或前后两帧双向的时域样值幅度。与频域插值相比较,时域插值方法更简单,但是效果也不如频域插值。
由于错误隐藏进行错误帧重建时,能够利用的信息来自相邻的解码帧,因此利用正确的相邻帧,来估计判断错误帧的状态(瞬态或稳态)和频谱成分,对重建错误帧有重要意义。

发明内容
本发明的目的在于,提出一种适用于子带重叠正交变换编码系统的音频错误隐藏方法和装置。
本发明的特征在于,在解码器端,结合时域瞬态特征和频域频谱相关性特征对音频信号进行分类处理,可以处理更大的错误帧长(>40ms),并取得满意的听音效果。
本发明利用时、频双域特征,估计错误帧的状态参数。时频特征是指帧的瞬时或平稳状态,频域特征指相邻帧的频谱相关系数和频谱能量。
建立图7所示可存储五帧子带解码数据的FIFO缓冲区,以满足状态判断、插值计算和系统延迟的需要。错误隐藏处理实现过程如图5所示。
本发明所述方法依次含有以下步骤一、时域特征时域特征提取,以图6解码帧C为例,通过为相邻的正确帧C1,C4和错误帧的第一帧Er1各设置一个瞬态指示标志来实现,该标志为一逻辑变量参数。检测帧存在瞬态时,将该帧的瞬态指示标志置“1”,否则清“0”。
利用所设计的子带瞬态检测器(图8所示)检测图6中C1、Er1、C4帧内是否存在瞬态,检测器输出瞬态指示标志。当检测到帧内存在瞬态时,将该帧的瞬态指示标志设为“1”,否则设为“0”。
子带瞬态检测器结构框图如图8所示。利用移位器进行如图9所示的子序列分割,子序列长度为K,当序列长度为N时,分割为L=N/K个子序列,子序列成对组成(L-1)个子序列对。
各子序列按等式(1)利用乘累加器计算各子序列能量,其中l,l=1,2,...,L是子序列的序号,El是第l个子序列的能量值,K是子序列长度,xl,k是第l个子序列的第k个样值的幅度。
El=Σk=1K(xl,k)2---(1)]]>按等式(2)利用乘法器计算子序列对之间能量比及其倒数,其中l′,l′=1,2,..,L-2是子序列对的序号,Rtf,l′是第l′个子序列对之间能量比,Rft,l′是Rtf,l′的倒数,El′,El′+1,El′+2是等式(1)计算出的子序列能量。
Rtf,l′=El′+El′+1El′+1+El′+2,]]>andRft,l′=El′+1+El′+2El′+El′+1---(2)]]>按等式(3)运算器计算能量比序列及其倒数序列的方差Vtf和Vft。
Vtf=(L-2)·Σl′=1(L-2)Rtf.l′2-(Σl′=1(L-2)Rtf,l′)2(L-2)·((L-2)-1)]]>和Vft=(L-2)·Σl′=1(L-2)Rft.l′2-(Σl′=1(L-2)Rft,l′)2(L-2)·((L-2)-1)---(3)]]>利用比较器,将求得的Vtf和Vft同设定的门限值Gt进行比较,Gt的取值范围是(1,+∞),Gt取值越大,误判概率越低。
当Vtf≥Gt or Vft≥Gt时,输出“1”;当Vtf≤Gt and Vft≤Gt时,输出“0”。
译码器译码输出结果,比较器输出“1”时,瞬态指示标志T置“1”,比较器输出“0”时,瞬态指示标志T置“0”。
二、频域特征频域内,利用帧间相关性计算器计算帧间频谱相关性。
帧间相关系数计算,如图6所示,利用FFT时频变换器执行快速傅立叶变换(FFT),将C0,C1,Er1,C4帧的时域序列xC0,xC1,xEr1,xC4变换到频域,获得相应的频谱系数幅度序列XC0,XC1,XEr1,XC4,相位序列PC0,PC1,PEr1,PC4。时域序列xC0,xC1,xEr1,xC4,幅度序列XC0,XC1,XEr1,XC4,相位序列PC0,PC1,PEr1,PC4,各帧中序列长度均相等。
计算帧间频谱相关系数时,计算<C0,Er1>之间,<C1,Er1>之间和<C4,Er1>之间的频谱相关系数r0,r1,r2(下文状态分类时所引用的r0,r1,r2即这三个相关系数值),因此系统需要三个帧间相关性计算器来完成单个子带上帧间相关系数计算,相关系数取值范围是
,取值为“0”时两输入序列不相关,取值为“1”时,两输入序列线性相关,在0与1之间相关系数越大,两序列的线性相关度越大,否则越小。
按公式(4),利用运算器来实现相关系数计算,r=rABrAA·rBB---(4)]]>其中A、B是输入信号频谱幅度序列,序列长度均为N,An,Bn分别是序列A、B的第n个样值,n=1,2,...,N,rAB是序列A与B间互协方差rAB=NΣn=1NAnBn-Σn=1NAnΣn=1NBn,]]>rAA、rBB是A与B各自的自协方差rAA=NΣn=1NAn2-(Σn=1NAn)2]]>与rBB=NΣn=1NBn2-(Σn=1NBn)2.]]>频谱能量计算,利用等式(5)计算得到E=Σk=1K[X(k)]2---(5)]]>式中,E是计算得到的频谱能量,K是输入信号频谱幅度序列的长度,即频点数,X(k),k=1,2,...,K是序列第k个频点上的幅度。
本发明利用以上的时域瞬态指示标志和频域的帧间频谱相关系数,通过由比较器和译码器组成的状态译码器进行状态判断,可输出两大类10个状态。
如图6所示,根据C1帧瞬态指示标志为“0”或为“1”分成两大类稳态和瞬态,即以错误帧的前一帧是稳态或瞬态将错误帧分为两种状态稳态和瞬态。
一、当错误帧为稳态时,设定一个相关性判别门限roffo,roffo取值范围是(0.5,1]。一个状态译码器利用这个相关性判别门限,将稳态下的错误帧与相邻帧间的频谱相关性状态进行一级分解,分成四类1、r1≥roffo]]>且r2≥roffo,]]>为状态一,2、r1<roffo]]>且r2≥roffo,]]>为状态二,3、r0≥roffo]]>且r1≥roffo]]>且r2<roffo,]]>为状态三,4、其他,为状态四。
为进一步提高处理效果,有一可选择项(该可选择项通过设定的选项参数op1来实现,op1为一逻辑变量,为“1”时选择有效,为“0”时选择无效)将状态一进行进一步的细化,设定一个高度相关性判别门限roff_h和一个相关性差门限roff_d,其中roff_h取值范围是(roffo,1](roffo是一级状态分解中的相关性判别门限),roff_d取值范围是 状态译码器将状态1进行二级分解,分解为四个状态1a、r1≥roff_h且r2≥roff_h,状态一(a),1b、r1-r2≥roff_d,状态一(b),1c、r2-r1≥roff_d,状态一(c),1d、其他,状态一(d)。
二、当错误帧为瞬态时,设定一个相关性判别门限roff′,roff′取值范围是(0.7,1]。一个状态译码器利用这个相关性判别门限将瞬态下的错误帧与相邻帧间的频谱相关性状态进行一级分解,分成三个状态1、r1≥roff′且r2≥roff′,状态五,2、r1<roff′且r2≥roff′,状态六,3、其他,状态七。
对状态进行分类之后,分类进行插值求错误帧频谱幅度。
一、稳态时1、状态一,在没有二级选项时,采用双边线性插值的方法,双边是指错误帧前、后两边,如图6所示的帧分布,插值利用运算器采用如下方法实现XEr1r(k)=XC1(k)+a1×(XC4(k)-XC1(k))]]>XEr2r(k)=XC1(k)+a1×(XC4(k)-XC1(k))]]>,k,k=1,2,...,K是频点序号(6)其中XC1(k),XC4(k)分别是C1帧和C4帧的第k个频点上的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧第k个频点上的频谱幅度,a1,a2分别是计算Er1帧和Er2帧的频谱幅度时的线性插值系数,其取值范围均是(0,1)。
在状态1进行二级分类时,1a.状态一(a),通过运算器采用等式(6)提供的插值方法实现;1b.状态一(b),通过运算器采用如下的后向插值方法先用运算器计算C1帧和Er1帧的能量EC1=Σk=1K[XC1(k)]2]]>EEr1=Σk=1K[ab·XEr1(k)]2]]>,k,k=1,2,...,K是频点序号 (7)其中EC1,EEr1是C1帧和Er1帧的频谱能量,K是帧的频谱序列长度,XC1(k),XEr1(k)分别是C1帧和Er1帧的第k个频点上频谱幅度样值,ab是比例修正因子,由于Er1帧仅是重叠变换中前帧重叠部分,与其重叠的另一半因误码无法恢复,因此其取值范围是[1,2]。
用运算器求其能量比开平方fab=EC1EEr1]]>乘法器求Er1帧和Er2帧幅度XEr1r(k)=ab·XEr1(k)]]>XEr2r(k)=fab·XEr1r(k)]]>,k=1,2,...,K其中XEr1r(k),XEr2r(k)是插值得到的Er1帧和Er2帧频谱第k个频点上的幅度样值。
1c.状态一(c),通过运算器采用Er1帧和C4帧间的残留插值实现XEr1r(k)=XEr1(k)]]>XEr2r(k)=ac1·XEr1(k)+ac2·XC4(k)]]>,k=1,2,...,K其中ac1,ac2是线性插值系数,其取值范围是(0,1),且满足ac1+ac2=1。
1d.状态一(d),通过运算器采用等式(6)提供的插值方法。
2、状态二,采用残留信息插值,通过运算器采用如下处理方法实现XEr1r(k)=ad1×XEr1(k)]]>XEr2r(k)=ad1×XEr1(k)+ad2×(XC4(k)-ad1·XEr1(k))]]>(8)其中XC4是C4帧的频谱幅度,XEr1是Er1帧残留信息的频谱幅度,XEr1r,XEr2r分别是处理得到的Er1帧和Er2帧的频谱幅度,ad1,ad2分别是计算Er1帧和Er2帧的频谱幅度时的线性插值系数,ad1取值范围是[1,2),ad2取值范围是(0,1)。
3、状态三,采用能量预测插值,通过运算器如下处理方法实现先运算器计算C0帧、C1帧频域幅度能量EC0=Σk=1K[XC0(k)]2]]>EC1=Σk=1K[XC1(k)]2]]>,k=1,2,...,K (9)其中EC0,EC1分别是C0帧和C1帧频域样值能量,K是C0帧和C1帧频域的频点总数,XC0(k),XC1(k)分别是C0帧和C1帧频域第k个频点样值幅度。
通过运算器计算能量比开平方faefae=EC1EC0---(10)]]>通过乘法器计算Er1帧和Er2帧频谱幅度XEr1r(k)=fae×XC1(k)]]>XEr2r(k)=fae×XEr1(k)]]>,k=1,2,...,K (11)4、状态四,先通过状态译码器判断状态,然后通过运算器处理方法如下后帧C4为稳态,Er1帧也为稳态时,通过运算器采用与状态二相同的残留信息插值处理方法;后帧C4为稳态,Er1帧为瞬态时,通过运算器利用能量衰减、淡出插值方法实现XEr1r(k)=XEr1(k)]]>XEr2r(k)=fade·XEr1(k)]]>,k=1,2,...,K其中fade是衰减因子,取值范围是(0,1)。
后帧C4为瞬态,Er1帧为稳态时,通过运算器如下方法实现通过运算器利用等式(7)类似的方法,先求C1帧、Er1帧的频域幅度能量
EC1=Σk=1K[XC1(k)]2]]>EEr1=Σk=1K[ab·XEr1(k)]2]]>其中ab是比例修正因子,由于Er1帧仅是重叠变换中前帧重叠部分,与其重叠的另一半因误码无法恢复,因此其取值范围是[1,2]。
通过运算器计算能量比开平方fab=EC1EEr1]]>通过乘法器计算Er1帧和Er2帧幅度XEr1r(k)=ab·XEr1(k)]]>XEr2r(k)=fab·XEr1(k)]]>,k=1,2,...,K其他状态时,通过运算器利用能量衰减、淡出插值方法实现XEr1r(k)=XEr1(k)]]>XEr2r(k)=fade·XEr1(k)]]>,k=1,2,...,K其中fade是衰减因子,取值范围是(0,1)。
三、瞬态时1、状态五,通过运算器采用等式(6)提供的插值方法;2、状态六,通过运算器采用等式(8)定义的插值方法;3、状态七,状态译码器先判断四种状态,然后运算器插值当Er1帧为稳态,C4帧为稳态时,通过运算器采用等式(6)提供的插值方法;当Er1帧为稳态,C4帧为瞬态时,通过运算器采用能量衰减、淡出的方法,XEr1r(k)=XEr1(k)]]>XEr2r(k)=fade′·XEr1(k)]]>,k=1,2,...,K其中的fade′是衰减因子,取值范围是(0,1)。
当Er1帧为瞬态,C4帧为稳态时,通过运算器利用帧间能量比进行插值,先通过运算器计算Er1帧和C4帧能量,EEr1=Σk=1K[XEr1(k)]2]]>EC4=Σk=1K[XC4(k)]2]]>
再通过运算器计算其能量比开平方,fab′=EC4EEr1]]>插值因子af=ab′·(fab′-1)+1,其中ab′是修正因子,取值范围
]>XEr2r(k)=af·XEr1(k)]]>,k=1,2,...,K当Er1帧为瞬态,C4帧为瞬态时,通过运算器利用能量衰减淡出插值求Er1帧和Er2帧频域幅度,XEr1r(k)=XEr1(k)]]>XEr2r(k)=fade′·XEr1(k)]]>,k=1,2,...,K其中fade′是衰减因子,取值范围是(0,1)。
本发明求频谱的相位时,根据以上所述的利用时域瞬态特征标志和频域帧间相关系数的分类方法,采用复制相邻正确帧相位的方法,选择方法如下。
稳态时,四个一级分类中,状态一及其四个二级分类均通过寄存器采用复制C1帧相位的方法PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,K是频点序号 (12)其中,PC1(k)是C1帧第k个频点上的相位值,PEr1r(k),PEr2r(k)是恢复频谱系数所需的Er1帧和Er2帧第k个频点上的相位;状态二,通过寄存器采用复制C4帧相位的方法PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,K其中,PC4(k)是C4帧第k个频点上的相位值,PEr1r(k),PEr2r(k)是恢复频谱系数所需的Er1帧和Er2帧第k个频点上的相位;状态三,通过寄存器采用复制C1帧相位的方法PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,K;状态四,
如果r2-r1≥roff_d′,其中roff_d′是设定的相关系数差值门限,取值范围是
,利用寄存器采用复制C4帧相位的方法PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,K,如果r2-r1<roff_d′,利用寄存器采用复制C1帧相位的方法PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,K;瞬态时,状态五,如果T4=0,其中T4是C4帧的瞬态指示标志,利用寄存复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,K,如果T4=1,利用寄存复制C1帧相位PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,K;状态六,利用寄存复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,K;状态七,利用寄存复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,K。
将上面插值求得的频谱幅度和复制得到的频谱相位代入下式,FX(k)=X(k)·(cos(P(k))+i.sin(P(k))),k,k=1,2,...,K(13)其中,FX(k)是处理帧第k个频点上的频谱系数,X(k)是处理帧第k个频点上的频谱幅度,P(k)是处理帧第k个频点上的频谱相位,i是复数因子,cos,sin分别是余弦和正弦函数。
用运算器求得频谱系数,再将频谱系数FX(k)进行通过IFFT进行逆快速傅立叶变换,求得其时域信号样值xr。
在稳态时,利用最大相似法对求得的时域样值序列进行时域的相位匹配,实现方法如下利用寄存器取缓冲区中存储的Er1帧的时域序列xEr1前L个样值作为参考序列xh,L取值范围是[int(0.2·K),int(0.3·K)],K是序列xEr1的序列长度,int是取整函数;利用移位寄存器取求得的Er1帧的时域序列xEr1r的连续L个样值作为测试序列xtestl,l=1,2,...,L,l是测试序列的序号,也是从xEr1r中取测试序列的起点。用运算器计算这L个测试序列同参考序列间的相似性C(l)=Σk=1LXtestl(k+l)·xh(k),]]>其中C(l)表示第l个测试序列同参考序列间的相似性值,xtextl(k)表示第l个测试序列的第k个样值,xh(k)表示参考序列第k个样值,L是参考序列长度。
利用比较器比较L个相似性值,取最大值对应的测试序列序号,得到匹配值δ。
重建错误帧Er1和Er2时,先通过寄存器重建一个2·K+M,M∈[12L,L]]]>长的序列y,前2×(K-δ)个样值是xEr1r和xEr2r的第δ到K样值组成的序列yo,再取yo的前2δ+M个序列放在yo之后共同组成序列y。序列y的前K个样值作为序列xEr1rm,次K个样值作为序列xEr2rm,最后M个样值作为可选项后边缘平滑的数据yl。
为减少时频变换带来的边缘突变,在稳态处理过程中进行前边缘平滑处理,用寄存器取新生成的Er1帧时域序列xEr1rm的前M个样值,同缓冲区内保存的解码得到的Er1帧xEr1的前M个样值分别利用运算器乘窗函数后相加,处理方法如下xEr1sr(m)=xEr1rm(m)·wr(m)+xEr1(m)·wl(m),m=1,2,...,M---(14)]]>其中xEr1sr(m),xEr1rm(m),xEr1(m)分别是平滑后的Er1帧、插值处理生成的Er1帧和缓冲区保存的Er1帧第m个时域样值,wl(m),wr(m)分别是M长的左、右窗函数的第m,m=1,2,...,M个样值,左、右窗函数的定义如等式(15)wl(m)=0.5·(1-cos(2·π·(M+m))/(2·M))wl(m)=0.5·(1-cos(2·π·m)/(2·M)),m=1,2,...,M (15)其中π代表圆周率,cos是余弦函数,M是进行平滑时取的样值序列长度M∈[12L,L],]]>m表示第m个值。
与前边缘平滑类似,一个可选择项(该可选择项通过设定的选项参数op2来实现,op2为一逻辑变量,为“1”时选择有效,为“0”时选择无效)进行后边缘平滑。寄存器取后帧C4序列xC4的首M个样值,与时域相位匹配中得到序列yl利用运算器乘窗函数后相加,方法同等式(14)一样xC4sr(m)=xC4(m)·wr(m)+yl(m)·wl(m).]]>瞬态时,只进行前边缘平滑,处理方法同稳态时相同,不进行时域相位匹配和后边缘平滑。
本发明选择MPEG音频编码所使用的12个测试序列作为测试序列,其中包括语音、纯乐器音乐和混合乐器音乐,进行性能测试。
取正确解码的序列为参考序列,进行静音处理的序列为辅助参考序列,用算法处理后的序列为测试序列,参考BS.1534-1标准,进行主观测试。
在错误帧长为90ms,错误帧率为10%时条件下,本发明的结果在音乐信号处理上优于复制相邻帧处理的序列,不进行处理和进行静音处理的序列明显因序列发生中断而造成音乐回放的不连续,而本发明的结果可以实现信号的平滑过渡,保持了音乐信号的连续性;在语音信号的处理中,本发明结果同静音处理结果持平,可以保持语音的可懂性。
测试结果如图12所示。


图1子带编码音频信号编码器。
图2子带内,重叠变换编码过程示意。
图3子带编码音频解码器。
图4连续五帧同一子带信号示意图。
图5错误隐藏实现过程框图。
图6重叠变换帧示意。其中音频压缩编码帧A是编码器最终编码输出,它包含帧头和帧内容信息,帧头指示该编码参数,帧内容主要是经过量化编码后的频谱系数,根据图4所示,音频压缩编码帧包含了同一时刻、相同长度的左右两个声道的所有子带的信息;重叠帧B,指示的是加特定分析窗后的时域子带数据;解码帧C,指示解码后的子带解码信号,加窗重叠部分已经完成重叠相加过程。
图7五帧FIFO缓冲区,可以存储连续五帧的子带解码数据,它是一个先进先出(FIFO)型缓冲区,入口在B4,出口在B2,即数据在推出之后,仍然存储于缓冲区B的B0或B1内,这样做可以减小算法延迟。
图8瞬态检测器框图。
图9瞬态检测子序列划分示意图。
图10程序流程图。
图11系统电路原理框图,其中瞬态检测、FFT、相关性、插值、时域相位匹配、边缘平滑采用运算器实现,分类器采用“比较器+译码器”实现。
图12测试结果,图纵轴为平均分误差线,横轴为序列,序列依次是语音、德语男声,英语女声,大键琴,响板,律管,风笛,钟琴,弹拨乐,小号与管弦乐队,管弦乐队,流行乐合奏。
具体实施例方式
以单帧错误为例。当错误检测装置指示有错误时(本发明不包含错误检测部分),将错误标志置位,解码单元不解码错误帧,直接用全零序列代替,因此在子带解码帧中出现图6中解码帧C中阴影部分波形的现象。
图6所示,当音频压缩编码帧A中F2帧发生错误时,重叠帧B中点划线部分将不能恢复,这将导致解码帧C中出现Er1和Er2两帧错误。错误帧重建时,在本发明所建立的五帧缓冲区(图7所示)中,数据帧的存放如图6中解码帧C,B0,B1存放错误帧之前相邻的正确解码帧C0和C1,B2,B3存放带错帧Er1和Er2,B4存入错误帧之后相邻的正确解码帧C4。
在缓冲区B中,由于输出口在B2位置,因此含错误的帧更新缓冲区不影响信号的正确输出。当错误帧移位到B2位置时,错误帧之后的第一个正确帧解码送入B4。
当没有错误发生时,每解一帧,缓冲区B沿实线箭头方向移一个单元,并直接输出B2单元的子带解码数据到综合滤波器组。
以下叙述的是处理一个图6解码帧C所示的子带的过程,帧长为K=128。
利用运算器对C1,C4进行瞬态检测,瞬态检测过程中判别门限Gt=4,输出瞬态指示标志T1和T4;对Er1进行瞬态检测,判别门限Gt=2,输出瞬态指示标志T0。
利用译码器,根据T1是“0”或“1”分为稳态和瞬态两个状态。
在稳态,利用运算器对C0帧,C1帧,Er1帧,C4帧进行快速傅立叶变换(FFT),并求各帧频谱的模值XC0,XCT,XEr1,XC4和C1帧与C4帧的相位PC1,PC4。
利用运算器求帧<Er1,C0>,<Er1,C1>及<Er1,C4>间的相关系数r0,r1,r2。
利用比较器比较r0,r1,r2同相关性判别门限roffo=0.5]]>间的关系,译码器利用状态分类的方法,进行稳态处理中的一级分解,判决结果为四个状态1、r1≥0.5且r2≥0.5,状态一2、r1<0.5且r2≥0.5,状态二3、r0≥0.5且r1≥0.5且r2<0.5,状态三4、其他,状态四为进一步提高处理效果,当判决结果为状态一时,判断选择项参数op1,为“1”时,进一步利用比较器,根据相关性判别门限roff_h=0.85和相关性差值门限roff_d=0.15,利用译码器将状态一进行二级分解,结果为四类状态1a、r1≥0.85且r2≥0.85,状态一(a)1b、r1-r2≥0.15,状态一(b)1c、r2-r1≥0.15,状态一(c)1d、其他,状态一(d)状态确定后,利用运算器进行插值处理1、状态一,在没有二级选项时,采用双边线性插值的方法,双边指错误帧的前、后两边,如图6所示的帧分布,插值采用如下方法实现XEr1r(k)=XC1(k)+0.4×(XC4(k)-XC1(k))]]>XEr2r(k)=XC1(k)+0.8×(XC4(k)-XC1(k))]]>,k=1,2,...,128其中XC1,XC4分别是C1帧和C4帧的频谱幅度,XEr1r,XEr2r分别是处理得到的Er1帧和Er2帧的频谱幅度。
在状态1进行二级分类时,1a、状态一(a),采用等式(6)提供的插值方法;1b、状态一(b),采用如下的后向插值方法先计算C1帧和Er1帧的能量EC1=Σk=1128[XC1(k)]2]]>EEr1=Σk=1128[1.6×XEr1(k)]2]]>其中EC1,EEr1是C1帧和Er1帧的频谱能量,XC1(k),XEr1(k)分别是C1帧和Er1帧的第k(k=1,2,...,128)个频谱幅度样值。
求其能量比开平方fab=EC1/EEr1]]>求Er1帧和Er2帧幅度XEr1r(k)=1.6×XEr1(k)]]>XEr2r(k)=fab·XEr1r(k)]]>,k=1,2,...,128其中XEr1r(k),XEr2r(k)是插值得到的Er1帧和Er2帧频谱第k个频点上的幅度样值。
1c、状态一(c),采用Er1帧和C4帧间的插值实现XEr1r(k)=XEr1(k)]]>XEr2r(k)=0.5×XEr1(k)+0.5×XC4(k)]]>,k=1,2,...,1281d、状态一(d),采用等式(6)提供的插值方法,插值因子取值为a1=0.3,a2=0.6。
相位计算,利用寄存器复制C1帧相位PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,128 (16)当选择项参数op1为“0”时,采用等式(6)提供的插值方法,相位计算同(16)式定义。
2、状态二,采用残留信息插值XEr1r(k)=1.6×XEr1(k)]]>XEr2r(k)=XEr1r(k)+0.45×(XC4(k)-XEr1r(k))]]>,k=1,2,...,128其中XC4(k)是C4帧的第k个频点的频谱幅度,XEr1(k)是Er1帧残留信息的第k个频点的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的第k个频点的频谱幅度。
相位计算,利用寄存器复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,1283、状态三,采用能量预测插值先计算C0帧、C1帧频域幅度能量
EC0=Σk=1128[XC0(k)]2]]>EC1=Σk=1128[XC1(k)]2]]>其中EC0,EC1分别是C0帧和C1帧频域样值能量,XC0(k),XC1(k)分别是C0帧和C1帧频域第k(k=1,2,...,128)个频点样值幅度。
计算能量比开平方faefae=EC1EC0]]>计算Er1帧和Er2帧频谱幅度XEr1r(k)=fae×XC1(k)]]>XEr2r(k)=fae×XEr1r(k)]]>,k=1,2,...,128相位计算,利用寄存器复制C1帧相位PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,128。
4、状态四,利用译码器结合后帧状态采用平滑的淡出处理后帧C4为稳态,Er1帧也为稳态时,采用与状态二相同的处理方法;后帧C4为稳态,Er1帧为瞬态时,直接将Er1帧作衰减处理,求Er1帧和Er2帧的幅度值XEr1r(k)=XEr1(k)]]>XEr2r(k)=0.6·XEr1(k)]]>,k=1,2,...,128后帧C4为瞬态,Er1帧为稳态时,利用C1帧和Er1帧的能量比为衰减因子,对Er1帧作衰减处理求Er2帧的幅度值利用等式(7)类似的方法,先求C1帧、Er1帧的频域幅度能量EC1=Σk=1128[XC1(k)]2]]>EEr1=Σk=1128[1.6·XEr1(k)]2]]>计算能量比开平方fab′=EC1EEr1]]>
计算Er1帧和Er2帧幅度XEr1r(k)=1.6·XEr1(k)]]>XEr2r(k)=fab′·XEr1(k)]]>,k=1,2,...,128相位计算,先利用比较译码器分状态,然后复制如果r2-r1≥0.25,利用寄存器复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,128r2-r1<0.25,利用寄存器复制C1帧相位PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,128在瞬态时,利用FFT运算器对C1帧,Er1帧,C4帧进行快速傅立叶变换(FFT),并求各帧频谱幅度XC1,XEr1,XC4和C1帧与C4帧的频谱相位PC1,PC4。
求帧<Er1,C1>及<Er1,C4>间的相关系数r1,r2。
利用比较器比较r1,r2与相关性判别门限roff′=0.85的关系,通过译码器利用帧间相关性状态分类的方法,译码结果为三个状态1)r1≥0.85且r2≥0.85,状态五2)r1<0.85且r2≥0.85,状态六3)其他,状态七状态确定后,通过运算器进行插值处理5、状态五,采用等式(6)提供的双边线性插值方法XEr1r(k)=XC1(k)+0.2×(XC4(k)-XC1(k))]]>XEr2r(k)=XC1(k)+0.8×(XC4(k)-XC1(k))]]>,k=1,2,...,128其中XC1(k),XC4(k)分别是C1帧和C4帧的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的频谱幅度。
相位计算,利用译码器和寄存器实现如果T4=0,复制C4帧相位
PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,128如果T4=1,复制C1帧相位PEr1r(k)=PC1(k)]]>PEr2r(k)=PC1(k)]]>,k=1,2,...,1286、状态六,采用等式(8)提供的残留信息插值XEr1r(k)=1.6×XEr1(k)]]>XEr2r(k)=XEr1r(k)+0.5×(XC4(k)-XEr1r(k))]]>,k=1,2,...,128其中XC4(k)是C4帧的频谱幅度,XEr1(k)是Er1帧残留信息的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的频谱幅度。
相位计算,利用寄存器复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,1283、状态七,利用译码器和运算器结合Er1帧和C4帧的瞬态指示标志来插值,当T0=0,T4=0时,采用等式(6)提供的双边线性插值方法当T0=0,T4=1时,采用衰减、淡出的方法,XEr1r(k)=XEr1(k)]]>XEr2r(k)=0.4×XEr1(k)]]>,k=1,2,...,128当T0=1,T4=0,利用能量比进行插值,先计算器计算Er1帧和C4帧能量,EEr1=Σk=1128[XEr1(k)]2]]>EC4=Σk=1128[XC4(k)]2]]>再计算其能量比开平方,fab′=EC4/EEr1]]>插值因子af=0.9·(fab′-1)+1利用插值因子af计算Er1帧和Er2帧幅度XEr1r(k)=XEr1(k)]]>XEr2r(k)=af·XEr1(k)]]>,k=1,2,...,128
当T0=1,T4=1时,利用能量衰减淡出插值求Er1帧和Er2帧频域幅度,XEr1r(k)=XEr1(k)]]>XEr2r(k)=0.3·XEr1(k)]]>,k=1,2,...,128相位计算,利用寄存器复制C4帧相位PEr1r(k)=PC4(k)]]>PEr2r(k)=PC4(k)]]>,k=1,2,...,128当计算得到Er1帧和Er2帧的频谱的幅度和相位后,运算器求其复数频谱系数FXEr1r(k)=XEr1r(k)·(cos(PEr1r(k))+i·sin(PEr1r(k)))]]>FXEr2r(k)=XEr2r(k)·(cos(PEr2r(k))+i·sin(PEr2r(k)))]]>,k=1,2,...,128其中,FXEr1r(k),FXEr2r(k)分别是重建的Er1帧和Er2帧的的第k个频点上的频谱系数,XEr1r(k),XEr2r(k)分别是重建的Er1帧和Er2帧第k个频点上的频谱幅度,PEr1r(k),PEr2r(k)分别是重建的Er1帧和Er2帧第k个频点上的频谱相位,i是复数因子,cos,sin分别是余弦和正弦函数。
然后,利用FFT运算器以FXEr1r,FXEr2r为输入进行逆快速傅立叶变换(IFFT),输出得到重建的Er1帧和Er2帧的时域信号序列xEr1r,xEr2r。
在稳态时,利用运算器对求得的时域信号序列进行时域的相位匹配,实现方法如下寄存器取缓冲区中存储的Er1帧的时域序列xEr1前32个样值作为参考序列xh;寄存器取新求得的Er1帧的时域序列xEr1r的连续32个样值作为测试序列xtestl,l=1,2,...,32,取该序列的起点是l,运算器计算这32个测试序列同参考序列间的相似性C(l)=Σk=132xtestl(k+l)·xh(k),]]>其中cc(l)表示第l个测试序列同参考序列间的相似性值,xtestl(k)表示第l个测试序列的第k个样值,xh(k)表示参考序列第k个样值。
利用比较器比较32个相似性值,取最大值对应的测试序列序号,就是求得的匹配值δ。
重建错误帧Er1和Er2时,先利用寄存器重建一个(2×128+20)长的序列y,前2×(128-δ)个样值是xEr1r和xEr2r的第δ到128样值组成的序列yo=[xEr1r(δ:128),xEr2r(δ:128)],]]>再取yo的前2δ+20个序列放在yo之后共同组成序列y=[yo,yo(1∶(2δ+20))]。序列y的前128个样值作为序列xEr1rm,次128个样值作为序列xEr2rm,最后20个样值作为可选项后边缘平滑的处理数据yl。
为减少时频变换带来的边缘突变,在稳态处理过程中,利用运算器进行前边缘平滑。取处理生成的Er1帧xEr1rm前20个样值,同缓冲区内保存的解码得到的Er1帧xEr1的前20个样值分别乘窗系数,然后相加,前边缘平滑处理方法如下xEr1sr(m)=xEr1rm(m)·wr(m)+xEr1(m)·wl(m)---(17)]]>其中xEr1sr(m),xEr1rm(m),xEr1(m)分别是平滑后的Er1帧、处理生成的Er1帧和缓冲区保存的Er1帧第m,m=1,2,...,20个时域样值,wl(m),wr(m)分别是20点长的左、右窗函数的第m,m=1,2,...,20个样值,左、右窗函数的定义如下wl(m)=0.5·(1-cos(2·π·(20+m))/(2×20))wl(m)=0.5·(1-cos(2·π·m)/(2×20))其中π代表圆周率,取值3.1415926,cos是余弦函数。
与前边缘平滑类似的后边缘平滑,取后帧序列xC4的首20个样值,同时域相位匹配中得到序列yl分别乘右、左窗系数,然后相加,方法同等式(17)相同xC4sr(m)=xC4(m)·wr(m)+yl(m)·wl(m).]]>最终输出运算结果稳态时是经过时域相位匹配和前边缘平滑的Er1帧和Er2帧序列xEr1sr,xEr2rm和后边缘平滑的C4帧序列xC4sr,将此三个序列输入到五帧长缓冲区中的B2帧,B3帧和B4帧代替错误数据。
瞬态时是经过前边缘平滑的Er1帧和Er2帧序列xEr1sr,xEr2r,将此两个序列输入到五帧长缓冲区中的B2帧,B3帧代替错误数据,B4帧没有变化。
然后退出算法,就此完成一个子带上的错误帧重建处理过程。
权利要求
1.基于重叠变换压缩编码的错误隐藏帧重建方法,其特征在于,所述方法是在解码端建有子带解码数据缓冲区的数字集成电路或PC机上依次按以下步骤实现的。步骤(1),解码器把输入的压缩音频信号解码为时域子带信号后,把每一个子带信号缓存量分别送入一个子带瞬态检测器进行瞬态检测,提取时域特征在解码帧C中,为与发生错误的第一帧Er1和第二帧Er2相邻的两个正确帧C1、C4以及Er1帧各设一个用“1”或“0”表示的瞬态指示标志T,“1”表明被检测的帧存在瞬态,否则为“0”,所述时域特征依次按以下步骤实现步骤(1.1),用一个移位器把序列长度为N的子带分割为L个子序列,子序列的长度为K,再把子序列成对组成(L-1)个子序列对;步骤(1.2),用一个乘累加器计算各子序列l的能量El,l=1,2,...,LEl=Σk=1K(xl,k)2,]]>xl,k是第l个子序列中第k个样值的幅度;步骤(1.3),用一个乘法器按以下公式,按顺序计算各子序列对间的能量比Rtf,l′及其倒数Rft,l′Rtf,l′=El′+El′+1El′+1+El′+2,]]>Rft,l′=El′+1+El′+2El′+El′+1,]]>l′=1,2,...,L-2,l′是子序列对的序号;步骤(1.4),用一个运算器按以下公式计算步骤(1.3)得到的能量比序列的方差Vtf及能量比倒数序列的方差VftVtf=(L-2)·Σl′=1(L-2)Rtf,l′2-(Σl=1(L-2)Rtf,l′)2(L-2)·((L-2)-1),]]>Vft=(L-2)·Σl′=1(L-2)Rft,l′2-(Σl′=1(L-2)Rft,l′)2(L-2)·((L-2)-1);]]>步骤(1.5)用一个比较器把步骤(1.4)得到的Vtf、Vft按以下条件与设定的门限值Gt,其取值范围为Gt∈(1,+∞)进行比较当Vtf≥Gt或Vft≥Gt时,译码器输出“1”,置T=1,当Vtf≤Gt且Vft≤Gt时,译码器输出“0”,置T=0;步骤(2),用一个快速傅立叶变换FFT电路把步骤(1)所得的子带信号转换到频域,并把得到的频域信号送入一个帧间相关性检测器进行帧间谱相关特征的提取,其步骤依次如下步骤(2.1),把解码帧C0、C1、Er1、C4帧的时域序列xC0,xC1,xEr1,xC4变换到频域,获得相应的频谱系数幅度序列XC0,XC1,XEr1,XC4,相位序列PC0,PC1,PEr1,PC4;步骤(2.2)按下式计算<C0,Er1>之间,<C1,Er1>之间和<C4,Er1>之间的频谱相关系数r0,r1,r2r=rABrAA*rBB,]]>r取值范围为
,“0”表示两输入序列不相关,“1”表示两输入序列线性相关,其中,A、B是步骤(2.1)中所述的信号频谱幅度序列,序列长度均为N,An、Bn分别是序列A与B的第n个样值,n=1,2,...,N,rAB是序列A、B间的互协方差rAB=NΣn=1NAnBn-Σn=1NAnΣn=1NBn,]]>rAA、rBB是A、B各自的自协方差rAA=NΣn=1NAn2-(Σn=1NAn)2,]]>rBB=NΣn=1NBn2-(Σn=1NBn)2,]]>步骤(2.3),用下式计算频谱能量EE=Σk=1K[X(k)]2,]]>其中,K是步骤(1.1)所述子序列信号转换到频域后的信号频谱幅度序列的长度,用频点数表示,X(k)是序列第k个频点上的幅度,k=1,2,...,K;步骤(3),按以下准则把步骤(1)得到的时域瞬态特征和步骤(2)得到的帧间频谱相关系数送入一个由比较器和译码器组成的具有状态译码功能的状态决策器对错误帧进行状态判断,共输出两大类共7个状态以错误帧Er1的前一帧C1的瞬态指示标志是“0”或“1”把错误帧依次分成两大类“0”为稳态,“1”为瞬态,当错误帧为稳态时,所述状态译码器根据设定的相关性判别门限roffo把稳态下错误帧Er1同相邻帧C1、C4和次相邻帧C0间的频谱相关性进行一级分解,分成四个状态r1≥roffo]]>且r2≥roffo,]]>为状态一,r1<roffo]]>且r2≥roffo,]]>为状态二,r0≥roffo]]>且r1≥roffo]]>且r2<roffo,]]>为状态三,其他,为状态四;其中,roffo的取值范围为(0.5,1];当错误帧为瞬态时所述状态译码器根据设定的相关性判别门限roff′把瞬态下错误帧Er1同相邻帧C1,C4间的频谱相关性进行一级分解,分成三个状态r1≥roff′且r2≥roff′,为状态五,r1<roff′且r2≥roff′,为状态六,其他,为状态七;其中,roff′的取值范围为(0.5,1];步骤(4),按以下步骤用一个运算器针对步骤(3)中的不同状态选用不同的插值算法求错误帧的频谱幅度XEr1r、XEr2r对于状态一,采用下述双边线性插值算法求错误帧Er1的频谱幅度XEr1r(k)以及错误帧Er2的频谱幅度XEr2r(k)XEr1r(k)=XC1(k)+a1×(XC4(k)-XC1(k))]]>XEr2r(k)=XC1(k)+a2×(XC4(k)-XC1(k))]]>,k=1,2,...,K是频点序号,a1,a2是线性插值系数,取值范围均为(0,1);对状态二,采用残留信息插值算法计算XEr1r(k)、XEr2r(k)XEr1r(k)=ad1*XEr1,]]>XEr2r(k)=ad1*XEr1(k)+ad2*(XC4(k)-ad1*XEr1(k)),]]>k=1,2,...,K是频点序号,ad1、ad2取值范围依次为[1,2)以及(0,1);对状态三,采用能量预测插值算法计算XEr1r(k)、XEr2r(k)首先,计算C0帧、C1帧的频谱幅度能量EC0=Σk=1K[XC0(k)]2,]]>EC1=Σk=1K[XC1(k)]2,]]>其次,计算XEr1r(k)、XEr2r(k)XEr1r(k)=fae*XC1(k),]]>XEr2r(k)=fae*XEr1f(k),]]>k=1,2,...,K是频点序号,fae为能量比的开平方fae=EC1EC0;]]>对状态四,首先,用状态译码器判断C4的状态,再采取相关插值方法C4帧、Er1帧皆为稳态时采用一个状态二中相同的残留插值方法,C4帧为稳态,Er1帧为瞬态时,按下式计算Er1帧和Er2帧的频谱幅度值XEr1r(k)=XEr1(k)]]>XEr2r(k)=fade*XEr1(k),]]>k=1,2,...,K是频点序号,fade为衰减因子,取值范围为(0,1),C4帧为瞬态,Er1帧为稳态时,采用以下步骤首先,计算C1帧Er1帧的频谱幅度能量EC1=Σk=1K[XC1(k)]2,]]>EEr1=Σk=1K[ab*XEr1(k)]2,]]>ab为比例修正因子,取值范围为[1,2],其次,按下式计算Er1帧、Er2帧的频谱幅度值XEr1r(k)=ab*XEr1(k),]]>XEr2r(k)=fab*XEr1(k),]]>k=1,2,...,K是频点序号,fab为C1帧与Er1帧的能量比开平方fab=EC1EEr1,]]>C4帧、Er1帧皆为瞬态时,按下式计算Er1帧和Er2帧的频谱幅度XEr1r(k)=XEr1(k),]]>XEr2r(k)=fade*XEr1(k),]]>k=1,2,...,K是频点序号,其中fade是衰减因子,取值范围是(0,1);对状态五采用状态一所述的双边线性插值算法;对状态六采用状态二所述的残留信息插值算法;对状态七先用状态译码器判别状态,再分别处理Er1、C4帧皆为稳态时,采用状态一的双边线性插值算法;Er1帧为稳态,C4帧为瞬态时按下式采用的衰减、淡出的方法XEr1r(k)=XEr1(k),]]>XEr2r(k)=fade′*XEr1(k),]]>k=1,2,...,K是频点序号,其中fade′是衰减因子,取值范围是(0,1),Er1帧为瞬态,C4帧为稳态时,采用如下按帧间能量比的开平方进行插值的方法fab′=EC4EEr1,]]>EEr1=Σk=1K[XEr1(k)]2,]]>EC4=Σk=1K[XC4(k)]2,]]>XEr1r(k)=XEr1(k),]]>XEr2r(k)=af*XEr1(k),]]>k=1,2,...,K是频点序号,af为插值因子,af=ab′*(fab′-1)+1,ab′为修正因子,范围为(0.5,1];Er1帧、C4帧皆为瞬态时,按下式利用能量衰减淡出插值求XEr1r(k),XEr2r(k),XEr1r(k)=XEr1(k),]]>XEr2r(k)=fade′*XEr1(k),]]>k=1,2,...,K是频点序号,其中fade′是衰减因子,取值范围是(0,1);步骤(5),按以下步骤计算在步骤(3)所述的各种不同状态下错误帧Er1、Er2的频谱相位PEr1r(k)、PEr2r(k)状态一及三,用寄存器复制C1帧相位PC1(k),且k=1,2,...,K,下同则,PEr1r(k)=PC1(k),]]>PEr2r(k)=PC1(k);]]>状态二、六及七用寄存器复制C4帧相位PC4(k)则,PEr1r(k)=PC4(k),]]>PEr2r(k)=PC4(k);]]>状态四先用比较译码器比较帧间相关性,再用寄存器有选择地复制C1帧和C4帧的相位当r2-r1≥roff_d′,则PEr1r(k)=PC4(k),]]>PEr2r(k)=PC4(k);]]>当r2-r1<roff_d′,则PEr1r(k)=PC1(k),]]>PEr2r(k)=PC1(k);]]>其中,roff_d′是设定的相关系数差值门限,取值范围是
;状态五根据瞬态指示标志值T,用寄存器复制相应帧的相位当T4=0,复制C4帧相位,则PEr1r(k)=PC4(k),]]>PEr2r(k)=PC4(k);]]>当T4=1,复制C1帧相位,则PEr1r(k)=PC1(k),]]>PEr2r(k)=PC1(k);]]>步骤(6),按以下步骤把步骤(4)(5)取得的频域信号转换到时域,步骤(6.1),把步骤(4)求出的频谱幅度、步骤(5)求得的相应的频谱相位按下式用一个运算器求得频谱系数FX(k),再把把其通过逆快速傅立叶变换得到相位的时域信号样值xrFX(k)=X(k)*(cos(P(k))+isin(P(k))),P(k)是所处理帧第k个频点上的频谱相位,X(k)是所处理帧第k个频点上的频谱幅度,FX(k)是相应于X(k)和P(k)的频谱系数;步骤(6.2),在稳态下,按以下步骤对得到的时域信号样值xr利用最大相似性进行时域相位匹配步骤(6.2.1),用寄存器取出步骤(1)中缓存的错误帧Er1的时域序列xEr1前L个样值作参考序列xh,L取值范围为[int(0.2*K),int(0.3*K)],K是序列xEr1的长度,int是取整函数;步骤(6.2.2),用移位寄存器取出步骤(5)求得的错误帧Er1的时域序列xEr1r的连续L个样值作为测试序列xtestl,l=1,2,...,L,L的值与步骤(6.2.1)的相同,l是测试序列的序号,也是从xEr1r中取第l个测试序列的起点;步骤(6.2.3),在运算器上按下式计算L个测试序列与参考序列之间的相似性值C(l)C(l)=Σk=1Lxtestl(k+l)*xh(k),]]>步骤(6.2.4),用比较器比较步骤(6.2.3)中求得的L个相似性值,取最大值所对应的测试序列的序号,得到匹配值δ;步骤(7)按以下步骤重建错误帧Er1、Er2步骤(7.1),用寄存器重建一个长为2K+M的序列y,M∈[12L,L],]]>前2*(K-δ)个样值是xEr1r和xEr2r的第δ到K个样值组成的序列yo;步骤(7.2)取yo的前2δ+M个序列放在yo之后共同组成序列y;步骤(7.3)取序列y的前K个样值作为序列xEr1rm,次K个样值作为序列xEr2rm,最后M个样值作为可选项后面边缘平滑的数据yl;步骤(8),按以下步骤分稳态和瞬态两种情况进行前后边缘平滑处理,以减少时频变换带来的边缘突变;步骤(8.1)进行稳态下的前后边缘平滑处理步骤(8.1.1),前边缘平滑处理,用寄存器取步骤(7)得到的xEr1rm的前M个样值,M∈[12L,L],]]>同解码得到的Er1帧xEr1的前M个样值分别在运算器中与一个窗函数相乘后求和,得到平滑后的Er1帧的重建帧xEr1srxEr1sr(m)=xEr1rm(m)*wr(m)+xEr1(m)*wl(m),]]>其中,wl(m)、wr(m)分别是M长的左、右窗函数的第m个样值,m=1,2,...,M,wl(m)=0.5(1-cos(2π*(M+m))/(2*M)),wr(m)=0.5(1-cos(2π*m)/(2*M));xEr1rm是插值处理生成的帧,xEr1(m)是缓冲保存的解码得到的帧;步骤(8.1.2),选项进行后边缘平滑处理,寄存器取解码得到的后帧xC4的前M个样值,在一个运算器中,与时域相位匹配中得到的序列yl利用步骤(8.1.1)中的窗函数wr(m),wl(m)先乘后加,得到后边缘平滑处理后的C4帧的重建帧xC4sr(m)xC4sr(m)=xC4(m)*wr(m)+yl(m)*wl(m);]]>步骤(8.2),在瞬态下只进行前边缘平滑,采用的方法与稳态时相同,但不进行时域相位匹配和后边缘平滑处理。
2.根据权利要求1所述的基于重叠变换压缩编码的错误隐藏帧重建方法,其特征在于,在所述步骤(4)进行状态分类的时对状态一进行如下所述的二级分类状态一(a)及(d)用一个运算器进行双边线性插值求频谱幅度,用一个寄存器复制C1来计算频谱相位,与状态一相同;状态一(b)按以下步骤用一个运算器进行后向插值先计算C1帧与Er1帧的能量EC1、EEr1EC1=Σk=1K[XC1(k)]2,]]>EEr1=Σk=1K[ab*XEr1(k)]2,]]>ab取值范围[1,2];其次,求出错误帧Er1、Er2的频谱幅度XEr1r(k)、XEr2r(k)XEr1r(k)=ab*XEr1(k),]]>XEr2r(k)=fab*XEr1r(k),]]>fab为fab=EC1EEr1,]]>频谱相位的计算与状态一相同;状态一(c)用运算器采用残留信息插值完成XEr1r(k)=XEr1(k),]]>XEr2r(k)=ac1*XEr1(k)+ac2*XC4(k),]]>ac1,ac2为线性插值系数,取值范围为(0,1),且满足ac1+ac2=1。
全文摘要
本发明属于音频信号处理领域,其特征在于,依次含有以下步骤提取信号子带内的时域瞬态特征,并提取帧间谱相关特征,利用时域瞬态和帧间谱的相关值对错误帧按状态分成两级,共10类状态,根据不同的错误帧状态选择插值方法生成错误帧的频谱系数和频域相位,计算时域信号和前后缘平滑处理。该方法选择不同插值方法生成能代替错误帧的重建信号,以降低错误影响,提高音质。
文档编号G10L19/02GK101046964SQ200710065400
公开日2007年10月3日 申请日期2007年4月13日 优先权日2007年4月13日
发明者贾晓军, 窦维蓓, 张树华 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1