解码方法和解码装置与流程

文档序号:13983674阅读:191来源:国知局
解码方法和解码装置与流程

本发明涉及编解码领域,尤其是涉及一种解码方法和解码装置。



背景技术:

随着技术的不断进步,用户对话音质量的需求越来越高,其中提高话音的带宽是提高话音质量提高的主要方法。通常采用频带扩展技术来提升带宽,频带扩展技术分为时域频带扩展技术和频域频带扩展技术。

在时域频带扩展技术中,丢包率是一个影响信号质量的关键因素。在丢包情况下,需要尽可能正确地恢复出丢失帧。解码端通过解析码流信息判断是否发生帧丢失,若没有发生帧丢失,则进行正常的解码处理,若发生帧丢失则,需要进行丢帧处理。

在进行丢帧处理时,解码端根据前一帧的解码结果得到高频带信号,并且利用设定的固定的子帧增益和对前一帧的全局增益乘以固定的衰减因子得到的全局增益对高频带信号进行增益调整,获得最终的高频带信号。

由于在丢帧处理时采用的子帧增益为设定的固定值,因此,可能会产生频谱不连续现象,使得丢帧前后的过渡不连续,重建信号出现杂音现象,降低了语音质量。



技术实现要素:

本发明的实施例提供了一种解码方法和解码装置,能够在进行丢帧处理时避免减少杂音现象,从而提高语音质量。

第一方面,提供了一种解码方法,包括:在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号;根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益;确定当前帧的全局增益;根据全局增益和上上述至少两个子帧的子帧增益,对所合成的高频带信号进行调整以得到当前帧的高频带信号。

结合第一方面,在第一种可能的实现方式下,根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益,包括:根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益;根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第一种可能的实现方式,在第二种可能的实现方式中,根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益,包括:根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度;根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益。

结合第二种可能的实现方式,在第三种可能的实现方式中,根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度,包括:对当前帧的前一帧的至少两个子帧之间的增益梯度进行加权平均,得到第一增益梯度,其中,在进行加权平均时,当前帧的前一帧中距当前帧越近的子帧之间的增益梯度所占的权重越大。

结合第二种可能的实现方式或第三种可能的实现方式,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式得到:其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,αj+1≥αj,其中起始子帧的子帧增益由下列公式得到:

其中gainshape[n-1,i-1]为第n-1帧的第i-1子帧的子帧增益,gainshape[n,0]为当前帧的起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,由在当前帧之前接收到的最后一个帧的类型和第一增益梯度的正负符号确定,由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合第二种可能的实现方式,在第五种可能的实现方式中,根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度,包括:将当前帧的前一帧的最后一个子帧之前的子帧与当前帧的前一帧的最后一个子帧之间的增益梯度作为第一增益梯度。

结合第二种或第五种可能的实现方式,在第六种可能的实现方式中,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式得到:gaingradfec[0]=gaingrad[n-1,i-2],其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,i-2]为当前帧的前一帧的第i-2子帧与第i-1子帧之间的增益梯度,其中起始子帧的子帧增益由下列公式得到:

gainshapetemp[n,0]=gainshape[n-1,i-1]+λ1*gaingradfec[0],

gainshapetemp[n,0]=min(λ2*gainshape[n-1,i-1],gainshapetemp[n,0]),

gainshape[n,0]=max(λ3*gainshape[n-1,i-1],gainshapetemp[n,0]),

其中gainshape[n-1,i-1]为当前帧的前一帧的第i-1子帧的子帧增益,gainshape[n,0]为起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,0<λ1<1.0,1<λ2<2,0<λ3<1.0,λ1由在当前帧之前接收到的最后一个帧的类型和当前帧的前一帧中的最后两个子帧的子帧增益的倍数关系确定,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合上述第二种至第六种可能的实现方式中的任一种,在第七种可能的实现方式中,根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益,包括:根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

结合第一种至七种可能的实现方式中的任何一种,在第八种可能的实现方式中,根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益,包括:根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度;根据当前帧的至少两个子帧间的增益梯度和当前帧的起始子帧的子帧增益,估计上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第八种可能的实现方式,在第九种可能的实现方式中,每个帧包括i个子帧,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,包括:对当前帧的前一帧的第i子帧与第i+1子帧的之间增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重。

结合第八或第九种可能的实现方式,在第十种可能的实现方式中,当当前帧的前一帧为第n-1帧,当前帧为第n帧时,当前帧的至少两个子帧间的增益梯度由下列公式来确定:

gaingradfec[i+1]=gaingrad[n-2,i]*β1+gaingrad[n-1,i]*β2,

其中gaingradfec[i+1]为第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-2,i]为当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-1,i]为当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,β2>β1,β2+β1=1.0,i=0,1,2,...,i-2;其中上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3;

gainshape[n,i]=gainshapetemp[n,i]*β4;

其中,gainshape[n,i]为当前帧的第i子帧的子帧增益,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,0≤β3≤1.0,0<β4≤1.0,β3由gaingrad[n-1,i]与gaingrad[n-1,i+1]的倍数关系和gaingrad[n-1,i+1]的正负符号确定,β4由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合第八种可能的实现方式,在第十一种可能的实现方式中,每个帧包括i个子帧,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,包括:对当前帧的第i子帧之前的i+1个子帧之间的i个增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之的增益梯度,其中i=0,1…,i-2,距第i子帧越近的子帧之间的增益梯度所占的权重越大。

结合第八种或第十一种可能的实现方式,在第十二种可能的实现方式中,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括四个子帧时,当前帧的至少两个子帧间的增益梯度由以下公式确定:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4

其中gaingradfec[j]为当前帧的第j子帧与第j+1子帧之间的增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,j=0,1,2,...,i-2,γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,其中γ1、γ2、γ3和γ4由接收到的最后一个帧的类型确定,其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],其中i=1,2,3,其中gainshapetemp[n,0]为第一增益梯度;

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i])

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i])

其中,i=1,2,3,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,gainshape[n,i]为当前帧的第i子帧的子帧增益,γ5和γ6由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定,1<γ5<2,0<=γ6<=1。

结合第八种至第十二种可能的实现方式中的任何一种,在第十三种可能的实现方式下,根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,估计上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益,包括:根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第一方面或上述任何一种可能的实现方式,在第十四种可能的实现方式中,估计当前帧的全局增益,包括:根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益。

结合第十四种可能的实现方式,在第十五种可能的实现方式中,当前帧的全局增益由以下公式确定:gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

第二方面,提供了一种解码方法,包括:在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号;确定当前帧的至少两个子帧的子帧增益;根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益;根据全局增益和至少两个子帧的子帧增益,对所合成的高频带信号进行调整以得到当前帧的高频带信号。

结合第二方面,在第一种可能的实现方式中,当前帧的全局增益由以下公式确定:gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

第三方面,提供了一种解码装置,包括:生成模块,用于在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号;确定模块,用于根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益,并且确定当前帧的全局增益;调整模块,用于根据确定模块确定的全局增益和上述至少两个子帧的子帧增益对生成模块合成的高频带信号进行调整以得到当前帧的高频带信号。

结合第三方面,在第一种可能的实现方式中,确定模块根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益,并且根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,确定模块根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度,并根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益。

结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,确定模块对当前帧的前一帧的至少两个子帧之间的增益梯度进行加权平均,得到第一增益梯度,其中在进行加权平均时,当前帧的前一帧中距当前帧越近的子帧之间的增益梯度所占的权重越大。

结合第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第四种可能的实现方式中,当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧,第一增益梯度由下列公式得到:其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,αj+1≥αj,其中起始子帧的子帧增益由下列公式得到:

其中gainshape[n-1,i-1]为第n-1帧的第i-1子帧的子帧增益,gainshape[n,0]为当前帧的起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,由在当前帧之前接收到的最后一个帧的类型和第一增益梯度的正负符号确定,由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合第三方面的第二种可能的实现方式,在第五种可能的实现方式中,确定模块将当前帧的前一帧的最后一个子帧之前的子帧与当前帧的前一帧的最后一个子帧之间的增益梯度作为第一增益梯度。

结合第三方面的第二种或第五种可能的实现方式,在第六种可能的实现方式中,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式得到:gaingradfec[0]=gaingrad[n-1,i-2],其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,i-2]为当前帧的前一帧的第i-2子帧到第i-1子帧之间的增益梯度,其中起始子帧的子帧增益由下列公式得到:

gainshapetemp[n,0]=gainshape[n-1,i-1]+λ1*gaingradfec[0],

gainshapetemp[n,0]=min(λ2*gainshape[n-1,i-1],gainshapetemp[n,0]),

gainshape[n,0]=max(λ3*gainshape[n-1,i-1],gainshapetemp[n,0]),

其中gainshape[n-1,i-1]为当前帧的前一帧的第i-1子帧的子帧增益,gainshape[n,0]为起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,0<λ1<1.0,1<λ2<2,0<λ3<1.0,λ1由在当前帧之前接收到的最后一个帧的类型和当前帧的前一帧的最后两个子帧的子帧增益的倍数关系确定,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合第三方面的第二种至第六种可能的实现方式中的任一种,在第七种可能的实现方式中,确定模块根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

结合第三方面的第第一种至七种可能的实现方式中的任一种,在第八种可能的实现方式中,确定模块根据至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,估计上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第三方面的第八种可能的实现方式,在第九种可能的实现方式中,每个帧包括i个子帧,确定模块对当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重。

结合第三方面的第八种或九种可能的实现方式,在第十种可能的实现方式中,当前帧的至少两个子帧间的增益梯度由下列公式来确定:

gaingradfec[i+1]=gaingrad[n-2,i]*β1+gaingrad[n-1,i]*β2,

其中gaingradfec[i+1]为第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-2,i]为当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-1,i]为当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,β2>β1,β2+β1=1.0,i=0,1,2,...,i-2;其中上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3;

gainshape[n,i]=gainshapetemp[n,i]*β4;

其中,gainshape[n,i]为当前帧的第i子帧的子帧增益,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,0≤β3≤1.0<=1.0,0<β4≤1.0,β3由gaingrad[n-1,i]与gaingrad[n-1,i+1]的倍数关系和gaingrad[n-1,i+1]的正负符号确定,β4由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

结合第三方面的第八种可能的实现方式,在第十一种可能的实现方式中,确定模块对当前帧的第i子帧之前的i+1个子帧之间的i个增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧的之间增益梯度,其中i=0,1…,i-2,距第i子帧越近的子帧之间的增益梯度所占的权重越大。

结合第三方面的第八种或第十一种可能的实现方式,在第十二种可能的实现方式中,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括四个子帧时,当前帧的至少两个子帧间的增益梯度由以下公式确定:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4

其中gaingradfec[j]为当前帧的第j子帧与第j+1子帧之间的增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,j=0,1,2,...,i-2,γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,其中γ1、γ2、γ3和γ4由接收到最后一个帧的类型确定,其中上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],其中i=1,2,3,其中gainshapetemp[n,0]为第一增益梯度;

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i])

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i])

其中,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,i=1,2,3,gainshape[n,i]为当前帧的第i子帧的增益,γ5和γ6由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定,1<γ5<2,0<=γ6<=1。

结合第八种至第十二种可能的实现方式中的任何一种,在第十三种可能的实现方式中,确定模块根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计上述至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

结合第三方面或上述任何一种可能的实现方式,在第十四种可能的实现方式中,确定模块根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的当前帧的前一帧的全局增益,估计当前帧的全局增益。

结合第三方面的第十四种可能的实现方式,在第十五种可能的实现方式中,当前帧的全局增益由以下公式确定:gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

第四方面,提供了一种解码装置,包括:生成模块,用于在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号;确定模块,用于确定当前帧的至少两个子帧的子帧增益,根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度,并且根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益;调整模块,用于根据确定模块确定的全局增益和至少两个子帧的子帧增益,对生成模块合成的高频带信号进行调整以得到当前帧的高频带信号。

结合第四方面,在第一种可能的实现方式中,gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

本发明的实施例可以在确定当前帧为丢失帧时,根据当前帧之前的子帧的子帧增益和当前帧之前的子帧间的增益梯度确定当前帧的子帧的子帧增益,并利用所确定的当前帧的子帧增益对高频带信号进行调整。由于当前帧的子帧增益是根据当前帧之前的子帧的子帧增益的梯度(变化趋势)得到的,使得丢帧前后的过渡有更好的连续性,从而减少了重建信号的杂音,提高了语音质量。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明的一个实施例的一种解码方法的示意性流程图。

图2是根据本发明的另一实施例的解码方法的示意性流程图。

图3a是根据本发明的一个实施例的当前帧的前一帧的子帧增益的变化趋势图。

图3b是根据本发明的另一实施例的当前帧的前一帧的子帧增益的变化趋势图。

图3c是根据本发明的又一实施例的当前帧的前一帧的子帧增益的变化趋势图。

图4是根据本发明的实施例的估计第一增益梯度的过程的示意图。

图5是根据本发明的实施例的估计当前帧的至少两个子帧间的增益梯度的过程的示意图。

图6是根据本发明的实施例的解码过程的示意性流程图。

图7是根据本发明的一个实施例的解码装置的示意性结构图。

图8是根据本发明的另一实施例的解码装置的示意性结构图

图9是根据本发明的另一实施例的解码装置的示意性结构图。

图10是根据本发明的实施例的解码装置的示意性结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在进行语音信号处理时,为了降低编解码器在进行语音信号处理时的运算复杂度及处理时延,一般会将语音信号进行分帧处理,即将语音信号分为多个帧。另外,在语音发生时,声门的振动具有一定的频率(对应于基音周期),当基音周期较小时,如果帧长过长,会导致一帧内会有多个基音周期存在,这样计算的基音周期不准确,因此,可以将一帧分为多个子帧。

在时域频带扩展技术中,在编码时,首先,由核心编码器对信号的低频带信息进行编码,得到的基音周期、代数码书及各自增益等参数,并对信号的高频带信息进行线性预测编码(linearpredictivecoding,lpc)分析,得到高频带lpc参数,从而得到lpc合成滤波器;其次,基于基音周期、代数码书及各自增益等参数计算得到高频带激励信号,并由高频带激励信号经过lpc合成滤波器合成高频带信号;然后,比较原始高频带信号与合成高频带信号得到子帧增益和全局增益;最后,将lpc参数转化为(linearspectrumfrequency,lsf)参数,并将lsf参数与子帧增益和全局增益量化后进行编码。

在解码时,首先,对lsf参数、子帧增益和全局增益进行反量化,并将lsf参数转化成lpc参数,从而得到lpc合成滤波器;其次,利用由核心解码器得到基音周期、代数码书及各自增益等参数,基于基音周期、代数码书及各自增益等参数得到高频带激励信号,并由高频带激励信号经过lpc合成滤波器合成高频带信号;最后根据子帧增益和全局增益对高频带信号进行增益调整以恢复丢失帧的高频带信号。

根据本发明的实施例,可以通过解析码流信息确定当前帧是否发生帧丢失,如果当前帧没有发生帧丢失,则执行上述正常的解码过程。如果当前帧发生帧丢失,即当前帧为丢失帧,则需要对进行丢帧处理,即需要恢复丢失帧。

图1是根据本发明的实施例的一种解码方法的示意性流程图。图1的方法可以由解码器来执行,包括下列内容。

110,在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号。

例如,解码端通过解析码流信息判断是否发生帧丢失,若没有发生帧丢失,则进行正常的解码处理,若发生帧丢失,则进行丢帧处理。在进行丢帧处理时,首先,根据前一帧的解码参数生成高频带激励信号;其次,复制前一帧的lpc参数作为当前帧的lpc参数,从而得到lpc合成滤波器;最后,将高频带激励信号经过lpc合成滤波器得到合成的高频带信号。

120,根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益。

一个子帧的子帧增益可以指该子帧的合成高频带信号和原始高频带信号之间的差值与合成高频带信号的比值,例如,子帧增益可以表示子帧的合成高频带信号的幅值和原始高频带信号的幅值之间的差值与合成高频带信号的幅值的比值。

子帧之间的增益梯度用于指示相邻子帧之间的子帧增益的变化趋势和程度,即增益变化量。例如,第一子帧与第二子帧之间的增益梯度可以指第二子帧的子帧增益与第一子帧的子帧增益之间的差值,本发明的实施例并不限于此,例如,子帧之间的增益梯度也可以指子帧增益衰减因子。

例如,可以根据前一帧的子帧之间的子帧增益的变化趋势和程度估计出前一帧的最后一个子帧到当前帧的起始子帧(第一个子帧)的增益变化量,并利用该增益变化量与前一帧的最后一个子帧的子帧增益估计出当前帧的起始子帧的子帧增益;然后,根据当前帧之前的至少一帧的子帧之间的子帧增益的变化趋势和程度估计出当前帧的子帧之间的增益变化量;最后,利用该增益变化量和已经估计出的起始子帧的子帧增益,估计出当前帧的其它子帧的子帧增益。

130,确定当前帧的全局增益。

一帧的全局增益可以指该帧的合成高频带信号和原始高频带信号之间的差值与合成高频带信号的比值。例如,全局增益可以表示合成高频带信号的幅值和原始高频带信号的幅值的差值与合成高频带信号的幅值的比值。

全局增益梯度用于指示相邻帧之间的全局增益的变化趋势和程度。一帧与另一帧之间的全局增益梯度可以指一帧的全局增益与另一帧的全局增益的差值,本发明的实施例并不限于此,例如,一帧与另一帧之间的全局增益梯度也可以指全局增益衰减因子。

例如,可以将当前帧的前一帧的全局增益乘以固定的衰减因子估计出当前帧的全局增益。特别地,本发明的实施例可以根据在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目来确定全局增益梯度,并根据确定的全局增益梯度估计当前帧的全局增益。

140,根据全局增益和至少两个子帧的子帧增益,对所合成的高频带信号进行调整(或控制)以得到当前帧的高频带信号。

例如,可以根据全局增益调整当前帧的高频带信号的幅值,并且可以根据子帧增益调整子帧的高频带信号的幅值。

本发明的实施例可以在确定当前帧为丢失帧时,根据当前帧之前的子帧的子帧增益和当前帧之前的子帧间的增益梯度确定当前帧的子帧的子帧增益,并利用所确定的当前帧的子帧增益对高频带信号进行调整。由于当前帧的子帧增益是根据当前帧之前的子帧的子帧增益的梯度(变化趋势和程度)得到的,使得丢帧前后的过渡有更好的连续性,从而减少了重建信号的杂音,提高了语音质量。

根据本发明的实施例,在120中,根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益;根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,在120中,根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度;根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益;根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度;根据当前帧的至少两个子帧间的增益梯度和当前帧的起始子帧的子帧增益,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,可以将前一帧的最后两个子帧之间的增益梯度作为第一增益梯度的估计值,本发明的实施例并不限于此,可以对前一帧的多个子帧之间的增益梯度进行加权平均得到第一增益梯度的估计值。

例如,当前帧的两个相邻子帧之间的增益梯度的估计值可以为:当前帧的前一帧中与这两个相邻子帧在位置上相对应的两个子帧之间的增益梯度与当前帧的前一帧的前一帧中与这两个相邻子帧在位置上相对应的两个子帧之间增益梯度的加权平均,或者当前帧的两个相邻子帧之间的增益梯度的估计值可以为:前子帧的两个相邻子帧之前的若干相邻子帧之间的增益梯度的加权平均。

例如,在两个子帧之间的增益梯度指这两个子帧的增益之间的差值的情况下,当前帧的起始子帧的子帧增益的估计值可以为前一帧的最后一个子帧的子帧增益和第一增益梯度之和。在两个子帧之间的增益梯度指这两个子帧之间的子帧增益衰减因子情况下,当前帧的起始子帧的子帧增益可以为前一帧的最后一个子帧的子帧增益与第一增益梯度的乘积。

在120中,对当前帧的前一帧的至少两个子帧之间的增益梯度进行加权平均,得到第一增益梯度,其中,在进行加权平均时,当前帧的前一帧中距当前帧越近的子帧之间的增益梯度所占的权重越大;并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型(或称为最后一个正常帧类型)和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

例如,在前一帧的子帧之间的增益梯度为单调递增或单调递减的情况下,可以将前一帧中的最后三个子帧之间的两个增益梯度(倒数第三个子帧与倒数第二个子帧之间的增益梯度以及倒数第二个子帧与最后一个子帧之间的增益梯度)进行加权平均来得到第一增益梯度。在前一帧的子帧之间的增益梯不是单调递增或单调递减的情况下,可以将前一帧中的所有相邻子帧之间的增益梯度进行加权平均。因为当前帧之前的两个相邻子帧距离当前帧越近,这两个相邻子帧上传输的语音信号与当前帧上传输的语音信号的相关性越大,这样,相邻子帧之间的增益梯度与第一增益梯度的实际值可能越接近。因此,在估计第一增益梯度时,可以将前一帧中距当前帧越近的子帧之间的增益梯度的所占的权重设置越大的值,这样可以使得第一增益梯度的估计值更接近第一增益梯度的实际值,从而使得丢帧前后的过渡有更好的连续性,提高了语音的质量。

根据本发明的实施例,在估计子帧增益的过程中,可以根据在当前帧之前接收到的最后一个帧的类型以及当前帧以前的连续丢失帧的数目对估计出的增益进行调整。具体地,可以首先估计当前帧的各个子帧之间的增益梯度,再利用各个子帧之间的增益梯度,再结合当前帧的前一帧的最后一个子帧的子帧增益,并以当前帧之前的最后一个正常帧类型和当前帧以前的连续丢失帧的数目为判决条件,估计出当前帧的所有子帧的子帧增益。

例如,当前帧之前接收到的最后一个帧的类型可以是指解码端接收到当前帧之前的最近的一个正常帧(非丢失帧)的类型。例如,假设编码端向解码端发送了4帧,其中解码端正确地接收了第1帧和第2帧,而第3帧和第4帧丢失,那么丢帧前最后一个正常帧可以指第2帧。通常,帧的类型可以包括:(1)清音、静音、噪声或浊音结尾等几种特性之一的帧(unvoiced_clasframe);(2)清音到浊音过渡,浊音开始但还比较微弱的帧(unvoiced_transitionframe);(3)浊音之后的过渡,浊音特性已经很弱的帧(voiced_transitionframe);(4)浊音特性的帧,其之前的帧为浊音或者浊音开始帧(voiced_clasframe);(5)明显浊音的开始帧(onsetframe);(6)谐波和噪声混合的开始帧(sin_onsetframe);(7)非活动特性帧(inactive_clasframe)。

连续丢失帧的数目可以指最后一个正常帧之后的连续丢失帧的数目或者可以指当前丢失帧为连续丢失帧的第几帧。例如,编码端向解码端发送了5帧,解码端正确接收了第1帧和第2帧,第3帧至第5帧均丢失。如果当前丢失帧为第4帧,那么连续丢失帧的数目就是2;如果当前丢失帧为第5帧,那么连续丢失帧的数目为3。

例如,在当前帧(丢失帧)的类型与在当前帧之前接收到的最后一个帧的类型相同且连续当前帧的数目小于等于一个阈值(例如,3)的情况下,当前帧的子帧间的增益梯度的估计值接近当前帧的子帧间的增益梯度的实际值,反之,当前帧的子帧间的增益梯度的估计值远离当前帧的子帧间的增益梯度的实际值。因此,可以根据在当前帧之前接收到的最后一个帧的类型和连续当前帧的数目对估计出的当前帧的子帧间的增益梯度进行调整,使得调整后的当前帧的子帧间的增益梯度更接近增益梯度的实际值,从而使得丢帧前后的过渡有更好的连续性,提高了语音的质量。

例如,在连续丢失帧的数目小于某个阈值时,如果解码端确定最后一个正常帧为浊音帧或清音帧的开始帧,则可以确定当前帧可能也为浊音帧或清音帧。换句话说,可以根据当前帧之前的最后一个正常帧类型和当前帧以前的连续丢失帧的数目为判决条件,确定当前帧的类型是否与在当前帧之前接收到的最后一个帧的类型是否相同,如果相同,则调整增益的系数取较大的值,如果不相同,则调整增益的系数取较小的值。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式(1)得到:

其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,αj+1≥αj,

其中起始子帧的子帧增益由下列公式(2)和(3)得到:

其中gainshape[n-1,i-1]为第n-1帧的第i-1子帧的子帧增益,gainshape[n,0]为当前帧的起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,由在当前帧之前接收到的最后一个帧的类型和第一增益梯度的正负符号确定,由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

例如,当当前帧之前接收到的最后一个帧的类型为浊音帧或清音帧时,如果第一增益梯度为正,则的取值较小,例如,小于预设的阈值,如果第一增益梯度为负,则的取值较大,例如,大于预设的阈值。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧或清音帧的开始帧时,这时,第一增益梯度为正,则的取值较大,例如,大于预设的阈值,第一增益梯度为负,则的取值较小,例如,小于预设的阈值。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧或清音帧时,且连续丢失帧的数目小于等于3时,取较小的值,例如,小于预设的阈值。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧开始帧或清音帧的开始帧时,且连续丢失帧的数目小于等于3时,取较大的值,例如,大于预设的阈值。

例如,对于同一类型的帧来说,连续丢失帧的数目越小,的取值越大。

在120中,将当前帧的前一帧的最后一个子帧之前的子帧与当前帧的前一帧的最后一个子帧之间的增益梯度作为第一增益梯度;并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式(4)得到:

gaingradfec[0]=gaingrad[n-1,i-2],(4)

其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,i-2]为当前帧的前一帧的第i-2子帧与第i-1子帧之间的增益梯度,

其中起始子帧的子帧增益由下列公式(5)、(6)和(7)得到:

gainshapetemp[n,0]=gainshape[n-1,i-1]+λ1*gaingradfec[0],(5)

gainshapetemp[n,0]=min(λ2*gainshape[n-1,i-1],gainshapetemp[n,0]),(6)

gainshape[n,0]=max(λ3*gainshape[n-1,i-1],gainshapetemp[n,0]),(7)

其中gainshape[n-1,i-1]为当前帧的前一帧的第i-1子帧的子帧增益,gainshape[n,0]为起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,0<λ1<1.0,1<λ2<2,0<λ3<1.0,λ1由在当前帧之前接收到的最后一个帧的类型和当前帧的前一帧中的最后两个子帧的子帧增益的倍数关系确定,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧或清音帧时,当前帧可能也为浊音帧或清音帧,这时,如果前一帧中的最后一个子帧的子帧增益与倒数第二个子帧的子帧增益的比值越大,则λ1的取值越大,如果前一帧中的最后一个子帧的子帧增益与倒数第二个子帧的子帧增益的比值越小,则λ1的取值越小。另外,在当前帧之前接收到的最后一个帧的类型为清音帧时的λ1的取值大于在当前帧之前接收到的最后一个帧的类型为浊音帧时的λ1的取值。

例如,如果最后一个正常帧类型为清音帧,且当前连续丢帧数目为1,则当前丢失帧紧接在最后一个正常帧后面,丢失帧与最后一个正常帧有很强的相关性,可判决丢失帧的能量与最后一个正常帧能量比较接近,λ2和λ3的取值可以接近于1,例如,λ2可取值1.2,λ3可取值0.8。

在120中,对当前帧的前一帧的第i子帧与第i+1子帧的之间增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重;并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,在120中,可以对当前帧的前一帧的第i子帧与第i+1子帧的之间增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧时,当前帧的至少两个子帧间的增益梯度由下列公式(8)来确定:

gaingradfec[i+1]=gaingrad[n-2,i]*β1+gaingrad[n-1,i]*β2,(8)

其中gaingradfec[i+1]为第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-2,i]为当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-1,i]为当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,β2>β1,β2+β1=1.0,i=0,1,2,...,i-2;

其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式(9)和(10)确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3;(9)

gainshape[n,i]=gainshapetemp[n,i]*β4;(10)

其中,gainshape[n,i]为当前帧的第i子帧的子帧增益,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,0≤β3≤1.0,0<β4≤1.0,β3由gaingrad[n-1,i]与gaingrad[n-1,i+1]的倍数关系和gaingrad[n-1,i+1]的正负符号确定,β4由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

例如,如果gaingrad[n-1,i+1]为正值,则gaingrad[n-1,i+1]与gaingrad[n-1,i]的比值越大,β3的取值越大,如果gaingradfec[0]为负值,则gaingrad[n-1,i+1]与gaingrad[n-1,i]的比值越大,β3的取值越小。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧或清音帧时,且连续丢失帧的数目小于等于3时,β4取较小的值,例如,小于预设的阈值。

例如,当在当前帧之前接收到的最后一个帧的类型为浊音帧开始帧或清音帧的开始帧时,且连续丢失帧的数目小于等于3时,β4取较大的值,例如,大于预设的阈值。

例如,对于同一类型的帧来说,连续丢失帧的数目越小,β4的取值越大。

根据本发明的实施例,每个帧包括i个子帧,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,包括:

对当前帧的第i子帧之前的i+1个子帧之间的i个增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之的增益梯度,其中i=0,1…,i-2,距第i子帧越近的子帧之间的增益梯度所占的权重越大;

其中根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益,包括:

根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括四个子帧时,当前帧的至少两个子帧间的增益梯度由以下公式(11)、(12)和(13)确定:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4(11)

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4(12)

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4(13)

其中gaingradfec[j]为当前帧的第j子帧与第j+1子帧之间的增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,j=0,1,2,...,i-2,γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,其中γ1、γ2、γ3和γ4由接收到的最后一个帧的类型确定,

其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式(14)、(15)和(16)确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],(14)

其中i=1,2,3,其中gainshapetemp[n,0]为第一增益梯度;

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i])(15)

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i])(16)

其中,i=1,2,3,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,gainshape[n,i]为当前帧的第i子帧的子帧增益,γ5和γ6由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定,1<γ5<2,0<=γ6<=1。

例如,如果最后一个正常帧类型为清音帧,且当前连续丢帧数目为1,则当前丢失帧紧接在最后一个正常帧后面,丢失帧与最后一个正常帧有很强的相关性,可判决丢失帧的能量与最后一个正常帧能量比较接近,γ5和γ6的取值可以接近于1,例如,γ5可取值1.2,γ6可取值0.8。

在130中,根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益。

例如,在估计全局增益时,可以以当前帧之前的至少一帧(例如,前一帧)的全局增益为基础,并利用当前帧的在当前帧之前接收到的最后一个帧的类型和当前帧发前的连续丢失帧的数目等条件,估计出丢失帧的全局增益。

根据本发明的实施例,当前帧的全局增益由以下公式(17)确定:

gainframe=gainframe_prevfrm*gainatten,(17)

其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

例如,解码端可以在确定当前帧的类型与在当前帧之前接收到的最后一个帧的类型相同且连续丢失帧的数目小于或等于3的情况下,确定全局增益梯度为1。换句话说,当前丢失帧的全局增益可以跟随之前的帧的全局增益,因此可以确定全局增益梯度为1。

例如,如果可以确定最后一个正常帧为清音帧或浊音帧,且连续丢失帧的数目小于或等于3,解码端可以确定全局增益梯度为较小的值,即全局增益梯度可以小于预设的阈值。例如,该阈值可以设为0.5。

例如,解码端可以在确定最后一个正常帧为浊音帧的开始帧的情况下,确定全局增益梯度,使得全局增益梯度大于预设的第一阈值。如果解码端确定最后一个正常帧为浊音帧的开始帧,则可以确定当前丢失帧很可能为浊音帧,那么可以确定全局增益梯度为较大的值,即全局增益梯度可以大于预设的阈值。

根据本发明的实施例,解码端可以在确定最后一个正常帧为清音帧的开始帧的情况下,确定全局增益梯度,使得全局增益梯度小于预设的阈值。例如,如果最后一个正常帧为清音帧的开始帧,那么当前丢失帧很可能为清音帧,那么解码端可以确定全局增益梯度为较小的值,即全局增益梯度可以小于预设的阈值。

本发明的实施例利用发生丢帧之前接收到的最后一个帧的类型以及连续丢失帧的数目等条件估计出子帧增益梯度和全局增益梯度,然后结合先前的至少一帧的子帧增益和全局增益确定当前帧的子帧增益和全局增益,并利用这两个增益对重建的高频带信号进行增益控制输出最终的高频带信号。本发明的实施例在发生丢帧时解码所需的子帧增益和全局增益的值并未采用固定值,从而避免了在发生丢帧的情况下由于设定固定的增益值而导致的信号能量不连续,使得丢帧前后的过渡更加自然平稳,削弱杂音现象,提高了重建信号的质量。

图2是根据本发明的另一实施例的解码方法的示意性流程图。图2的方法由解码器执行,包括下列内容。

210,在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号。

220,确定当前帧的至少两个子帧的子帧增益。

230,根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度。

240,根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益。

250,根据全局增益和至少两个子帧的子帧增益,对所合成的高频带信号进行调整以得到当前帧的高频带信号。

根据本发明的实施例,当前帧的全局增益由以下公式确定:

gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

图3a至图3c是根据本发明的实施例的前一帧的子帧增益的变化趋势图。图4是根据本发明的实施例的估计第一增益梯度的过程的示意图。图5是根据本发明的实施例的估计当前帧的至少两个子帧间的增益梯度的过程的示意图。图6是根据本发明的实施例的一种解码过程的示意性流程图。图6的实施例是图1的方法的例子。

610,解码端对从编码端接收到的码流信息进行解析。

615,根据从码流信息中解析出的丢帧标志,判断是否发生帧丢失。

620,如果没有发生帧丢失,则根据从码流中得到的码流参数进行正常的解码处理。

在解码时,首先,对lsf参数和子帧增益和全局增益进行反量化,并将lsf参数转化成lpc参数,从而得到lpc合成滤波器;其次,利用由核心解码器得到基音周期、代数码书及各自增益等参数,基于基音周期、代数码书及各自增益等参数得到高频带激励信号,并由高频带激励信号经过lpc合成滤波器合成高频带信号;最后根据子帧增益和全局增益对高频带信号进行增益调整恢复最终的高频带信号。

如果发生了帧丢失,则进行丢帧处理。丢帧处理包括步骤625至660。

625,利用由核心解码器得到前一帧的基音周期、代数码书及各自增益等参数,并基于基音周期、代数码书及各自增益等参数得到高频带激励信号。

630,复制前一帧的lpc参数。

635,根据前一帧的lpc得到lpc合成滤波器,并将高频带激励信号经过lpc合成滤波器合成高频带信号。

640,根据前一帧的子帧之间的增益梯度,估计前一帧的最后一个子帧到当前帧的起始子帧的第一增益梯度。

本实施例以每帧共有四个子帧增益为例进行说明。设当前帧为第n帧,即第n帧为丢失帧,前一子帧为第n-1子帧,前一帧的前一帧为第n-2帧,第n帧的四个子帧的增益为gainshape[n,0],gainshape[n,1],gainshape[n,2]和gainshape[n,3],依次类推,第n-1帧的四个子帧的增益为gainshape[n-1,0],gainshape[n-1,1],gainshape[n-1,2]和gainshape[n-1,3],第n-2帧的四个子帧的增益为gainshape[n-2,0],gainshape[n-2,1],gainshape[n-2,2]和gainshape[n-2,3]。本发明的实施例将第n帧的第一个子帧的子帧增益gainshape[n,0](即当前帧的编码为0的子帧增益)和后三个子帧的子帧增益采用不同的估计算法。第一个子帧的子帧增益gainshape[n,0]的估计流程为:由第n-1帧子帧增益之间的变化趋势和程度求取一个增益变化变量,利用这个增益变化量和第n-1帧的第四个子帧增益gainshape[n-1,3](即前一帧的以编码号为3的子帧增益),结合在当前帧之前接收到的最后一个帧的类型以及连续丢失帧的数目估计出第一个子帧的子帧增益gainshape[n,0];后三个子帧的估计流程为:由第n-1帧的子帧增益和第n-2帧的子帧增益之间的变化趋势和程度求取一个增益变化量,利用这个增益变化量和已经估计出的第n子帧的第一个子帧的子帧增益,结合在当前帧之前接收到的最后一个帧的类型以及连续丢失帧的数目估计出后三个子帧增益。

如图3a所示,第n-1帧的增益的变化趋势和程度(或梯度)为单调递增。如图3b所示,第n-1帧的增益的变化趋势和程度(或梯度)为单调递减。第一增益梯度的计算公式可以如下:

gaingradfec[0]=gaingrad[n-1,1]*α1+gaingrad[n-1,2]*α2,

其中,gaingradfec[0]为第一增益梯度,即第n-1帧的最后一个子帧与第n帧的第一个子帧之间的增益梯度,gaingrad[n-1,1]为第n-1子帧的第1子帧到第2子帧之间的增益梯度,α2>α1,α1+α2=1,即距第n帧越近的子帧之间的增益梯度所占的权重越大,例如,α1=0.1,α2=0.9。

如图3c所示,第n-1帧的增益的变化趋势和程度(或梯度)为不单调(例如,是随机的)。增益梯度计算公式如下:

gaingradfec[0]=gaingrad[n-1,0]*α1+gaingrad[n-1,1]*α2+gaingrad[n-1,2]*α3,

其中,α3>α2>α1,α1+α2+α3=1.0,即距第n帧越近的子帧之间的增益梯度所占的权重越大,例如,α1=0.2,α2=0.3,α3=0.5)

645,根据前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益。

本发明的实施例可以由第n帧之前接收到的最后一个帧的类型和第一增益梯度gaingradfec[0]计算第n帧的第一个子帧的子帧增益gainshape[n,0]的中间量gainshapetemp[n,0]。具体步骤如下:

其中,由第n帧之前接收到的最后一个帧的类型和gaingradfec[0]的正负确定。

由中间量gainshapetemp[n,0]计算得到gainshape[n,0]:

其中由第n帧之前接收到的最后一个帧的类型和第n帧以前的连续丢失帧的数目确定。

650,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的多个子帧间的增益梯度;根据当前帧的多个子帧间的增益梯度和起始子帧的子帧增益,估计多个子帧中除起始子帧之外的其它子帧的子帧增益。

参见图5,本发明的实施例可以根据第n-1帧的子帧间的增益梯度和第n-2帧的子帧间的增益梯度来估计当前帧的至少两个子帧间的增益梯度gaingradfec[i+1]:

gaingradfec[i+1]=gaingrad[n-2,i]*β1belta1+gaingrad[n-1,i]*β2,

其中i=0,1,2,β1+β2=1.0,即距第n帧越近的子帧间的增益梯度所占的权重越大,例如,β1=0.4,β2=0.6。

按照下列公式计算各个子帧的子帧增益的中间量gainshapetemp[n,i]:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3,

其中,i=1,2,3;0≤β3≤1.0,β3可以由gaingrad[n-1,x]确定,例如,当gaingrad[n-1,2]大于10.0*gaingrad[n-1,1]且gaingrad[n-1,1]大于0时,β3取值为0.8。

按照下列公式计算各个子帧的子帧增益:

gainshape[n,i]=gainshapetemp[n,i]*β4,

其中,i=1,2,3,β4由第n帧之前接收到的最后一个帧的类型和第n帧以前的连续丢失帧的数目决定。

655,根据当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计全局增益梯度。

全局增益梯度gainatten可以由当前帧之前接收到的最后一个帧的类型和连续丢失帧的数目确定,0<gainatten<1.0。例如,确定全局增益梯度的基本原则可以是:当在当前帧之前接收到的最后一个帧的类型为摩擦音时,全局增益梯度取接近于1的值如gainatten=0.95,例如,当连续丢失帧的数目大于1时全局增益梯度取较小(例如,接近于0)的值,例如,gainatten=0.5。

660,根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益。当前丢失帧的全局增益可以由下列公式得到:

gainframe=gainframe_prevfrm*gainatten,其中,gainframe_prevfrm为前一帧的全局增益。

665,根据全局增益和各子帧增益对合成的高频带信号进行增益调整,从而恢复当前帧的高频带信号。该步骤与常规技术类似,在此不再赘述。

本发明的实施例对时域高频带扩展技术中的常规丢帧处理方法,使得发生丢帧时的过渡更加自然平稳,削弱了丢帧所导致的杂音(click)现象,提高了语音信号的质量。

可选地,作为另一实施例,图6的实施例的640和645可以由替代为下列步骤:

第一步:将第n-1帧(前一帧)中倒数第二个子帧的子帧增益到最后一个子帧的子帧增益的变化梯度gaingrad[n-1,2]作为第一增益梯度gaingradfec[0],即gaingradfec[0]=gaingrad[n-1,2]。

第二步:以第n-1帧的最后一个子帧的子帧增益为基础,结合在当前帧之前接收到的最后一个帧的类型和第一增益梯度gaingradfec[0]计算第一个子帧增益gainshape[n,0]的中间量gainshapetemp[n,0]:

gainshapetemp[n,0]=gainshape[n-1,3]+λ1*gaingradfec[0]

其中,gainshape[n-1,3]为第n-1帧的第四个子帧增益,0<λ1<1.0,λ1由第n帧之前接收到的最后一个帧的类型和前一帧中最后两个子帧增益的倍数关系确定。

第三步:由中间量gainshapetemp[n,0]计算得到gainshape[n,0]:

gainshapetemp[n,0]=min(λ2*gainshape[n-1,3],gainshapetemp[n,0]),

gainshape[n,0]=max(λ3*gainshape[n-1,3],gainshapetemp[n,0]),

其中,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和连续丢失帧的数目确定,并且使得所估计的第一个子帧的子帧增益gainshape[n,0]与第n-1帧的最后一个子帧的子帧增益gainshape[n-1,3]相比在一定的范围内。

可选地,作为另一实施例,图5的实施例的550可以由替代为下列步骤:

第一步:根据gaingrad[n-1,x]和gaingradfec[0]来预测估计第n帧的各个子帧间的增益梯度gaingradfec[1]~gaingradfec[3]:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4,

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4,

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4,

其中γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,γ1、γ2、γ3和γ4由在当前帧之前接收到的最后一个帧的类型确定。

第二步:计算第n帧的各个子帧之间的子帧增益gainshape[n,1]~gainshape[n,3]的中间量gainshapetemp[n,1]~gainshapetemp[n,3]:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],

其中i=1,2,3,gainshapetemp[n,0]为第n帧的第一个子帧的子帧增益。

第三步:由中间量gainshapetemp[n,1]~gainshapetemp[n,3]计算得到计算第n帧的各个子帧之间的子帧增益gainshape[n,1]~gainshape[n,3]:

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i]),

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i]),

其中,i=1,2,3,γ5和γ6由第n帧之前接收到的最后一个帧的类型和第n帧以前的连续丢失帧的数目确定。

图7是根据本发明的实施例的一种解码装置700的示意性结构图。解码装置700包括生成模块710、确定模块720和调整模块730。

生成模块710用于在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号。确定模块720用于根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益,并且确定当前帧的全局增益。调整模块730用于根据确定模块确定的全局增益和至少两个子帧的子帧增益对生成模块合成的高频带信号进行调整以得到当前帧的高频带信号。

根据本发明的实施例,确定模块720根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益,并且根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,确定模块720根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度,根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,确定模块720对当前帧的前一帧的至少两个子帧之间的增益梯度进行加权平均,得到第一增益梯度,并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益,其中在进行加权平均时,当前帧的前一帧中距当前帧越近的子帧之间的增益梯度所占的权重越大。

根据本发明的实施例,当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧,第一增益梯度由下列公式得到:其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,αj+1≥αj,其中起始子帧的子帧增益由下列公式得到:

其中gainshape[n-1,i-1]为第n-1帧的第i-1子帧的子帧增益,gainshape[n,0]为当前帧的起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,由在当前帧之前接收到的最后一个帧的类型和第一增益梯度的正负符号确定,由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,确定模块720将当前帧的前一帧的最后一个子帧之前的子帧与当前帧的前一帧的最后一个子帧之间的增益梯度作为第一增益梯度,并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式得到:gaingradfec[0]=gaingrad[n-1,i-2],其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,i-2]为当前帧的前一帧的第i-2子帧到第i-1子帧之间的增益梯度,其中起始子帧的子帧增益由下列公式得到:

gainshapetemp[n,0]=gainshape[n-1,i-1]+λ1*gaingradfec[0],

gainshapetemp[n,0]=min(λ2*gainshape[n-1,i-1],gainshapetemp[n,0]),

gainshape[n,0]=max(λ3*gainshape[n-1,i-1],gainshapetemp[n,0]),

其中gainshape[n-1,i-1]为当前帧的前一帧的第i-1子帧的子帧增益,gainshape[n,0]为起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,0<λ1<1.0,1<λ2<2,0<λ3<1.0,λ1由在当前帧之前接收到的最后一个帧的类型和当前帧的前一帧的最后两个子帧的子帧增益的倍数关系确定,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,每个帧包括i个子帧,确定模块720对当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重;确定模块720根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当前帧的至少两个子帧间的增益梯度由下列公式来确定:

gaingradfec[i+1]=gaingrad[n-2,i]*β1+gaingrad[n-1,i]*β2,

其中gaingradfec[i+1]为第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-2,i]为当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-1,i]为当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,β2>β1,β2+β1=1.0,i=0,1,2,...,i-2;其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3;

gainshape[n,i]=gainshapetemp[n,i]*β4;

其中,gainshape[n,i]为当前帧的第i子帧的子帧增益,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,0≤β3≤1.0<=1.0,0<β4≤1.0,β3由gaingrad[n-1,i]与gaingrad[n-1,i+1]的倍数关系和gaingrad[n-1,i+1]的正负符号确定,β4由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,确定模块720对当前帧的第i子帧之前的i+1个子帧之间的i个增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧的之间增益梯度,其中i=0,1…,i-2,距第i子帧越近的子帧之间的增益梯度所占的权重越大,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括四个子帧时,当前帧的至少两个子帧间的增益梯度由以下公式确定:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4

其中gaingradfec[j]为当前帧的第j子帧与第j+1子帧之间的增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,j=0,1,2,...,i-2,γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,其中γ1、γ2、γ3和γ4由接收到最后一个帧的类型确定,其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],其中i=1,2,3,其中gainshapetemp[n,0]为第一增益梯度;

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i]),

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i]),

其中,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,i=1,2,3,gainshape[n,i]为当前帧的第i子帧的增益,γ5和γ6由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定,1<γ5<2,0<=γ6<=1。

根据本发明的实施例,确定模块720根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的当前帧的前一帧的全局增益,估计当前帧的全局增益。

根据本发明的实施例,当前帧的全局增益由以下公式确定:

gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

图8是根据本发明的另一实施例的解码装置800的示意性结构图。解码装置800包括:生成模块810、确定模块820和调整模块830。

生成模块810在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号。确定模块820确定当前帧的至少两个子帧的子帧增益,根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度,并且根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益。调整模块830根据确定模块确定的全局增益和至少两个子帧的子帧增益,对生成模块合成的高频带信号进行调整以得到当前帧的高频带信号。

根据本发明的实施例,gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

图9是根据本发明的实施例的一种解码装置900的示意性结构图。解码装置900包括处理器910、存储器920和通信总线930。

处理器910用于通过通信总线930调用存储器920中存储的代码,以在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号;根据当前帧之前的至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的至少两个子帧的子帧增益,并且确定当前帧的全局增益,并且根据全局增益和至少两个子帧的子帧增益对所合成的高频带信号进行调整以得到当前帧的高频带信号。

根据本发明的实施例,处理器910根据上述至少一帧的子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定当前帧的起始子帧的子帧增益,并且根据当前帧的起始子帧的子帧增益和上述至少一帧的子帧之间的增益梯度,确定至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,处理器910根据当前帧的前一帧的子帧之间的增益梯度,估计当前帧的前一帧的最后一个子帧与当前帧的起始子帧之间的第一增益梯度,根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,估计当前帧的起始子帧的子帧增益,根据上述至少一帧的子帧之间的增益梯度,估计当前帧的至少两个子帧间的增益梯度,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,处理器910对当前帧的前一帧的至少两个子帧之间的增益梯度进行加权平均,得到第一增益梯度,并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益,其中在进行加权平均时,当前帧的前一帧中距当前帧越近的子帧之间的增益梯度所占的权重越大。

根据本发明的实施例,当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧,第一增益梯度由下列公式得到:其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,αj+1≥αj,其中起始子帧的子帧增益由下列公式得到:

其中gainshape[n-1,i-1]为第n-1帧的第i-1子帧的子帧增益,gainshape[n,0]为当前帧的起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,由在当前帧之前接收到的最后一个帧的类型和第一增益梯度的正负符号确定,由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,处理器910将当前帧的前一帧的最后一个子帧之前的子帧与当前帧的前一帧的最后一个子帧之间的增益梯度作为第一增益梯度,并且根据当前帧的前一帧的最后一个子帧的子帧增益和第一增益梯度,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计当前帧的起始子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括i个子帧时,第一增益梯度由下列公式得到:gaingradfec[0]=gaingrad[n-1,i-2],其中gaingradfec[0]为第一增益梯度,gaingrad[n-1,i-2]为当前帧的前一帧的第i-2子帧到第i-1子帧之间的增益梯度,其中起始子帧的子帧增益由下列公式得到:

gainshapetemp[n,0]=gainshape[n-1,i-1]+λ1*gaingradfec[0],

gainshapetemp[n,0]=min(λ2*gainshape[n-1,i-1],gainshapetemp[n,0]),

gainshape[n,0]=max(λ3*gainshape[n-1,i-1],gainshapetemp[n,0]),

其中gainshape[n-1,i-1]为当前帧的前一帧的第i-1子帧的子帧增益,gainshape[n,0]为起始子帧的子帧增益,gainshapetemp[n,0]为起始子帧的子帧增益中间值,0<λ1<1.0,1<λ2<2,0<λ3<1.0,λ1由在当前帧之前接收到的最后一个帧的类型和当前帧的前一帧的最后两个子帧的子帧增益的倍数关系确定,λ2和λ3由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,每个帧包括i个子帧,处理器910对当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度和当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧之间的增益梯度,其中i=0,1…,i-2,当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重大于当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度所占的权重;根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当前帧的至少两个子帧间的增益梯度由下列公式来确定:

gaingradfec[i+1]=gaingrad[n-2,i]*β1+gaingrad[n-1,i]*β2,

其中gaingradfec[i+1]为第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-2,i]为当前帧的前一帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,gaingrad[n-1,i]为当前帧的前一帧的第i子帧与第i+1子帧之间的增益梯度,β2>β1,β2+β1=1.0,i=0,1,2,...,i-2;其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i]*β3;

gainshape[n,i]=gainshapetemp[n,i]*β4;

其中,gainshape[n,i]为当前帧的第i子帧的子帧增益,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,0≤β3≤1.0<=1.0,0<β4≤1.0,β3由gaingrad[n-1,i]与gaingrad[n-1,i+1]的倍数关系和gaingrad[n-1,i+1]的正负符号确定,β4由在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

根据本发明的实施例,处理器910对当前帧的第i子帧之前的i+1个子帧之间的i个增益梯度进行加权平均,估计当前帧的第i子帧与第i+1子帧的之间增益梯度,其中i=0,1…,i-2,距第i子帧越近的子帧之间的增益梯度所占的权重越大,并且根据当前帧的至少两个子帧间的增益梯度和起始子帧的子帧增益,以及在当前帧之前接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目,估计至少两个子帧中除起始子帧之外的其它子帧的子帧增益。

根据本发明的实施例,当当前帧的前一帧为第n-1帧,当前帧为第n帧,每个帧包括四个子帧时,当前帧的至少两个子帧间的增益梯度由以下公式确定:

gaingradfec[1]=gaingrad[n-1,0]*γ1+gaingrad[n-1,1]*γ2

+gaingrad[n-1,2]*γ3+gaingradfec[0]*γ4

gaingradfec[2]=gaingrad[n-1,1]*γ1+gaingrad[n-1,2]*γ2

+gaingradfec[0]*γ3+gaingradfec[1]*γ4

gaingradfec[3]=gaingrad[n-1,2]*γ1+gaingradfec[0]*γ2

+gaingradfec[1]*γ3+gaingradfec[2]*γ4

其中gaingradfec[j]为当前帧的第j子帧与第j+1子帧之间的增益梯度,gaingrad[n-1,j]为当前帧的前一帧的第j子帧与第j+1子帧之间的增益梯度,j=0,1,2,...,i-2,γ1+γ2+γ3+γ4=1.0,γ4>γ3>γ2>γ1,其中γ1、γ2、γ3和γ4由接收到最后一个帧的类型确定,其中至少两个子帧中除起始子帧之外的其它子帧的子帧增益由以下公式确定:

gainshapetemp[n,i]=gainshapetemp[n,i-1]+gaingradfec[i],其中i=1,2,3,其中gainshapetemp[n,0]为第一增益梯度;

gainshapetemp[n,i]=min(γ5*gainshape[n-1,i],gainshapetemp[n,i])

gainshape[n,i]=max(γ6*gainshape[n-1,i],gainshapetemp[n,i])

其中,gainshapetemp[n,i]为当前帧的第i子帧的子帧增益中间值,i=1,2,3,gainshape[n,i]为当前帧的第i子帧的增益,γ5和γ6由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定,1<γ5<2,0<=γ6<=1。

根据本发明的实施例,处理器910根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度;根据全局增益梯度和当前帧的当前帧的前一帧的全局增益,估计当前帧的全局增益。

根据本发明的实施例,当前帧的全局增益由以下公式确定:gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

图10是根据本发明的实施例的解码装置1000的示意性结构图。解码装置1000包括处理器1010、存储器1020和通信总线1030。

处理器1010,用于通过通信总线1030调用存储器1020中存储的代码,以在确定当前帧为丢失帧的情况下,根据当前帧的前一帧的解码结果合成高频带信号,确定当前帧的至少两个子帧的子帧增益,根据在当前帧之前接收到的最后一个帧的类型、当前帧以前的连续丢失帧的数目估计当前帧的全局增益梯度,根据全局增益梯度和当前帧的前一帧的全局增益,估计当前帧的全局增益,并且根据全局增益和至少两个子帧的子帧增益,对所合成的高频带信号进行调整以得到当前帧的高频带信号。

根据本发明的实施例,gainframe=gainframe_prevfrm*gainatten,其中gainframe为当前帧的全局增益,gainframe_prevfrm为当前帧的前一帧的全局增益,0<gainatten≤1.0,gainatten为全局增益梯度,并且gainatten由接收到的最后一个帧的类型和当前帧以前的连续丢失帧的数目确定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1