首页> 中国专利> 基于重叠变换压缩编码的错误隐藏帧重建方法

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

摘要

本发明属于音频信号处理领域,其特征在于,依次含有以下步骤:提取信号子带内的时域瞬态特征,并提取帧间谱相关特征,利用时域瞬态和帧间谱的相关值对错误帧按状态分成两级,共10类状态,根据不同的错误帧状态选择插值方法生成错误帧的频谱系数和频域相位,计算时域信号和前后缘平滑处理。该方法选择不同插值方法生成能代替错误帧的重建信号,以降低错误影响,提高音质。

著录项

  • 公开/公告号CN101046964A

    专利类型发明专利

  • 公开/公告日2007-10-03

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200710065400.0

  • 发明设计人 贾晓军;窦维蓓;张树华;

    申请日2007-04-13

  • 分类号G10L19/02(20060101);

  • 代理机构

  • 代理人

  • 地址 100084 北京市100084信箱82分箱清华大学专利办公室

  • 入库时间 2023-12-17 19:11:48

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-03-21

    未缴年费专利权终止 IPC(主分类):G10L19/02 专利号:ZL2007100654000 申请日:20070413 授权公告日:20110914

    专利权的终止

  • 2011-09-14

    授权

    授权

  • 2007-11-28

    实质审查的生效

    实质审查的生效

  • 2007-10-03

    公开

    公开

说明书

技术领域

本发明涉及压缩音频信号的数字处理和恢复,及其实现。本发明属于音频信号处理领域。

背景技术

音频错误隐藏技术是一种基于音频信号特性,结合人的生理、心理系统特点,对传输错误导致的丢失信息的恢复和估计的技术。播放器通过音频差错隐藏处理,降低音质损坏程度,达到提高接收端音频质量的目的。

音频信号处理中通常采用子带编码和变换编码实现压缩音频信号的目的。传统的采用子带编码的数字音频信号编码、解码装置如图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个样值的幅度。

>>>E>l>>=>>Σ>>k>=>1>>K>>>>(>>x>>l>,>k>>>)>>2>>->->->>(>1>)>>>s>

按等式(2)利用乘法器计算子序列对之间能量比及其倒数,其中l′,l′=1,2,..,L-2是子序列对的序号,Rtf,l′是第l′个子序列对之间能量比,Rft,l′是Rtf,l′的倒数,El′,El′+1,El′+2是等式(1)计算出的子序列能量。

>>>R>>tf>,>>l>′>>>>=>>>>E>>l>′>>>+>>E>>>l>′>>+>1>>>>>>E>>>l>′>>+>1>>>+>>E>>>l>′>>+>2>>>>>,>>s>and >>>R>>ft>,>>l>′>>>>=>>>>E>>>l>′>>+>1>>>+>>E>>>l>′>>+>2>>>>>>E>>l>′>>>+>>E>>>l>′>>+>1>>>>>->->->>(>2>)>>>s>

按等式(3)运算器计算能量比序列及其倒数序列的方差Vtf和Vft

>>>V>tf>>=>>>>(>L>->2>)>>·>>Σ>>>l>′>>=>1>>>(>L>->2>)>>sup>>R>>tf>.>>l>′>>>2sup>>->>>(>>Σ>>>l>′>>=>1>>>(>L>->2>)>>>>R>>tf>,>>l>′>>>>)>>2>>>>>(>L>->2>)>>·>>(>>(>L>->2>)>>->1>)>>>>>s>和 >>>V>ft>>=>>>>(>L>->2>)>>·>>Σ>>>l>′>>=>1>>>(>L>->2>)>>sup>>R>>ft>.>>l>′>>>2sup>>->>>(>>Σ>>>l>′>>=>1>>>(>L>->2>)>>>>R>>ft>,>>l>′>>>>)>>2>>>>>(>L>->2>)>>·>>(>>(>L>->2>)>>->1>)>>>>->->->>(>3>)>>>s>

利用比较器,将求得的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”时,两输入序列线性相关,在0与1之间相关系数越大,两序列的线性相关度越大,否则越小。

按公式(4),利用运算器来实现相关系数计算,

>>r>=>>>r>AB>>>>r>AA>>·>>r>BB>>>>->->->>(>4>)>>>s>

其中A、B是输入信号频谱幅度序列,序列长度均为N,An,Bn分别是序列A、B的第n个样值,n=1,2,...,N,rAB是序列A与B间互协方差:

>>>r>AB>>=>N>>Σ>>n>=>1>>N>>>A>n>>>B>n>>->>Σ>>n>=>1>>N>>>A>n>>>Σ>>n>=>1>>N>>>B>n>>,>>s>

rAA、rBB是A与B各自的自协方差:

>>>r>AA>>=>N>>Σ>>n>=>1>>N>sup>>A>n>2sup>>->>>(>>Σ>>n>=>1>>N>>>A>n>>)>>2>>>s>与 >>>r>BB>>=>N>>Σ>>n>=>1>>N>sup>>B>n>2sup>>->>>(>>Σ>>n>=>1>>N>>>B>n>>)>>2>>.>>s>

频谱能量计算,利用等式(5)计算得到:

>>E>=>>Σ>>k>=>1>>K>>>>[>X>>(>k>)>>]>>2>>->->->>(>5>)>>>s>

式中,E是计算得到的频谱能量,K是输入信号频谱幅度序列的长度,即频点数,X(k),k=1,2,...,K是序列第k个频点上的幅度。

本发明利用以上的时域瞬态指示标志和频域的帧间频谱相关系数,通过由比较器和译码器组成的状态译码器进行状态判断,可输出两大类10个状态。

如图6所示,根据C1帧瞬态指示标志为“0”或为“1”分成两大类:稳态和瞬态,即以错误帧的前一帧是稳态或瞬态将错误帧分为两种状态:稳态和瞬态。

一、当错误帧为稳态时,设定一个相关性判别门限roffo,roffo取值范围是(0.5,1]。一个状态译码器利用这个相关性判别门限,将稳态下的错误帧与相邻帧间的频谱相关性状态进行一级分解,分成四类:

1、 >>>r>1>>≥sup>>r>off>osup>>>s>且 >>>r>2>>≥sup>>r>off>osup>>,>>s>为状态一,

2、 >>>r>1>><sup>>r>off>osup>>>s>且 >>>r>2>>≥sup>>r>off>osup>>,>>s>为状态二,

3、 >>>r>0>>≥sup>>r>off>osup>>>s>且 >>>r>1>>≥sup>>r>off>osup>>>s>且 >>>r>2>><sup>>r>off>osup>>,>>s>为状态三,

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所示的帧分布,插值利用运算器采用如下方法实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>>a>1>>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>>a>1>>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>,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帧的能量:

>>>E>>C>1>>>=>>Σ>>k>=>1>>K>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>

>>>E>>Er>1>>>=>>Σ>>k>=>1>>K>>>>[>>a>b>>·>>X>>Er>1>>>>(>k>)>>]>>2>>>s>,k,k=1,2,...,K是频点序号                     (7)

其中EC1,EEr1是C1帧和Er1帧的频谱能量,K是帧的频谱序列长度,XC1(k),XEr1(k)分别是C1帧和Er1帧的第k个频点上频谱幅度样值,ab是比例修正因子,由于Er1帧仅是重叠变换中前帧重叠部分,与其重叠的另一半因误码无法恢复,因此其取值范围是[1,2]。

用运算器求其能量比开平方:

>>>fa>b>>=>>>>E>>C>1>>>>E>>Er>1>>>>>>s>

乘法器求Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>a>b>>·>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>b>>·sup>>X>>Er>1>>rsup>>>(>k>)>>>s>,k=1,2,...,K

其中XEr1r(k),XEr2r(k)是插值得到的Er1帧和Er2帧频谱第k个频点上的幅度样值。

1c.状态一(c),通过运算器采用Er1帧和C4帧间的残留插值实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>a>>c>1>>>·>>X>>Er>1>>>>(>k>)>>+>>a>>c>2>>>·>>X>>C>4>>>>(>k>)>>>s>,k=1,2,...,K

其中ac1,ac2是线性插值系数,其取值范围是(0,1),且满足ac1+ac2=1。

1d.状态一(d),通过运算器采用等式(6)提供的插值方法。

2、状态二,采用残留信息插值,通过运算器采用如下处理方法实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>a>>d>1>>>×>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>a>>d>1>>>×>>X>>Er>1>>>>(>k>)>>+>>a>>d>2>>>×>>(>>X>>C>4>>>>(>k>)>>->>a>>d>1>>>·>>X>>Er>1>>>>(>k>)>>)>>>s>(8)

其中XC4是C4帧的频谱幅度,XEr1是Er1帧残留信息的频谱幅度,XEr1r,XEr2r分别是处理得到的Er1帧和Er2帧的频谱幅度,ad1,ad2分别是计算Er1帧和Er2帧的频谱幅度时的线性插值系数,ad1取值范围是[1,2),ad2取值范围是(0,1)。

3、状态三,采用能量预测插值,通过运算器如下处理方法实现:

先运算器计算C0帧、C1帧频域幅度能量:

>>>E>>C>0>>>=>>Σ>>k>=>1>>K>>>>[>>X>>C>0>>>>(>k>)>>]>>2>>>s>

>>>E>>C>1>>>=>>Σ>>k>=>1>>K>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>,k=1,2,...,K                                 (9)

其中EC0,EC1分别是C0帧和C1帧频域样值能量,K是C0帧和C1帧频域的频点总数,XC0(k),XC1(k)分别是C0帧和C1帧频域第k个频点样值幅度。

通过运算器计算能量比开平方fae

>>>fa>e>>=>>>>E>>C>1>>>>E>>C>0>>>>>->->->>(>10>)>>>s>

通过乘法器计算Er1帧和Er2帧频谱幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>fa>e>>×>>X>>C>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>e>>×>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K                             (11)

4、状态四,先通过状态译码器判断状态,然后通过运算器处理方法如下:

后帧C4为稳态,Er1帧也为稳态时,通过运算器采用与状态二相同的残留信息插值处理方法;

后帧C4为稳态,Er1帧为瞬态时,通过运算器利用能量衰减、淡出插值方法实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>de>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

其中fade是衰减因子,取值范围是(0,1)。

后帧C4为瞬态,Er1帧为稳态时,通过运算器如下方法实现:

通过运算器利用等式(7)类似的方法,先求C1帧、Er1帧的频域幅度能量

>>>E>>C>1>>>=>>Σ>>k>=>1>>K>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>

>>>E>>Er>1>>>=>>Σ>>k>=>1>>K>>>>[>>a>b>>·>>X>>Er>1>>>>(>k>)>>]>>2>>>s>

其中ab是比例修正因子,由于Er1帧仅是重叠变换中前帧重叠部分,与其重叠的另一半因误码无法恢复,因此其取值范围是[1,2]。

通过运算器计算能量比开平方:

>>>fa>b>>=>>>>E>>C>1>>>>E>>Er>1>>>>>>s>

通过乘法器计算Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>a>b>>·>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>b>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

其他状态时,通过运算器利用能量衰减、淡出插值方法实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>de>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

其中fade是衰减因子,取值范围是(0,1)。

三、瞬态时

1、状态五,通过运算器采用等式(6)提供的插值方法;

2、状态六,通过运算器采用等式(8)定义的插值方法;

3、状态七,状态译码器先判断四种状态,然后运算器插值:

当Er1帧为稳态,C4帧为稳态时,通过运算器采用等式(6)提供的插值方法;

当Er1帧为稳态,C4帧为瞬态时,通过运算器采用能量衰减、淡出的方法,

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>>>=>>fa>de>>>′>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

其中的fade′是衰减因子,取值范围是(0,1)。

当Er1帧为瞬态,C4帧为稳态时,通过运算器利用帧间能量比进行插值,

先通过运算器计算Er1帧和C4帧能量,

>>>E>>Er>1>>>=>>Σ>>k>=>1>>K>>>>[>>X>>Er>1>>>>(>k>)>>]>>2>>>s>

>>>E>>C>4>>>=>>Σ>>k>=>1>>K>>>>[>>X>>C>4>>>>(>k>)>>]>>2>>>s>

再通过运算器计算其能量比开平方,

>>>>fa>b>>′>>=>>>>E>>C>4>>>>E>>Er>1>>>>>>s>

插值因子:af=ab′·(fab′-1)+1,其中ab′是修正因子,取值范围[0.5,1)

通过运算器利用插值因子af计算Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>a>f>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

当Er1帧为瞬态,C4帧为瞬态时,通过运算器利用能量衰减淡出插值求Er1帧和Er2帧频域幅度,

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>>fa>de>>′>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,K

其中fade′是衰减因子,取值范围是(0,1)。

本发明求频谱的相位时,根据以上所述的利用时域瞬态特征标志和频域帧间相关系数的分类方法,采用复制相邻正确帧相位的方法,选择方法如下。

稳态时,四个一级分类中,

状态一及其四个二级分类均通过寄存器采用复制C1帧相位的方法:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,K是频点序号                      (12)

其中,PC1(k)是C1帧第k个频点上的相位值,PEr1r(k),PEr2r(k)是恢复频谱系数所需的Er1帧和Er2帧第k个频点上的相位;

状态二,通过寄存器采用复制C4帧相位的方法:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,K

其中,PC4(k)是C4帧第k个频点上的相位值,PEr1r(k),PEr2r(k)是恢复频谱系数所需的Er1帧和Er2帧第k个频点上的相位;

状态三,通过寄存器采用复制C1帧相位的方法:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,K;

状态四,

如果r2-r1≥roff_d′,其中roff_d′是设定的相关系数差值门限,取值范围是[0.1,0.4],利用寄存器采用复制C4帧相位的方法:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,K,

如果r2-r1<roff_d′,利用寄存器采用复制C1帧相位的方法:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,K;

瞬态时,

状态五,

如果T4=0,其中T4是C4帧的瞬态指示标志,利用寄存复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,K,

如果T4=1,利用寄存复制C1帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,K;

状态六,利用寄存复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,K;

状态七,

利用寄存复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,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>=>1>>L>sup>>X>test>lsup>>>(>k>+>l>)>>·>>x>h>>>(>k>)>>,>>s>

其中C(l)表示第l个测试序列同参考序列间的相似性值,xtextl(k)表示第l个测试序列的第k个样值,xh(k)表示参考序列第k个样值,L是参考序列长度。

利用比较器比较L个相似性值,取最大值对应的测试序列序号,得到匹配值δ。

重建错误帧Er1和Er2时,先通过寄存器重建一个2·K+M, >>M>∈>[>>1>2>>L>,>L>]>>s>长的序列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个样值分别利用运算器乘窗函数后相加,处理方法如下:

>sup>>x>>Er>1>>srsup>>>(>m>)>>=sup>>x>>Er>1>>rmsup>>>(>m>)>>·>wr>>(>m>)>>+>>x>>Er>1>>>>(>m>)>>·>wl>>(>m>)>>,>m>=>1,2>,>.>.>.>,>M>->->->>(>14>)>>>s>

其中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>∈>[>>1>2>>L>,>L>]>,>>s>m表示第m个值。

与前边缘平滑类似,一个可选择项(该可选择项通过设定的选项参数op2来实现,op2为一逻辑变量,为“1”时选择有效,为“0”时选择无效):进行后边缘平滑。寄存器取后帧C4序列xC4的首M个样值,与时域相位匹配中得到序列yl利用运算器乘窗函数后相加,方法同等式(14)一样:

>sup>>x>>C>4>>srsup>>>(>m>)>>=>>x>>C>4>>>>(>m>)>>·>wr>>(>m>)>>+>>y>l>>>(>m>)>>·>wl>>(>m>)>>.>>s>

瞬态时,只进行前边缘平滑,处理方法同稳态时相同,不进行时域相位匹配和后边缘平滑。

本发明选择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同相关性判别门限 >sup>>r>off>osup>>=>0.5>>s>间的关系,译码器利用状态分类的方法,进行稳态处理中的一级分解,判决结果为四个状态:

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所示的帧分布,插值采用如下方法实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>0.4>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>0>.>8>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>,k=1,2,...,128

其中XC1,XC4分别是C1帧和C4帧的频谱幅度,XEr1r,XEr2r分别是处理得到的Er1帧和Er2帧的频谱幅度。

在状态1进行二级分类时,

1a、状态一(a),采用等式(6)提供的插值方法;

1b、状态一(b),采用如下的后向插值方法:

先计算C1帧和Er1帧的能量:

>>>E>>C>1>>>=>>Σ>>k>=>1>>128>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>

>>>E>>Er>1>>>=>>Σ>>k>=>1>>128>>>>[>1.6>×>>X>>Er>1>>>>(>k>)>>]>>2>>>s>

其中EC1,EEr1是C1帧和Er1帧的频谱能量,XC1(k),XEr1(k)分别是C1帧和Er1帧的第k(k=1,2,...,128)个频谱幅度样值。

求其能量比开平方:

>>>fa>b>>=>>>E>>C>1>>>/>>E>>Er>1>>>>>s>

求Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>1.6>×>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>b>>·>sup>>X>>Er>1>>rsup>>>(>k>)>>>s>,k=1,2,...,128

其中XEr1r(k),XEr2r(k)是插值得到的Er1帧和Er2帧频谱第k个频点上的幅度样值。

1c、状态一(c),采用Er1帧和C4帧间的插值实现:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>0.5>×>>X>>Er>1>>>>(>k>)>>+>0.5>×>>X>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

1d、状态一(d),采用等式(6)提供的插值方法,插值因子取值为:a1=0.3,a2=0.6。

相位计算,利用寄存器复制C1帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,128      (16)

当选择项参数op1为“0”时,采用等式(6)提供的插值方法,相位计算同(16)式定义。

2、状态二,采用残留信息插值:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>1.6>×>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=sup>>X>>Er>1>>rsup>>>(>k>)>>+>0.45>×>>(>>X>>C>4>>>>(>k>)>>-sup>>X>>Er>1>>rsup>>>(>k>)>>)>>>s>,k=1,2,...,128

其中XC4(k)是C4帧的第k个频点的频谱幅度,XEr1(k)是Er1帧残留信息的第k个频点的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的第k个频点的频谱幅度。

相位计算,利用寄存器复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

3、状态三,采用能量预测插值:

先计算C0帧、C1帧频域幅度能量:

>>>E>>C>0>>>=>>Σ>>k>=>1>>128>>>>[>>X>>C>0>>>>(>k>)>>]>>2>>>s>

>>>E>>C>1>>>=>>Σ>>k>=>1>>128>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>

其中EC0,EC1分别是C0帧和C1帧频域样值能量,XC0(k),XC1(k)分别是C0帧和C1帧频域第k(k=1,2,...,128)个频点样值幅度。

计算能量比开平方fae

>>>fa>e>>=>>>>E>>C>1>>>>E>>C>0>>>>>>s>

计算Er1帧和Er2帧频谱幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>fa>e>>×>>X>>C>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>fa>e>sup>>>×>X>>>Er>1>>rsup>>>(>k>)>>>s>,k=1,2,...,128

相位计算,利用寄存器复制C1帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,128。

4、状态四,利用译码器结合后帧状态采用平滑的淡出处理:

后帧C4为稳态,Er1帧也为稳态时,采用与状态二相同的处理方法;

后帧C4为稳态,Er1帧为瞬态时,直接将Er1帧作衰减处理,求Er1帧和Er2帧的幅度值:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>0.6>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,128

后帧C4为瞬态,Er1帧为稳态时,利用C1帧和Er1帧的能量比为衰减因子,对Er1帧作衰减处理求Er2帧的幅度值:

利用等式(7)类似的方法,先求C1帧、Er1帧的频域幅度能量

>>>E>>C>1>>>=>>Σ>>k>=>1>>128>>>>[>>X>>C>1>>>>(>k>)>>]>>2>>>s>

>>>E>>Er>1>>>=>>Σ>>k>=>1>>128>>>>[>1.6>·>>X>>Er>1>>>>(>k>)>>]>>2>>>s>

计算能量比开平方:

>>>>fa>b>>′>>=>>>>E>>C>1>>>>E>>Er>1>>>>>>s>

计算Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>1.6>·>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>>fa>b>>′>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,128

相位计算,先利用比较译码器分状态,然后复制:

如果r2-r1≥0.25,利用寄存器复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

r2-r1<0.25,利用寄存器复制C1帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,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)提供的双边线性插值方法:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>0.2>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>X>>C>1>>>>(>k>)>>+>0>.>8>×>>(>>X>>C>4>>>>(>k>)>>->>X>>C>1>>>>(>k>)>>)>>>s>,k=1,2,...,128

其中XC1(k),XC4(k)分别是C1帧和C4帧的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的频谱幅度。

相位计算,利用译码器和寄存器实现:

如果T4=0,复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

如果T4=1,复制C1帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>1>>>>(>k>)>>>s>,k=1,2,...,128

6、状态六,采用等式(8)提供的残留信息插值:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>1.6>×>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=sup>>X>>Er>1>>rsup>>>(>k>)>>+>0.5>×>>(>>X>>C>4>>>>(>k>)>>-sup>>X>>Er>1>>rsup>>>(>k>)>>)>>>s>,k=1,2,...,128

其中XC4(k)是C4帧的频谱幅度,XEr1(k)是Er1帧残留信息的频谱幅度,XEr1r(k),XEr2r(k)分别是处理得到的Er1帧和Er2帧的频谱幅度。

相位计算,利用寄存器复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

3、状态七,利用译码器和运算器结合Er1帧和C4帧的瞬态指示标志来插值,

当T0=0,T4=0时,采用等式(6)提供的双边线性插值方法:

当T0=0,T4=1时,采用衰减、淡出的方法,

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>0.4>×>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,128

当T0=1,T4=0,利用能量比进行插值,

先计算器计算Er1帧和C4帧能量,

>>>E>>Er>1>>>=>>Σ>>k>=>1>>128>>>>[>>X>>Er>1>>>>(>k>)>>]>>2>>>s>

>>>E>>C>4>>>=>>Σ>>k>=>1>>128>>>>[>>X>>C>4>>>>(>k>)>>]>>2>>>s>

再计算其能量比开平方,

>>>>fa>b>>′>>=>>>E>>C>4>>>/>>E>>Er>1>>>>>s>

插值因子:af=0.9·(fab′-1)+1

利用插值因子af计算Er1帧和Er2帧幅度:

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>>a>f>>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,128

当T0=1,T4=1时,利用能量衰减淡出插值求Er1帧和Er2帧频域幅度,

>sup>>X>>Er>1>>rsup>>>(>k>)>>=>>X>>Er>1>>>>(>k>)>>>s>

>sup>>X>>Er>2>>rsup>>>(>k>)>>=>0.3>·>>X>>Er>1>>>>(>k>)>>>s>,k=1,2,...,128

相位计算,利用寄存器复制C4帧相位:

>sup>>P>>Er>1>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>

>sup>>P>>Er>2>>rsup>>>(>k>)>>=>>P>>C>4>>>>(>k>)>>>s>,k=1,2,...,128

当计算得到Er1帧和Er2帧的频谱的幅度和相位后,运算器求其复数频谱系数:

>sup>>FX>>Er>1>>rsup>>>(>k>)>>=sup>>X>>Er>1>>rsup>>>(>k>)>>·>>(>cos>>(sup>>P>>Er>1>>rsup>>>(>k>)>>)>>+>i>·>sin>>(sup>>P>>Er>1>>rsup>>>(>k>)>>)>>)>>>s>

>sup>>FX>>Er>2>>rsup>>>(>k>)>>=sup>>X>>Er>2>>rsup>>>(>k>)>>·>>(>cos>>(sup>>P>>Er>2>>rsup>>>(>k>)>>)>>+>i>·>sin>>(sup>>P>>Er>2>>rsup>>>(>k>)>>)>>)>>>s>,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>=>1>>32>sup>>x>test>lsup>>>(>k>+>l>)>>·>>x>h>>>(>k>)>>,>>s>

其中cc(l)表示第l个测试序列同参考序列间的相似性值,xtestl(k)表示第l个测试序列的第k个样值,xh(k)表示参考序列第k个样值。

利用比较器比较32个相似性值,取最大值对应的测试序列序号,就是求得的匹配值δ。

重建错误帧Er1和Er2时,先利用寄存器重建一个(2×128+20)长的序列y,前2×(128-δ)个样值是xEr1r和xEr2r的第δ到128样值组成的序列 >>>y>o>>=>[sup>>x>>Er>1>>rsup>>>(>δ>:>128>)>>,sup>>x>>Er>2>>rsup>>>(>δ>:>128>)>>]>,>>s>再取yo的前2δ+20个序列放在yo之后共同组成序列y=[yo,yo(1∶(2δ+20))]。序列y的前128个样值作为序列xEr1rm,次128个样值作为序列xEr2rm,最后20个样值作为可选项后边缘平滑的处理数据yl

为减少时频变换带来的边缘突变,在稳态处理过程中,利用运算器进行前边缘平滑。取处理生成的Er1帧xEr1rm前20个样值,同缓冲区内保存的解码得到的Er1帧xEr1的前20个样值分别乘窗系数,然后相加,前边缘平滑处理方法如下:

>sup>>x>>Er>1>>srsup>>>(>m>)>>=sup>>x>>Er>1>>rmsup>>>(>m>)>>·>wr>>(>m>)>>+>>x>>Er>1>>>>(>m>)>>·>wl>>(>m>)>>->->->>(>17>)>>>s>

其中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)相同:

>sup>>x>>C>4>>srsup>>>(>m>)>>=>>x>>C>4>>>>(>m>)>>·>wr>>(>m>)>>+>>y>l>>>(>m>)>>·>wl>>(>m>)>>.>>s>

最终输出运算结果:

稳态时是经过时域相位匹配和前边缘平滑的Er1帧和Er2帧序列xEr1sr,xEr2rm和后边缘平滑的C4帧序列xC4sr,将此三个序列输入到五帧长缓冲区中的B2帧,B3帧和B4帧代替错误数据。

瞬态时是经过前边缘平滑的Er1帧和Er2帧序列xEr1sr,xEr2r,将此两个序列输入到五帧长缓冲区中的B2帧,B3帧代替错误数据,B4帧没有变化。

然后退出算法,就此完成一个子带上的错误帧重建处理过程。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号