一种编码模式切换方法和装置、解码模式切换方法和装置与流程

文档序号:17074801发布日期:2019-03-08 23:37阅读:636来源:国知局
一种编码模式切换方法和装置、解码模式切换方法和装置与流程

本发明涉及语音频编解码领域,尤其涉及一种编码模式切换方法和装置,解码模式切换方法和装置。



背景技术:

音频信号的编码技术可以分为时域编码和频域编码两大类。

在现有技术中,已知频域编码方案有mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频第3层)、aac(advancedaudiocoding,增强音频编码)等。这些频域编码方案基于时域/频域变换,然后对频域系数进行量化和编码。在量化阶段中,使用心理声学模型控制量化误差;在编码阶段,使用码表对已量化的频谱信息及相应的边信息进行熵编码。

已知的时域编码方案有amr-wb(adaptivemulti-rate-widebandcodec,自适应多码率宽带编码器)等。这样的语音编码方案基于时域信号的线性预测(linearprediction,lp)滤波。所述的lp滤波通过对所输入的时域信号的线性预测分析而获得。然后,对所得到的lp滤波系数进行编码、传输。该方法被称为线性预测编码(lpc,linearpredictcode)。在利用lp滤波器对输入信号进行滤波后,使用acelp(algebraiccodeexcitedlinearprediction,代数码激励线性预测)进行编码。

频域编码方案经常使用mdct(modifieddiscretecosinetransform,修改型离散余弦变换),它首先对输入信号进行mdct变换,得到mdct频谱,然后根据心理声学模型或其他方法,在总的比特率约束下,对mdct频谱进行量化编码,并传输给解码端进行解码;其中,mdct变换的过程可以分解为加窗、折叠相加及iv型dct(discretedcosinetransformation,离散余弦变换)变换的过程。对加窗之后信号的折叠可以分为两次折叠:一次奇折叠和一次偶折叠。它被广泛的应用于近代音频编码器中,在高码率下编码效果非常好。

时域编码方案中经常使用acelp,它首先对输入信号进行lp分析,得到lp滤波器的系数。然后对输入信号进行lp滤波,得到预测残差信号。将当前的预测残差信号与之前帧的激励信号进行相关度分析,得到基音周期(pitchlag)和基音增益(pitchgain),并从当前的残差信号中减去一个基音周期前进行基音增益调整的激励信号,得到新的残差信号,这个过程也被称为长时预测(longtermprediction,ltp)。将这个新的残差信号作为目标,在给定的代数码本中寻找与之最匹配的码本,得到相应的码本标号,并求出相应的码本增益。最后将得到的lp滤波器系数、基音周期、基音增益、码本标号、及码本增益进行量化编码,并传输给解码端进行解码。它被广泛的应用于语音编码器中,对语音信号的编码效果非常好。

频域编码方案的优点在于可以利用高码率实现音乐信号的高质量编码。但是当对低码率的音频信号进行编码时,质量很差。时域编码方案在低码率下可以实现语音信号的高质量编码,与频域编码方案相比,对于语音信号,在相似的比特率下具有较高质量,在相同编解码质量条件下具有明显更低的比特率,但是对音乐信号进行编码时,质量很差。通常中等码率下,频域编码对音乐信号的编码质量较好,时域编码对语音信号的编码质量较好。

为了实现同时兼顾语音和音乐的高质量编码,一种解决方案是将适用于语音编码的时域编码模式与适用于音乐编码的频域编码模式组合,形成一种混合编码方案。例如将频域编码方案中经常使用的mdct与时域编码方案中经常使用的acelp进行组合,形成一种混合编码方案。这时,需要解决的一个问题是如何在不增加码率、不增加延时、计算复杂度低的条件下,获得中等码率下由一种编码模式至另一种编码模式的无缝或平滑切换。

现有的一类基于acelp的编码模式与基于mdct的编码模式之间的切换方法是采用预编码技术,该方法的计算复杂度非常高;另一类切换方法需要对切换前、后的信号进行额外的编码或基于变速率mdct编码器实现,该方法会增加切换过程中的码率,或增加恒定码率下切换的延时,增加了对传输信道的要求。其它切换方法,如采用信号外推方式获得切换处信号等的方法,无法实现很好的平滑切换效果。

综上,已公开的基于acelp的编码模式与基于mdct的编码模式之间的切换方法效果并不好,运算复杂度高,或是需要增加额外码率或延时。



技术实现要素:

本发明要解决的问题是提供一种编码模式切换的方法和装置,以及,解码模式切换方法和装置,以获得两种模式之间的无缝或平滑切换。

为了解决上述问题,本发明提供一种编码模式切换方法,包括:

当确定第k帧的编码模式类型为代数码激励线性预测acelp编码模式,且其前一帧即第k-1帧为acelp编码模式,其后一帧即第k+1帧为修改型离散余弦变换mdct编码模式,则:

对第k帧及第k+1帧中一帧长度的输入信号进行下采样处理,得到acelp核心工作频率上的信号sd,对所述sd使用acelp编码中的高通滤波器进行处理,得到信号sdhp;其中,所述的第k帧及第k+1帧中一帧长度的输入信号中包含的第k帧的输入信号为前一次acelp编码时输入第k帧中部分信号之后第k帧的剩余部分的信号;

对所述信号sdhp进行高通滤波非线性相移补偿处理,得到补偿后的信号sdhpc;对所述sdhpc进行后续acelp编码处理,得到第k帧的acelp编码码流;

使用预定义窗型对所述第k+1帧信号进行mdct编码;其中,所述预定义窗型使得对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差。

本发明还提供一种解码模式切换方法,包括:

当第k帧的码流类型为代数码激励线性预测acelp码流,且其前一帧即第k-1帧为acelp码流,后一帧即第k+1帧的码流类型为修改型离散余弦变换mdct码流,则:

对第k帧码流进行acelp解码,得到acelp解码过程中后置高通滤波器的输入信号s2ddp和后置高通滤波器的输出信号s2ddphp,进行后置高通滤波非线性相移补偿处理得到s2ddphpc,对s2ddphpc进行后续acelp解码处理,得到第k帧的acelp解码信号和第k+1帧的acelp解码信号;

对第k+1帧码流,采用预定义窗型对所述第k+1帧码流进行mdct解码,得到mdct解码信号;所述预定义窗型使得对第k+1帧码流进行mdct解码时,能够重构出部分信号与对所述的第k帧码流进行acelp编码时重构的信号重叠,并补偿解码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差;

对所述第k+1帧的acelp解码信号和所述mdct解码信号进行处理得到所述第k+1帧的最终解码信号。

本发明实施例还提供一种编码模式切换装置,所述编码模式切换装置用于当第k帧的编码模式类型为代数码激励线性预测acelp编码模式,且其前一帧即第k-1帧为acelp编码模式,其后一帧即第k+1帧为修改型离散余弦变换mdct编码模式时,对第k帧及第k+1帧的码流进行编码,包括:

第三编码模块,用于对第k帧及第k+1帧中一帧长度的输入信号进行下采样处理,得到acelp核心工作频率上的信号sd,对所述sd使用acelp编码中的高通滤波器进行处理,得到信号sdhp;对所述信号sdhp进行高通滤波非线性相移补偿处理,得到补偿后的信号sdhpc;对所述sdhpc进行后续acelp编码处理,得到第k帧的acelp编码码流;其中,所述的第k帧及第k+1帧中一帧长度的输入信号中包含的第k帧的输入信号为前一次acelp编码时输入第k帧中部分信号之后第k帧的剩余部分的信号;

第四编码模块,用于使用预定义窗型对所述第k+1帧信号进行mdct编码;其中,所述预定义窗型使得对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差。

本发明实施例还提供一种解码模式切换装置,用于当第k帧的码流类型为代数码激励线性预测acelp码流,且其前一帧即第k-1帧为acelp码流,后一帧即第k+1帧的码流类型为修改型离散余弦变换mdct码流时,对第k帧和第k+1帧码流进行解码,包括:

第三解码模块,用于对第k帧码流进行acelp解码,得到acelp解码过程中后置高通滤波器的输入信号s2ddp和后置高通滤波器的输出信号s2ddphp,进行后置高通滤波非线性相移补偿处理得到s2ddphpc,对s2ddphpc进行后续acelp解码处理,得到第k帧的acelp解码信号和第k+1帧的acelp解码信号;

第四解码模块,用于采用预定义窗型对第k+1帧码流进行mdct解码,得到mdct解码信号;所述预定义窗型使得对第k+1帧码流进行mdct解码时,能够重构出部分信号与对所述的第k帧码流进行acelp编码时重构的信号重叠,并补偿解码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差;

第二综合处理模块,用于对所述第k+1帧的acelp解码信号和所述mdct解码信号进行处理得到所述第k+1帧的最终解码信号。

综上,采用本发明所述的方法和装置,可以实现mdct编码模式与acelp编码模式之间的平滑切换,相对于现有技术,本申请具有无码率增加、无延时增加、切换过程中的计算复杂度比较低、以及切换效果好等优点。

附图说明

图1是本发明实施例1中g.722.1至g.722.2平滑切换的编码流程图;

图2~图5是本发明实施例中g.722.1编解码中的第一至第四窗型;

图6是本发明实施例1中acelp预处理流程图;

图7是本发明实施例1中g.722.2编码的状态建立及更新的流程图;

图8是本发明实施例1中g.722.1至g.722.2平滑切换的解码流程图;

图9是本发明实施例1中g.722.2解码的状态建立及更新的流程图;

图10是本发明实施例2中g.722.2至g.722.1平滑切换时的编码流程图;

图11是本发明实施例2中g.722.2至g.722.1平滑切换时的解码流程图;

图12是本发明实施例3中的编码模式从mdct模式至acelp模式切换时的编码模式切换装置框图;

图13是本发明实施例3中的编码模式从mdct模式至acelp模式切换时的编码模式切换装置中第二编码模块框图;

图14是本发明实施例3中的编码模式从mdct模式至acelp模式切换时的解码模式切换装置框图;

图15是本发明实施例3中的编码模式从mdct模式至acelp模式切换时的解码模式切换装置中第二解码模块框图;

图16是本发明实施例3中的编码模式从acelp模式至mdct模式切换时的编码模式切换装置框图;

图17是本发明实施例3中的编码模式从acelp模式至mdct模式切换时的解码模式切换装置框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本申请中,平滑上升或平滑下降的含义包括:上升函数或下降函数的一阶导数连续。

本申请中,第i帧的信号编号为(i-1)*n….in-1;n为一帧信号的长度。

本申请的主要思想包括:在信号编码模式从mdct编码模式切换到acelp编码模式的过程中,当切换前利用mdct的编码模式处理最后一帧信号时,采用一种新的mdct编码窗型及解码窗型,使其通过当前编解码,能够重构出一部分额外的后续的信号,并且与相继的基于acelp编码模式处理的信号之间具有一定的重叠;当切换后利用acelp编码模式处理第一帧信号时,对acelp编解码中各滤波器的历史状态进行初始化,然后利用mdct编码部分的输入信号、解码信号建立后续acelp编解码所需的滤波器历史状态,在此基础上进行切换后的acelp编解码操作,并可以补偿acelp编解码中高通滤波器对编码模式切换的影响;此时,通过acelp编码模式中各滤波器的记忆性可以在一定程度上保证切换的平滑性;最后,通过对mdct解码信号与acelp解码信号重叠部分进行交叠相加,进一步保证切换的平滑性;

在信号编码模式从acelp编码模式切换到mdct编码模式的过程中,当切换前利用acelp的编码模式处理最后一帧信号时,补偿acelp编解码中高通滤波器对编码模式切换的影响;当切换后利用mdct编码模式处理第一帧信号时,初始化mdct编解码,采用新的mdct编码窗型及解码窗型,使其通过单次编解码,能够重构出一部分与acelp编解码衔接方向的信号,该部分信号与切换之前acelp编码处理的最后一帧信号具有一定的重叠,重构信号后面的解码信号可以与后续的mdct解码信号或acelp解码信号联合实现信号的重构;最后,通过对acelp解码信号与mdct解码信号重叠部分进行交叠相加,保证切换的平滑性。

本发明实施例提供一种编码模式切换方法,包括:

当确定第i帧的编码模式为修改型离散余弦变换mdct编码模式,其后一帧即第i+1帧的编码模式为代数码激励线性预测acelp编码模式,则:

采用预定义窗型对第i帧的输入信号进行mdct编码获得所述第i帧的编码信息;所述预定义窗型使得对所述第i帧的编码码流进行解码时,能够重构出所述第i+1帧的部分信号;

对所述第i帧或者所述第i帧及其之前的帧的编码信息进行解码,获得解码信号;

根据所述解码信号、以及包括所述第i帧的部分输入信号及第i+1帧的第一部分输入信号建立并更新acelp编码模式中所需滤波器的历史状态,基于更新后的所述acelp编码模式中所需滤波器的历史状态对包括所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号进行acelp编码处理;

其中,所述第i+1帧输入信号由不相交的第一部分输入信号和第二部分输入信号组成,且所述第一部分输入信号早于所述第二部分输入信号。

在本实施例的一种备选方案中,当所述第i帧的前一帧的编码模式为mdct模式时,所述预定义窗型为第二窗型,所述第二窗型满足如下条件:

所述第二窗型从左至右依次包括5个部分:第一零值区、上升窗区、1值保持区、下降窗区、第二零值区,其中:

所述第一零值区值为0,长度与所述1值保持区在所述第二窗型的窗中心左侧的长度相同;

所述上升窗区与第一窗型在窗中心左侧的窗型一致;

所述1值保持区值为1,长度为n1,取值范围为d2f≤n1≤n;

所述下降窗区中从1平滑下降至0,其长度n1f满足0<n1f≤n-n1;

所述第二零值区值为0,其长度与所述1值保持区在所述第二窗型的窗中心右侧的长度相同;

其中,所述n为mdct编码模式一帧信号的采样点数量,所述d2f为acelp中采样率转换产生的延时在输入信号采样率上对应的采样点数量;所述第一窗型为对不处于编码模式切换的帧进行mdct编码时使用的窗型。

在本实施例的一种备选方案中,当所述第i帧的前一帧的编码模式为acelp模式时,所述预定义窗型为第四窗型,所述第四窗型满足如下条件:

所述第四窗型从左至右依次包括5个部分:第一零值区、上升窗区、1值保持区、下降窗区、第二零值区,其中:

所述第一零值区值为0,长度与所述1值保持区在所述第四窗型的窗中心左侧的长度相同;

所述上升窗区从0平滑上升至1,其长度n2大于0;

所述1值保持区值为1,其长度为n3,满足:n3≥d1+d2f;

所述下降窗区为从1平滑下降至0的窗,其长度n1f满足0<n1f≤n-d2f;

所述第二零值区值为0,长度与所述1值保持区在所述第四窗型的窗中心右侧的长度相同;

其中,所述d1为mdct编码模式中由于帧与帧之间交叠产生的延时在输入信号的采样率上对应的采样点数量;d2f为acelp中采样率转换产生的延时在输入信号采样率上对应的采样点数量,n为mdct编码模式一帧信号的采样点数量。

在本实施例的一种备选方案中,所述预定义窗型的长度lw>2*n时,采用所述预定义窗型对第i帧的输入信号进行mdct编码的过程中,将与所述预定义窗型的长度相关的参数进行缩放,缩放尺度为[lw/2n],[·]表示取最接近的整数。

在本实施例的一种备选方案中,对所述第i帧或者所述第i帧及其之前的帧的编码信息进行解码,获得解码信号包括:

根据所述第i帧或者所述第i帧及其之前的帧的编码信息进行解码,获得包括第i帧和第i+1帧的共m个采样点的解码信号s1d,所述m=m2+d12o-d2f;其中,所述m2不小于后续建立并更新acelp编码中所需滤波器的历史状态时所需的信号的长度,所述d12o为编码模式从mdct模式切换到acelp模式时,mdct解码信号与acelp解码信号重叠区域的采样点数量,且d12o≥d2f,d2f为acelp中采样率转换产生的延时在输入信号采样率上对应的采样点数量。

在本实施例的一种备选方案中,所述根据所述解码信号、以及包括所述第i帧的部分输入信号及第i+1帧的第一部分输入信号建立并更新acelp编码模式中所需滤波器的历史状态包括:

对所述解码信号s1d进行acelp编码模式的下采样,获得信号s1dd;

使用acelp编码模式中的下采样滤波器对所述第i帧的部分输入信号及第i+1帧的第一部分输入信号进行下采样得到信号sd后,保存所述下采样滤波器的状态sd。

在本实施例的一种备选方案中,所述对所述解码信号s1d进行acelp编码模式的下采样,获得信号s1dd;以及,使用acelp编码模式中的下采样滤波器对所述第i帧的部分输入信号及第i+1帧的第一部分输入信号进行下采样得到信号sd后,保存所述下采样滤波器的状态sd的步骤在将所述第i帧的mdct编码码流输出之前执行。

在本实施例的一种备选方案中,所述根据所述解码信号、以及包括所述第i帧的部分输入信号及第i+1帧的第一部分输入信号建立并更新acelp编码模式中所需滤波器的历史状态还包括如下之一或其组合:

使用acelp编码模式中的预加重滤波器对所述s1dd进行预加重,获得所述acelp编码模式核心工作频率上预加重后的信号s1ddp;

使用acelp编码模式中的预处理中的高通滤波器对所述信号sd进行高通滤波后,保存所述高通滤波器的状态shp;

使用acelp编码模式中的预加重滤波器对所述信号sd进行预加重得到信号sdp后,将所述sdp作为acelp预处理信号保存,保存所述预加重滤波器的状态sp;

对输入信号s2进行acelp编码中的下采样处理时,将所述下采样滤波器的状态sd作为acelp编码中的下采样滤波器的历史状态;所述输入信号s2为所述第i+1帧输入信号的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号;

对所述输入信号s2进行acelp编码过程中,将高通滤波器的状态shp作为acelp编码中高通滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,将所述预加重滤波器的状态sp作为acelp编码中预加重滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史预加重输入信号时,将所述acelp预处理信号的部分信息作为acelp编码中所需的历史的acelp核心工作频率上的预加重后的输入信号;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史的未量化电抗谱对isp系数时,用acelp编码过程中计算得到的未量化线性预测编码lpc系数对应的isp系数作为acelp编码中所需的历史的未量化isp系数;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史感知加权信号时,利用acelp编码过程中计算得到的插值后的第一子帧的lpc系数组成的感知加权滤波器,对所述acelp预处理信号进行感知加权滤波,用得到的感知加权信号作为acelp编码中所需的历史感知加权信号;

对所述输入信号s2进行acelp编码过程中,当需要进行开环基音搜索时,利用acelp编码过程中开环基音搜索中的高通滤波器对所述感知加权信号进行高通滤波处理,得到高通滤波后的感知加权信号以及高通滤波器的状态,利用所述的高通滤波后的感知加权信号作为开环基音搜索增益计算所需的历史的高通滤波后的感知加权信号缓存数据,利用所述的高通滤波器的状态作为开环基音搜索增益计算所需的高通滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史的量化后的isp系数时,用acelp编码过程中计算得到的量化后的isp系数作为acelp编码中所需的历史的量化后的isp系数;

对所述输入信号s2进行acelp编码过程中,当需要利用到lpc合成滤波器的历史状态时,利用所述s1ddp最后mlpco长度的信息作为acelp编码中处理第一个子帧时所需的lpc合成滤波器的历史状态;其中,所述mlpco为acelp编码中lpc的阶数;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史激励信号时,利用acelp编码过程中计算得到的第一子帧的lpc系数组成预测分析滤波器,对所述s1ddp进行分析滤波,得到lpc分析滤波的残差信号,将所得到的lpc分析滤波的残差信号作为acelp编码中所需的历史激励信号;

对所述输入信号s2进行acelp编码过程中,当需要进行闭环基音搜索时,计算当前acelp编码处理信号起始位置之前一帧长度的编码输入信号与对应位置的mdct解码信号的误差;利用acelp编码过程中的感知加权滤波器对所述误差进行滤波,将得到的感知加权滤波器的状态作为acelp编码过程中闭环基音搜索所需的目标信号的计算中的感知加权滤波器的历史状态;

在本实施例的一种备选方案中,所述基于更新后的所述acelp编码模式中所需滤波器的历史状态对包括所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号进行acelp编码处理包括:

对包括所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号进行acelp编码过程中:

当需要利用到固定码本增益预测值时,如果原acelp编码中的计算固定码本增益预测值的方法为预测方法,采用非预测方法计算得到固定码本增益预测值;所述原acelp编码为对处于非mdct和acelp切换且类型为acelp编码模式的帧进行的acelp编码;所述计算固定码本增益预测值的非预测方法指利用当前编码处理信号的信息对当前的固定码本增益进行预测的方法;

当需要进行每个子帧的码本增益量化时,比较原acelp编码中的预测方法得到的固定码本增益预测值与采用所述非预测方法计算得到的固定码本增益预测值,选择两者中使子帧的编码误差能量最小的值作为该子帧的最终的固定码本预测增益值;同时采用一个选择标志位记录该子帧所选择的固定码本增益预测值;基于所选择的固定码本预测增益值进行该子帧码本增益的量化,并更新量化能量预测误差。

在本实施例的一种备选方案中,所述方法还包括:

计算高频增益及索引之后,将第一子帧的高频增益置为最小值,将原有用于传输第一子帧的高频增益的比特用于传输所述通过非预测方法获取的所述固定码本增益预测值以及第一子帧的固定码本增益预测值的选择标志位信息;将第二至第四子帧的高频增益索引表示的精度各降低1比特,用节省下来的比特分别传输第二至第四子帧的固定码本增益预测值的选择标志位信息。

在本实施例的一种备选方案中,所述基于更新后的所述acelp编码模式中所述滤波器的历史状态对包括所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号进行acelp编码处理包括:

对包括第i+1帧的第二部分输入信号及第i+2帧的部分输入信号的总长度为一帧的输入信号进行acelp编码过程中,使用acelp编码模式的下采样滤波器对包括第i+1帧的第二部分输入信号及第i+2帧的部分输入信号的总长度为一帧的输入信号进行下采样得到信号sd2,使用高通滤波器对信号sd2进行高通滤波处理得到sdhp2;

对所述sdhp2进行高通滤波非线性相移补偿处理得到sdhpc2,对所述sdhpc2执行后续acelp编码处理。

在本实施例的一种备选方案中,所述对sdhp2进行高通滤波非线性相移补偿处理得到sdhpc2包括:

如果第i+2帧的编码模式为mdct模式,则:将所述补偿高通滤波非线性相移影响的高通滤波器的输出信号置为所述高通滤波器的输入信号,即:sdhpc2=sd2。

在本实施例的一种备选方案中,所述对sdhp2进行高通滤波非线性相移补偿处理得到sdhpc2包括:

如果第i+2帧的编码模式为acelp模式,则:

对所述高通滤波器的输入信号sd2施加具有从1平滑下降至0特性的长为lhpe1的第一下降窗得到信号sd2w;以及,对所述高通滤波器的输出信号sdhp2施加具有从0平滑上升1特性的长为lhpe1的第一上升窗得到信号sdhp2w;将信号sd2w和sdhp2w叠加所得的值作为sdhpc2在所述第一上升窗内的lhpe1个点,sdhpc2在所述第一上升窗之前的值和所述sd2一致,所述sdhpc2在所述第一上升窗之后的值和所述sdhp2一致,所述lhpe1小于等于acelp核心工作频率上一帧信号长度,且所述第一下降窗和第一上升窗之和为1。

在本实施例的一种备选方案中,所述第一下降窗为线性下降窗,所述第一上升窗为线性上升窗。

在本实施例的一种备选方案中,所述方法还包括:

如果所述第i+2帧的编码模式为mdct编码模式,则按照如下方式对所述第i+2帧进行编码:

使用预设窗型对所述第i+2帧信号进行mdct编码;其中,所述预设窗型使得对第i+2帧的编码码流进行解码时,能够重构出部分信号与对所述的第i+1帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差。

在本实施例的一种备选方案中,如果所述第i+2帧的后一帧的编码模式为mdct编码模式,则:

所述预设窗型为第三窗型,所述第三窗型从左至右依次包括5个部分:第一零值区、上升窗区、1值保持区、下降窗区、第二零值区,其中:

所述第一零值区值为0,长度与所述1值保持区在所述第三窗型的窗中心左侧的长度相同;

所述上升窗区从0平滑上升至1,其长度n2,所述n2大于0;

所述1值保持区值为1,其长度n2c满足:n2c≥d1+d21o-n+d2f;

所述下降窗区与第一窗型在窗中心右侧的窗型一致;

所述第二零值区值为0,长度与所述1值保持区在所述第三窗型的窗中心右侧的长度相同;

其中,d1为mdct编码模式中由于帧与帧之间交叠产生的延时在输入信号的采样率上对应的采样点数量;d2f为acelp中采样率转换产生的延时在输入信号采样率上对应的采样点数量,d21o≥0为编码模式从acelp模式切换到mdct模式时,mdct解码信号与acelp解码信号重叠区域的采样点数量,n为mdct编码模式一帧信号的采样点数量;

所述第一窗型为对不处于编码模式切换的帧进行mdct编码时使用的窗型。

在本实施例的一种备选方案中,所述预设窗型的长度lw3>2*n时,采用所述预设窗型对第i+2帧的输入信号进行mdct编码的过程中,将与所述预设窗型的长度相关的参数进行缩放,缩放尺度为[lw3/2n]。

本发明实施例还提供一种解码模式切换方法,包括:

当第i帧的码流类型为修改型离散余弦变换mdct码流,后一帧即第i+1帧的码流类型为代数码激励线性预测acelp码流,则:

采用预定义窗型对所述第i帧的码流进行mdct解码,得到第i帧的解码信号和第i+1帧的mdct解码信号;所述预定义窗型使得对所述第i帧的码流进行mdct解码时,能够重构出所述第i+1帧的部分信号;

根据所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号建立并更新acelp解码中所需滤波器的历史状态,基于更新后的acelp解码中所需滤波器的历史状态,对所述第i+1帧的码流进行acelp解码,得到acelp解码信号;

对所述第i+1帧的mdct解码信号与所述acelp解码信号进行处理得到所述第i+1帧的最终解码信号。

在本实施例的一种备选方案中,所述对所述第i+1帧的mdct解码信号与所述acelp解码信号进行处理得到所述第i+1帧的最终解码信号包括:

对所述第i+1帧的所述mdct解码信号s1d施加具有从1平滑下降至0特性的长为lmaf的第二下降窗得到信号s1dw;以及,对所述acelp解码信号s2d施加具有从0平滑上升至1特性的长为lmaf的第二上升窗得到信号s2dw,则所述第i+1帧的最终解码信号sfd在所述第二上升窗内的值为s1dw+s2dw,所述sfd在所述第二上升窗之前的值和所述s1d一致,所述sfd在所述第二上升窗之后的值和所述s2d一致;其中,所述第二下降窗和所述第二上升窗之和为1,0<lmaf≤d12o,所述d12o为所述mdct解码信号与所述acelp解码信号重叠区域的采样点数量。

在本实施例的一种备选方案中,当所述第i帧的前一帧的编码模式为mdct模式时,所述预定义窗型为第二窗型。

在本实施例的一种备选方案中,当所述第i帧的前一帧的编码模式为acelp模式时,所述预定义窗型为第四窗型。

在本实施例的一种备选方案中,根据所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号建立并更新acelp解码中所需滤波器的历史状态包括:

对所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号进行下采样,得到信号s1dd。

在本实施例的一种备选方案中,所述对所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号进行下采样,得到信号s1dd的步骤在将所述i帧的解码信号输出前执行。

在本实施例的一种备选方案中,所述根据所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号建立并更新acelp解码中所需滤波器的历史状态还包括如下之一或其组合:

使用acelp编码模式中的预加重滤波器对所述s1dd进行预加重,得到信号s1ddp;

对所述第i+1帧的码流进行acelp解码的过程中,当需要用到前一帧的量化后的isp系数时,利用解码得到的量化后的isp系数作为acelp解码中所需的前一帧的量化后isp系数;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到lpc合成滤波器的历史激励信号时,利用acelp解码中计算得到的量化并插值后的第一子帧的lpc系数组成预测分析滤波器,对所述s1ddp进行分析滤波,得到lpc分析滤波的残差信号,用所得到的lpc分析滤波的残差信号作为acelp解码中所需的lpc合成滤波器的历史激励信号;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到lpc合成滤波器历史状态时,利用所述s1ddp中最后mlpco长度的信息作为acelp解码中lpc合成滤波器的历史状态,其中,mlpco为acelp编码中lpc的阶数;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到去加重滤波器时,利用所述s1dd的最后一个值作为acelp解码中去加重滤波器历史状态;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到上采样滤波器时,利用所述s1dd的最后d2fd个采样点作为acelp解码中上采样滤波器历史状态,所述d2fd为acelp中采样率转换产生的延时在acelp编码模式核心工作频率的采样信号上对应的采样点数量。

在本实施例的一种备选方案中,所述基于更新后的acelp解码中各滤波器的历史状态,对所述第i+1帧的码流进行acelp解码包括:

当需要用到每个子帧的固定码本增益时,如果原acelp编码中的计算固定码本增益预测值的方法为预测方法,解出通过非预测方法计算得到的固定码本增益预测值,以及,第一至第四子帧的固定码本增益预测值的选择标志位信息,选择对应的固定码本增益预测值计算出第一至第四子帧的固定码本增益,所述原acelp编码为对处于非mdct和acelp切换且类型为acelp编码模式的帧进行的acelp编码。

所述固定码本增益预测值和所述选择标志位信息可以通过但不限于如下方式获得:

从acelp解码得到的第一子帧的高频增益中解出所述通过非预测方法计算得到的固定码本增益预测值,再分别从第一至第四子帧的高频增益中解出所述第一至第四子帧的固定码本增益预测值的选择标志位信息。

在本实施例的一种备选方案中,所述基于更新后的acelp解码中各滤波器的历史状态,对所述第i+1帧的码流进行acelp解码包括:

对所述第i+1帧的码流进行acelp解码过程中,在进行后置高通滤波时,进行后置高通滤波非线性相移补偿处理。

在本实施例的一种备选方案中,所述进行后置高通滤波非线性相移补偿处理包括:

如果第i+2帧的码流类型为mdct类型,所述的acelp解码过程中后置高通滤波器的输入信号为s2ddp,将所述补偿高通滤波非线性相移影响的后置高通滤波器的输出信号s2ddphpc置为所述后置高通滤波的输入信号s2ddp。

在本实施例的一种备选方案中,所述进行后置高通滤波非线性相移补偿处理包括:

如果第i+2帧接收的码流类型为acelp类型,对所述acelp解码中的后置高通滤波器的输入信号s2ddp施加具有从1平滑下降至0特性的长度为lhpd1的第三下降窗,得到加窗后的高通滤波输入信号s2ddpw,对所述后置高通滤波器的输出信号s2ddphp施加具有从0平滑上升至1特性的长度为lhpd1的第三上升窗,得到加窗后的高通滤波输出信号s2ddphpw;

将所述s2ddpw和所述s2ddphpw相加,得到补偿高通滤波非线性相移影响的后置高通滤波器的输出信号s2ddphpc在所述第三下降窗内的lhpd1个点,所述s2ddphpc在所述第三下降窗之前的值与所述s2ddp一致,在所述第三下降窗之后的值与所述s2ddphp一致,0≤lhpd1≤nd;nd为acelp核心工作频率上一帧信号长度,且所述第三下降窗和第三上升窗之和为1。

在本实施例的一种备选方案中,所述第三下降窗为线性下降窗,所述第三上升窗为线性上升窗。

在本实施例的一种备选方案中,如果所述第i+2帧的码流类型为mdct码流,则按照如下方式对所述第i+2帧进行解码:

使用预设窗型对所述第i+2帧的码流进行mdct解码;其中,所述预设窗型使得对第i+2帧的编码码流进行解码时,能够重构出部分信号与对所述的第i+1帧的acelp编码码流进行解码时重构的信号重叠,并补偿模式切换前acelp编解码与模式切换后mdct编解码之间的延时差。

在本实施例的一种备选方案中,如果所述第i+2帧的后一帧的码流类型为mdct码流,则:所述预设窗型为第三窗型。

本发明实施例还提供一种编码模式切换方法,包括:

当确定第k帧的编码模式类型为代数码激励线性预测acelp编码模式,且其前一帧即第k-1帧为acelp编码模式,其后一帧即第k+1帧为修改型离散余弦变换mdct编码模式,则:

对第k帧及第k+1帧中一帧长度的输入信号进行下采样处理,得到acelp核心工作频率上的信号sd,对所述sd使用acelp编码中的高通滤波器进行处理,得到信号sdhp;其中,所述的第k帧及第k+1帧中一帧长度的输入信号中包含的第k帧的输入信号为前一次acelp编码时输入第k帧中部分信号之后第k帧的剩余部分的信号;

对所述信号sdhp进行高通滤波非线性相移补偿处理,得到补偿后的信号sdhpc;对所述sdhpc进行后续acelp编码处理,得到第k帧的acelp编码码流;

使用预定义窗型对所述第k+1帧信号进行mdct编码;其中,所述预定义窗型使得对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差。

在本实施例的一种备选方案中,如果所述第k+1帧的后一帧的编码模式为mdct编码模式,则:所述预定义窗型为第三窗型。

在本实施例的一种备选方案中,如果所述第k+1帧的后一帧的编码模式为acelp编码模式,则:所述预定义窗型为第四窗型。

在本实施例的一种备选方案中,所述预定义窗型的长度lw>2*n时,采用所述预定义窗型对所述第k+1帧的输入信号进行mdct编码的过程中,将与所述预定义窗型的长度相关的参数进行缩放,缩放尺度为[lw/2n]。

在本实施例的一种备选方案中,所述对所述信号sdhp进行高通滤波非线性相移补偿处理,得到补偿后的信号sdhpc包括:

对所述高通滤波器的输出信号sdhp施加具有从1平滑下降至0特性的长为lhpe2的第四下降窗得到信号sdhpw;以及,对所述高通滤波器的输入信号sd施加具有从0平滑上升至1特性的长为lhpe2的第四上升窗得到信号sdw;将信号sdhpw和sdw叠加所得的值作为sdhpc的在所述第四下降窗内的lhpe2个点,sdhpc在第四下降窗之前的值和sdhp一致,sdhpc在第四下降窗之后的值和sd一致,所述lhpe2大于0,且小于等于acelp核心工作频率上三个子帧信号长度减去acelp核心工作频率上acelp解码信号与后续mdct解码信号重叠区域信号的长度,且所述第四下降窗和所述第四上升窗之和为1。

在本实施例的一种备选方案中,所述第四下降窗为线性下降窗,所述第四上升窗为线性上升窗。

本发明实施还提供一种解码模式切换方法,包括:

当第k帧的码流类型为代数码激励线性预测acelp码流,且其前一帧即第k-1帧为acelp码流,后一帧即第k+1帧的码流类型为修改型离散余弦变换mdct码流,则:

对第k帧码流进行acelp解码,得到acelp解码过程中后置高通滤波器的输入信号s2ddp和后置高通滤波器的输出信号s2ddphp,进行后置高通滤波非线性相移补偿处理得到s2ddphpc,对s2ddphpc进行后续acelp解码处理,得到第k帧的acelp解码信号和第k+1帧的acelp解码信号;

对第k+1帧码流,采用预定义窗型对所述第k+1帧码流进行mdct解码,得到mdct解码信号;所述预定义窗型使得对第k+1帧码流进行mdct解码时,能够重构出部分信号与对所述的第k帧码流进行acelp编码时重构的信号重叠,并补偿解码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差;

对所述第k+1帧的acelp解码信号和所述mdct解码信号进行处理得到所述第k+1帧的最终解码信号。

在本实施例的一种备选方案中,所述进行后置高通滤波非线性相移补偿处理得到s2ddphpc包括:

对所述后置高通滤波器的输出信号s2ddphp施加具有从1平滑下降至0特性的长为lhpd2的第五下降窗得到信号s2ddphpw;以及,对所述后置高通滤波器的输入信号s2ddp施加具有从0平滑上升至1特性的长为lhpd2的第五上升窗得到信号s2ddpw;将信号s2ddphpw和s2ddpw叠加所得的值作为s2ddphpc在所述第五下降窗内的lhpd2个点,s2ddphpc在第五下降窗之前的值和s2ddphp一致,s2ddphpc在第五下降窗之后的值和s2ddp一致,所述lhpd2大于0,且小于等于nd-d2fd/2-d21od,其中,nd为acelp核心工作频率上一帧信号长度,d2fd为acelp中采样率在输入信号采样频率与acelp核心工作频率之间相互转换时产生的延时对应的acelp核心工作频率上的采样点数,d21od为acelp核心工作频率上acelp解码信号与后续mdct解码信号重叠区域信号的长度,且所述第五下降窗和所述第五上升窗之和为1。

在本实施例的一种备选方案中,所述第五下降窗为线性下降窗,所述第五上升窗为线性上升窗。

在本实施例的一种备选方案中,如果所述第k+1帧的后一帧的码流为mdct码流,则:所述预定义窗型为第三窗型。

在本实施例的一种备选方案中,如果所述第k+1帧的后一帧的码流为acelp码流,则:所述预定义窗型为第四窗型。

在本实施例的一种备选方案中,所述预定义窗型的长度lw>2*n时,采用所述预定义窗型对所述第k+1帧的输入信号进行mdct解码的过程中,将与所述预定义窗型的长度相关的参数进行缩放,缩放尺度为[lw/2n]。

在本实施例的一种备选方案中,所述对所述第k+1帧的acelp解码信号和所述mdct解码信号进行处理得到所述第k+1帧的最终解码信号包括:

对所述第k+1帧的所述acelp解码信号s2d施加具有从1平滑下降至0特性的长为lamf的第六下降窗得到信号s2dw;以及,对所述mdct解码信号s1d施加具有从0平滑上升至1特性的长为lamf的第六上升窗得到信号s1dw,则所述第k+1帧的最终解码信号sfd在所述第六上升窗内的值为s1dw+s2dw,在所述第六上升窗之前的sfd的值和所述s2d一致,在所述第六上升窗之后的sfd的值和所述s1d一致;其中,所述第六下降窗和第六上升窗之和为1,0<lamf≤d21o,所述d21o为所述acelp解码信号与所述mdct解码信号重叠区域的采样点数量。

下述实施例中mdct编码模式以g.722.1为例,acelp编码模式以g.722.2为例,但本发明不限于此,也可以采取其他方式的mdct编码模式和acelp编码模式,比如aac中的mdct编码模式、amr-wb+(extendedadaptivemulti-rate–widebandcodec,增强的自适应多码率宽带编码器)中的acelp编码模式等。

实施例1

本实施例描述从mdct编码模式至acelp编码模式的平滑切换方法。鉴于mlt(modulatedlappedtransform,调制重叠变换)变换是mdct变换的一种变型,选择g.722.1(mlt变换)的音频编码器作为mdct编码器,选择g.722.2的语音编码器作为acelp编码器;设经过信号分类后,第i帧及之前信号的编码模式为mdct模式,用g.722.1编码;第i+1帧信号的编码模式为acelp模式,用g.722.2编码。具体的g.722.1至g.722.2的平滑切换方法如下所述。

如图1所示,在编码端包括以下步骤:

步骤e101:对于第0~i-1帧输入信号,其前一帧、当前帧及后一帧信号的编码模式均为mdct模式,利用g.722.1编解码中原有的窗型,这里称之为第一窗型,对这部分信号进行g.722.1编码,并将每一帧编码码流与下一帧的编码模式信息一起输出;

所述的输入信号的采样率为16khz,一帧信号的长度为20ms,包含n=320个采样点;

所述的第0帧信号不是真实的输入信号,该帧信号全部置为0,并且该帧信号的编码模式与第1帧信号的编码模式相同;

所述的第一窗型如图2所示,具体公式为:

其中n=320为一帧信号的采样点数量,并认为编码第i-1帧时,窗h0(nw)的起始位置(nw=0)与第i-1帧的起始位置(n=(i-2)*n)重合,跨越第i-1帧和第i帧两帧,nw为16khz采样率上的信号索引;

步骤e102:对于第i帧信号,其前一帧及当前帧信号的编码类型为mdct模式,后一帧信号的编码模式为acelp模式,则利用预定义的第二窗型对第i帧输入信号进行g.722.1编码,以便对第i帧的编码码流进行解码时,能够重构出第i+1帧的部分信号;

所述的第二窗型从左至右依次包括5个部分:第一零值区、上升窗区、1值保持区,下降窗区和第二零值区,其中:

所述的第一零值区,为一段值为0的窗,其长度与1值保持区在所述第二窗型的窗中心左侧的长度相同;

所述的上升窗区,为一段与所述第一窗型的前半部分窗型相同的上升窗,以便与第一窗型配合实现对第i帧信号的编解码;

所述的1值保持区,为一段长度为n1的值为1窗,n1的取值范围为:d2f≤n1≤n;优选地,d2f≤n1≤min(d1+d12o,n-n1f),其中,

d2f=30个采样点,为g.722.2中采样率转换产生的延时(1.875ms)在16khz(即输入信号采样率)采样信号上对应的采样点数量;

d1=320个采样点,为g.722.1中由于帧与帧之间交叠产生的延时(20ms,不包含编码一帧信号自身的延时)在16khz(即输入信号采样率)采样信号上对应的采样点数量;

d12o为当编码模式从mdct模式切换到acelp模式时,g.722.1解码信号与g.722.2解码信号重叠区域的采样点数量,d12o≥d2f以保证为g.722.2解码中上采样滤波器提供精确的历史状态;

所述的下降窗区,为一段由1平滑下降到0的下降窗,长度为n1f,且0<n1f≤n-n1;优选地,选择余弦下降窗作为该段下降窗;

所述的第二零值区,为一段值为0的窗,其长度与1值保持区在窗中心位置之后的长度相同;

所述的第二窗型的窗中心位置为第二窗型的中心点的位置;所述的mdct编码中的两个折叠位置,为第二窗型中前半区域的中心点位置和后半区域的中心点位置;

这样,第二窗型的总长度为lw2=2*(160+n1+n1f/2);优选地lw2≥2*n;

如果lw2=2*n,则相应的g.722.1编解码中的其它部分不需要改变;

如果lw2>2*n,将g.722.1编解码中与窗长度相关参数进行相应的尺度缩放或调整,保证在原码率约束下,实现对lw2长度的信号进行g.722.1编解码;优选地,缩放的尺度为[lw2/2n]。

本实施例中,第二窗型如图3所示,具体公式为:

其中n1=110,第一零值区的长度为0;窗长lw2=2*320,相应的mdct编码处理采用原g.722.1中的处理;编码第i帧时,窗h1(nw)的起始位置(nw=0)与第i帧的起始位置(n=(i-1)*n)重合,跨越第i帧和第i+1帧两帧;

步骤e103:对第i-1帧和第i帧的g.722.1编码信息进行g.722.1本地解码,得到第i+1帧中第n1=110个采样点及之前的m-1个采样点的解码信号s1d(n),n=in+n1-m,...,in+n1-1;

其中,解码时采用的窗型与编码时的窗型相同;m=m2+d12o-d2f,m2不小于后续建立并更新g.722.2编码中各滤波器的历史状态时所需的信号的长度;本实施例中取m2=375个采样点,即得到解码信号s1d(n),n=(i-1)*n+55,...,in+109;

步骤e104:根据g.722.2中的编码参数,对第i帧及第i+1帧的上述g.722.1解码信号s1d(n),n=(i-1)*n+55,...,in+109以及第i帧及第i+1帧的输入信号进行下采样、预加重和高通滤波等acelp预处理,得到g.722.2核心工作频率上预加重后的g.722.1解码信号、acelp预处理信号、下采样滤波器的状态sd、高通滤波器的状态shp和预加重滤波器的状态sp;

当然,步骤e104中的预加重和高通滤波处理也可以放在步骤e105之后执行;

步骤e105:将第i帧g.722.1编码的码流(步骤e102中的编码码流)以及第i+1帧的编码模式信息一起输出;

步骤e106:将从第i+1帧中第n2s个点开始的跨越了第i+1帧及第i+2帧两帧的一帧长度的原始信号s(n),n=in+n2s,...,(i+1)*n+n2s-1送入g.722.2编码中,执行编码模式从g.722.1(mdct模式)切换至g.722.2(acelp模式)时的g.722.2(acelp模式)编码,包括:

初始化g.722.2编码中各滤波器的历史状态,利用编码第i帧时得到的acelp预处理信号、g.722.2核心工作频率上预加重后的g.722.1解码信号、下采样滤波器状态sd、高通滤波器状态shp、预加重滤波器的状态sp以及g.722.2编码过程中的参数建立并更新g.722.2编码中所需滤波器的历史状态,同时基于更新后g.722.2编码中的各滤波器历史状态,对输入信号进行g.722.2编码处理,得到g.722.2的编码码流;

其中,n2s=n1+d2-d12o+d2f/2,d2=80个采样点为g.722.2(acelp模式)中的前瞻(look-ahead)延时(5ms)对应在16khz采样率信号上的采样数量;优选地,n2s为5的整数倍;

本实施例中n2s=175,输入到g.722.2编码中的信号为s(n),n=in+175,...,(i+1)*n+174;

步骤e107:将g.722.2编码得到的码流及第i+2帧的编码模式信息一起输出;

步骤e108:对第i+2帧中剩余未编码信号及以后的信号,根据信号分类得到的编码模式信息进行后续的编码处理,结束。

优选地,如果第i+2帧的编码模式为mdct模式,则按照后续实施例2中所述的当编码模式从acelp模式切换至mdct模式时,切换后的g.722.1(mdct编码模式)编码处理方法对第i+2帧信号进行编码处理,然后再根据后续信号分类得到的编码模式信息,继续进行后续的编码处理;

优选地,如果第i+2帧的编码模式为acelp模式,则按照原g.722.2编码方法对第i+2帧信号进行编码处理,然后再根据后续信号分类得到的编码模式信息,继续进行后续的编码处理。

下面结合图6对步骤e104中所述的对第i帧及第i+1帧的g.722.1本地解码信号以及第i帧及第i+1帧的输入信号进行acelp预处理的过程进行详细的描述,具体包括以下步骤:

步骤e104a:利用g.722.2中的下采样滤波器对第i帧及第i+1帧的g.722.1本地解码信号s1d(n),n=in+n1-m,...,in+n1-d12o+d2f-1进行下采样,将采样率从16khz下采样至g.722.2的核心工作频率,得到g.722.2核心工作频率对应的g.722.1解码信号:

s1dd(nd),nd=ind+[4*(n1-m)/5]+d2fd/2,

...,ind+[4*(n1-d12o+d2f-1)/5]-d2fd/2

所述的g.722.2核心工作频率为12.8khz;

其中,nd为g.722.2核心工作频率12.8khz上的信号索引,nd=256,为g.722.2核心工作频率上一帧信号长度;d2fd=24个采样点为g.722.2中采样率转换产生的延时(1.875ms)在g.722.2核心工作频率12.8khz采样信号上对应的采样点数量;

本实施例中通过本步骤可以得到的g.722.2核心工作频率对应的g.722.1解码信号范围为s1dd(nd),nd=(i-1)*nd+56,...,ind+75;

步骤e104b:利用g.722.2编码中的预加重滤波器对g.722.2核心工作频率对应的g.722.1在第i帧及第i+1帧的解码信号s1dd(nd),nd=(i-1)*nd+56,...,ind+75进行预加重处理,舍弃第一个点,得到g.722.2核心工作频率上预加重后的g.722.1解码信号s1ddp(nd),nd=(i-1)*nd+57,...,ind+75;

步骤e104c:利用g.722.2中的下采样滤波器对第i帧及第i+1帧的部分输入信号s(n),n=in+n2s-ms-d2,...,in+n2s-1进行下采样,得到g.722.2核心工作频率12.8khz对应的输入信号sd(nd),nd=ind+[4*(n2s-ms-d2)/5]+d2fd/2,…,ind+[4*(n2s-1)/5]-d2fd/2,同时将下采样滤波器的状态sd保存;

所述的第i帧及第i+1帧的部分输入信号为s(n),n=in+n2s-ms-d2,...,in+n2s-1,即为后续输入到g.722.2编码器中进行编码的信号起始位置(第i+1帧中第n2s=175个点)之前的ms+d2个采样点的原始信号;其中,ms不小于后续建立并更新g.722.2编码中的历史状态时所需的原始信号的长度;

本实施例中取ms=365,所述的需要进行下采样处理的第i帧的部分输入信号及第i+1帧的部分输入信号为s(n),n=(i-1)*n+50,...,in+174;对应得到的g.722.2核心工作频率12.8khz采样率的输入信号为sd(nd),nd=(i-1)*nd+52,...,ind+127;

步骤e104d:利用g.722.2编码预处理中的高通滤波器对g.722.2核心工作频率对应的输入信号sd(nd),nd=(i-1)*nd+52,...,ind+127进行高通滤波,将高通滤波器的状态shp保存;

步骤e104e:利用g.722.2编码中的预加重滤波器对g.722.2核心工作频率对应的输入信号sd(nd),nd=(i-1)*nd+52,...,ind+127进行预加重,舍弃结果中第一个点,得到g.722.2核心工作频率上预加重后的输入信号sdp(nd),nd=(i-1)*nd+53,...,ind+127,将该信号作为acelp预处理信号保存,同时将预加重滤波器的状态sp保存,结束。

下面结合图7对步骤e106中所述的g.722.2编码过程进行详细的描述,具体包括以下步骤:

e106a:将从第i+1帧中第n2s=175个点开始的一帧长度的原始信号s(n),n=in+n2s,...,(i+1)*n+n2s-1送入g.722.2编码中,该一帧长度的信号跨越了第i+1帧及第i+2帧两帧的输入信号;

e106b:由于第i+1帧信号的编码模式类型为acelp类型,其前一帧的编码模式类型为mdct类型,则执行g.722.2编码中的初始化操作,初始化各滤波器的历史状态;

步骤e106c:利用编码第i帧时e104步骤中acelp预处理得到的下采样滤波器的状态sd作为g.722.2编码中的下采样滤波器的历史状态,对输入信号s(n),n=in+n2s,...,(i+1)*n+n2s-1进行g.722.2中的下采样处理,可以得到g.722.2核心工作频率上的信号sd(nd),nd=ind+[4ns/5]-d2fd/2,...,(i+1)*nd+[4(ns-1)/5];

本实施例中,可以得到g.722.2核心工作频率上的信号sd(nd),nd=ind+128,...,(i+1)*nd+139;

步骤e106d:利用编码第i帧时e104步骤中acelp预处理得到的高通滤波器的状态shp作为g.722.2编码中预处理部分的高通滤波器的历史状态,对g.722.2核心工作频率上的信号sd(nd),nd=ind+128,...,(i+1)*nd+139进行g.722.2编码预处理中的高通滤波处理,可以得到高通滤波后的信号sdhp(nd),nd=ind+128,...,(i+1)*nd+139;

步骤e106e:补偿g.722.2编码预处理过程中高通滤波的非线性相移对平滑切换的影响;

优选地,如果第i+2帧的编码模式为mdct模式,利用第一种方法补偿g.722.2编码预处理过程中高通滤波非线性相移的影响;

优选地,如果第i+2帧的编码模式为acelp模式,利用第二种方法补偿g.722.2编码预处理过程中高通滤波非线性相移的影响;

所述的第一种补偿高通滤波器非线性相移影响的方法为:将高通滤波器的输出信号置为高通滤波器的输入信号,即补偿高通滤波非线性相移影响之后的信号sdhpc(nd)为:

sdhpc(nd)=sd(nd),nd=ind+128,...,(i+1)*nd+139(3)

所述的第二种补偿高通滤波器非线性相移影响的方法为:对高通滤波的输入信号sd(nd),nd=ind+128,...,(i+1)*nd+127施加一个下降窗whpe1(j),得到加窗后的高通滤波输入信号sdw(nd):

sdw(nd)=whpe1(nd-(ind+128))*sd(nd),nd=ind+128,...,(i+1)*nd+127(4)

其中下降窗为whpe1(j),可以为如下线性下降窗:

whpe1(j)=(lhpe1-1-j)/(lhpe1-1),j=0,...,lhpe1-1(5)

当然,本发明中下降窗不限于上述式(5)中的线性下降窗,也可以采用其它形式的具有从1平滑下降到0特性的函数,窗的长度0≤lhpe1≤nd;本实施例中,取lhpe1为g.722.2核心工作频率上一帧信号长度nd,即lhpe1=nd;

对高通滤波的输出信号sdhp(nd),nd=ind+128,...,(i+1)*nd+127施加一个上升窗,得到加窗后的高通滤波输出信号sdhpw(nd):

其中上升窗可以为如下线性上升窗:

1-whpe1(j),j=0,...,lhpe1-1(7)

其中,所述上升窗也可以不是线性上升窗,上升窗与前面的下降窗有关,下降窗和上升窗相加后等于1。

将加窗的高通滤波输入信号sdw(nd)和加窗的高通滤波器输出信号sdhpw(nd)交叠相加(nd值相同的位置上的值相加),得到补偿高通滤波非线性相移影响的信号sdhpc(nd):

sdhpc(nd)=sdw(nd)+sdhpw(nd),nd=ind+128,...,(i+1)*nd+127(8)

交叠区域之后的高通滤波输出信号保持不变,即:

sdhpc(nd)=sdhp(nd),nd=(i+1)*nd+128,...,(i+1)*nd+139(9)

如果所述的下降窗和上升窗的起始位置不是高通滤波输出信号的起始位置,则交叠相加区域之前的高通滤波输出信号等于高通滤波器的输入信号。

其中,如果第i+2帧的编码模式为acelp模式,步骤e106e是可选步骤;

当然,也可以通过其他方式对高通滤波器的非线性相移进行补偿,比如通过设计与高通滤波器相位互补的滤波器进行补偿。

步骤e106f:利用编码第i帧时e104步骤中acelp预处理得到的预加重滤波器的状态sp作为g.722.2编码中预加重滤波器的历史状态,对补偿了非线性相移影响后的高通滤波输出信号sdhpc(nd)进行预加重滤波处理,得到预加重后的输入信号sdhpp(nd),然后继续进行后续的g.722.2编码处理;

步骤e106g:当g.722.2编码中需要利用到历史预加重输入信号时,利用编码第i帧时e104步骤中acelp预处理得到的acelp预处理信号中最后m2ds长度的信息,sdp(nd),nd=ind+127-m2ds,...,ind+127,作为g.722.2编码中所需的历史的(g.722.2编码输入信号之前的)g.722.2核心工作频率上的预加重后的输入信号sdhpp(nd),nd=ind+127-m2ds,...,ind+127,然后继续进行后续的g.722.2编码处理;

其中,m2ds=dlpc-d2fd/2,dlpc为g.722.2编码中lpc(linearpredictivecoding,线性预测编码)系数计算时所需的额外的10ms的预加重后的输入信号的采样点数量(信号的采样率为g.722.2核心工作频率);本实施例中,dlpc=128,m2ds=116;所利用的最后m2ds长度的acelp预处理信号为sdp(nd),nd=ind+12,...,ind+127;

步骤e106h:当g.722.2编码中需要利用到历史的未量化isp(immittancespectralpairs,电抗谱对)系数时,用g.722.2编码过程中计算得到的未量化lpc系数对应的isp系数作为g.722.2编码中所需的历史的未量化isp系数,然后继续进行后续的g.722.2编码处理;

步骤e106i:当g.722.2编码中需要利用到历史感知加权信号时,利用g.722.2编码过程中计算得到的插值后的第一子帧的lpc系数组成的感知加权滤波器,对编码第i帧时步骤e104e中得到的acelp预处理信号sdp(nd),nd=(i-1)*nd+53,...,ind+127进行感知加权滤波,用得到的感知加权信号作为g.722.2编码中所需的历史感知加权信号,然后继续进行后续的g.722.2编码处理;

其中,所述的子帧为acelp编码中对一帧信号平均划分的四个部分,每个部分为一个子帧,其长度为一帧信号长度的1/4,四个子帧按照时间顺序分别为第一、第二、第三、第四子帧;

步骤e106j:当g.722.2编码中需要进行开环基音搜索时,利用步骤e106i得到的感知加权信号更新开环基音搜索中增益计算所需的历史缓存数据,然后继续进行后续的g.722.2编码处理;

所述的更新开环基音搜索中增益计算所需的历史缓存数据的方法为:利用g.722.2编码过程中开环基音搜索中的高通滤波器对步骤e106i中得到的感知加权信号进行高通滤波处理,得到高通滤波后的感知加权信号以及高通滤波器的状态,利用所述的高通滤波后的感知加权信号作为开环基音搜索中增益计算所需的历史的高通滤波后的感知加权信号缓存数据,利用所述的高通滤波器的状态作为开环基音搜索中增益计算所需的高通滤波的历史状态;

当然,该步骤为可选步骤;

步骤e106k:当g.722.2编码中需要利用到历史的量化后的isp系数时,用g.722.2编码过程中计算得到的量化后的isp系数作为g.722.2编码中所需的历史的量化后的isp系数,然后继续进行后续的g.722.2编码处理;

步骤e106l:当g.722.2编码中需要利用到lpc合成滤波器的历史状态时,利用编码第i帧时步骤e104b中得到的g.722.2核心工作频率上预加重后的g.722.1解码信号中最后mlpco长度的信息,s1ddp(nd),nd=ind+75-mlpco+1,...,ind+75,作为g.722.2编码中处理第一个子帧时所需的lpc合成滤波器的历史状态,然后继续进行后续的g.722.2编码处理;其中,mlpco=16为g.722.2编码中lpc的阶数,也是lpc合成滤波器所需的历史状态数据的长度;

步骤e106m:当g.722.2编码中需要利用到历史激励信号时,利用g.722.2编码过程中计算得到的第一子帧的lpc系数组成预测分析滤波器,对步骤e104b中得到的g.722.2核心工作频率上预加重后的g.722.1解码信号s1ddp(nd),nd=(i-1)*nd+57,...,ind+75进行分析滤波,得到lpc分析滤波的残差信号,用所得到的lpc分析滤波的残差信号作为g.722.2编码中所需的历史激励信号,然后继续进行后续的g.722.2编码处理;

步骤e106n:当g.722.2编码中需要进行闭环基音搜索时,利用g.722.2核心工作频率上当前g.722.2编码处理信号起始位置ind+n2sp之前一帧长度的预加重后的编码输入信号sdp(nd),nd=ind+n2sp-nd,...,ind+n2sp-1以及对应位置的预加重后的mdct解码信号s1ddp(nd),nd=ind+n2sp-nd,...,ind+n2sp-1,更新g.722.2编码过程中闭环基音搜索中计算目标信号时所需的感知加权滤波器的历史状态,然后继续进行后续的g.722.2编码处理;

所述的当前g.722.2编码处理的信号的起始位置ind+n2sp为,g.722.2编码输入信号(16khz采样率)起始位置in+n2s之前d2个采样点在g.722.2核心工作频率(12.8khz采样率)上的位置,;本实施例中n2sp=76;

所述的更新g.722.2编码过程中闭环基音搜索所需的目标信号的计算中的感知加权滤波器的历史状态的方法包括:

计算当前g.722.2编码处理信号起始位置in+n2sp之前一帧长度的编码输入信号sdp(nd),nd=ind+n2sp-nd,...,ind+n2sp-1与对应位置的mdct解码信号s1ddp(nd),nd=ind+n2sp-nd,...,ind+n2sp-1的误差:

e1d(nd)=sdp(nd)-s1ddp(nd),nd=ind+n2sp-nd,...,ind+n2sp-1(10)

利用g.722.2编码过程中的感知加权滤波器对误差e1d(nd),nd=ind+n2sp-nd,...,ind+n2sp-1进行滤波,将得到的感知加权滤波器的状态作为g.722.2编码过程中闭环基音搜索所需的目标信号的计算中的感知加权滤波器的历史状态;

本发明中所利用的g.722.2核心工作频率上当前g.722.2编码处理信号起始位置ind+n2sp之前的预加重后的编码输入信号sdp(nd)以及对应位置的预加重后的mdct解码信号s1ddp(nd)的长度不限于一帧长度,只要能够保证所得到的闭环基音搜索所需的目标信号的计算中的感知加权滤波器的历史状态值与单独用g.722.2编码时的状态值相差不大即可;

步骤e106o:当g.722.2编码中需要利用到固定码本增益预测值时,采用非预测方法计算得到固定码本增益预测值;所述的固定码本增益预测值在一帧信号内只有一个值;

所述计算固定码本增益预测值的非预测方法指利用当前编码处理信号的信息对当前的固定码本增益进行预测的方法,该方法不需要历史信号信息,例如amr-wb+中计算固定码本增益预测值的方法;

当然,本申请中所述的计算固定码本增益预测值的非预测方法不限于使用amr-wb+中的方法,也可以采用其它的非预测方法;

步骤e106p:当g.722.2编码中需要进行每个子帧的码本增益量化时,比较原g.722.2中的预测方法得到的固定码本增益预测值与采用非预测方法计算得到的固定码本增益预测值,选择两者中使子帧的编码误差能量最小的值作为该子帧的最终的固定码本预测增益值;同时采用一个选择标志位记录该子帧所选择的固定码本增益预测值;基于所选择的固定码本预测增益值进行该子帧码本增益的量化,并更新量化能量预测误差;然后继续进行后续的g.722.2编码处理;

步骤e106q:在g.722.2编码中计算高频增益及索引之后,将第一子帧的高频增益置为最小值,这部分信息无需传输,用节省下来的比特传输采用非预测方法计算得到的一帧信号的固定码本增益预测值以及第一子帧的固定码本增益预测值的选择标志位信息;将第二至第四子帧的每个高频增益索引表示的精度降低1比特,用节省下来的比特分别传输第二至第四子帧的固定码本增益预测值的选择标志位信息,然后继续进行后续的g.722.2编码处理,得到g.722.2的编码码流,结束;

当然,如果所选用的acelp编码模式采用非预测方法计算固定码本增益,则可以跳过步骤e106o、步骤e106p和步骤e106q中对固定码本增益的相关操作。

如图8所示,在解码端包括以下步骤:

步骤d101:依次读入从编码端传输过来的第0~i-1帧的码流以及同时传输过来的每一帧的下一帧的编码模式信息,根据接收的编码模式信息判断出当前接收的一帧的码流及其前一帧和后一帧信号的码流均为mdct码流,利用第一窗型对0~i-1帧的码流进行g.722.1解码,并将解码信号输出;

所述的码流类型与编码模式对应,即mdct编码模式对应于g.722.1码流(mdct码流),acelp编码模式对应于g.722.2码流(acelp码流)。

步骤d102:读入第i帧码流以及同时传输过来的第i+1帧编码模式信息,判断出第i+1帧码流类型为acelp类型;

步骤d103:第i-1帧~第i+1帧的码流分别为mdct类型、mdct类型和acelp类型,因此采用第二窗型对第i帧码流进行g.722.1解码,得到第i帧整帧及第i+1帧前n1=110个采样点的解码信号s1d(n),n=(i-1)*n,...,in+109;

步骤d104:将g.722.1解码的第i帧信号s1d(n),n=(i-1)*n,...,in-1输出,将第i+1帧中第n1=110个采样点及之前的m-1个采样点的解码信号s1d(n),n=in+n1-m,...,in+n1-1保存在缓存器中,即解码信号s1d(n),n=(i-1)*n+55,...,in+109;

步骤d105:根据g.722.2中的编码参数,对上述第i帧及第i+1帧的g.722.1解码信号s1d(n),n=(i-1)*n+55,...,in+109进行步骤e104a和步骤e104b所述的acelp预处理,得到g.722.2核心工作频率上预加重之前的g.722.1解码信号s1dd(nd),nd=(i-1)*nd+56,...,ind+75和预加重之后的g.722.1解码信号s1ddp(nd),nd=(i-1)*nd+57,...,ind+75;

当然,步骤d105中所述的步骤e104b中的预加重处理也可以放在步骤d106之后执行;

步骤d106:读入第i+1帧码流及同时传输过来的第i+2帧的编码模式信息;

步骤d107:第i帧、第i+1帧的码流分别为mdct类型和acelp类型,因此执行编码模式从g.722.1(mdct模式)至g.722.2(acelp模式)时的g.722.2(acelp模式)解码:初始化g.722.2解码中各滤波器的历史状态,利用步骤d105得到的g.722.2核心工作频率上预加重之前的g.722.1解码信号s1dd(nd),nd=(i-1)*nd+56,...,ind+75、预加重后的g.722.1解码信号s1ddp(nd),nd=(i-1)*nd+57,...,ind+75以及g.722.2解码过程中的参数建立并更新g.722.2解码中所需滤波器的历史状态,同时基于更新后的g.722.2解码中的滤波器历史状态,对第i+1帧码流进行g.722.2解码,得到g.722.2解码信号s2d(n),n=in+n2spu-d2f/2,...,(i+1)*n+n2spu-1-d2f/2;

其中,in+n2spu为g.722.2编码第i+1帧信号时,g.722.2编码处理信号在g.722.2核心工作频率(12.8khz)上的起始位置ind+n2sp(12.8khz采样率)对应到输入信号采样率(16khz)上的位置;本实施例中,n2spun1-d12o+d2f/2,可见,得到的g.722.2解码信号可以进一步表示为:

s2d(n),n=in+n1-d12o,...,(i+1)*n+n1-d12o-1

本实施例中,得到的g.722.2解码信号为s2d(n),n=in+80,...,(i+1)*n+79;

步骤d108:对g.722.1的解码信号与g.722.2的解码信号重叠部分的信号进行交叠相加处理,得到最终的解码信号;

g.722.1解码信号与g.722.2解码信号重叠的区域为in+n1-d12o≤n≤in+n1-1,本实施例中,重叠的区域为in+80≤n≤in+109;对该区域的g.722.1解码信号施加一个下降窗,得到加窗后的g.722.1解码信号s1dw(n):

s1dw(n)=wmaf(n-(in+80))*s1d(n),n=in+80,...,in+109(11)

其中所述下降窗wmaf(j)可以为余弦下降窗:

wmaf(n)=cos2(jπ/(2*(lmaf-1))),j=0,...,lmaf-1(12)

当然,本发明中下降窗不限于上述余弦下降窗,也可以采用其它形式的具有从1平滑下降到0特性的函数,窗的长度0<lmaf≤d12o;本实施例中,取lmaf=d12o;

对该区域的g.722.2解码信号施加一个上升窗,得到加窗后的g.722.2解码信号s2dw(n):

s2dw(n)=(1-wmaf(n-(in+80)))*s2d(n),n=in+80,...,in+109(13)

其中上升窗可以为余弦上升窗1-wmaf(j),j=0,...,lmaf-1;

将加窗后的g.722.1解码信号s1dw(n)与加窗后的g.722.2解码信号s2dw(n)相加,得到交叠区域最终的解码信号sfd(n):

sfd(n)=s1dw(n)+s2dw(n),n=in+80,...,in+109(14)

交叠区域之前的最终解码信号为g.722.1的解码信号:

sfd(n)=s1d(n),n=in,...,in+79(15)

交叠区域之后的最终解码信号为g.722.2的解码信号:

sfd(n)=s2d(n),n=in+110,...,(i+1)*n+79(16)

步骤d109:将最终解码得到的第i+1帧信号输出,将本次解码得到的第i+2帧的前n1-d12o=80个采样点信号保存在缓存器中;

步骤d110:依次读入第i+2帧及以后的码流和同时传输过来的编码模式信息,根据接收到的编码模式信息,执行后续的解码处理,结束;

优选地,如果第i+2帧的编码模式为mdct模式,则按照后续实施例2中所述的当编码模式从acelp模式切换至mdct模式时,切换后的g.722.1解码处理方法对第i+2帧码流进行解码处理,然后再根据后续接收到的编码模式信息,继续进行后续的解码处理;

优选地,如果第i+2帧的编码模式为acelp模式,则按照原g.722.2解码方法对第i+2帧码流进行解码处理,然后再根据后续接收到的编码模式信息,继续进行后续的解码处理。

下面结合图9对步骤d107中所述的g.722.1解码过程进行详细描述,具体包括以下步骤:

步骤d107a:第i帧和第i+1帧的码流分别为mdct类型和acelp类型,因此初始化g.722.2解码中各滤波器的历史状态;

步骤d107b:从第i+1帧的g.722.2码流中解码出相关参数之后,进行正常的g.722.2解码处理,当需要用到前一帧的量化后isp系数时,利用解码得到的量化后isp系数作为g.722.2解码中所需的前一帧的量化后isp系数,然后继续进行后续的g.722.2解码处理;

步骤d107c:当需要用到lpc合成滤波器的历史激励信号时,利用g.722.2解码中计算得到的量化并插值后的第一子帧的lpc系数组成预测分析滤波器,对步骤d105中得到的g.722.2核心工作频率上预加重之后的g.722.1解码信号s1ddp(nd),nd=(i-1)*nd+57,...,ind+75进行分析滤波,得到lpc分析滤波的残差信号,用所得到的lpc分析滤波的残差信号作为g.722.2解码中所需的lpc合成滤波器的历史激励信号,然后继续进行后续的g.722.2解码处理;

步骤d107d:当需要用到每个子帧的固定码本增益时,从g.722.2解码得到的第一子帧的高频增益中解出通过非预测方法计算得到的固定码本增益预测值,再分别从第一至第四子帧的高频增益中解出第一至第四子帧的固定码本增益预测值的选择标志位信息,选择对应的固定码本增益预测值计算出第一至第四子帧的固定码本增益,然后继续进行后续的g.722.2解码处理;

当然,如果所采用的acelp编码模式中,原本计算固定码本增益预测值的方法为非线性预测方法,则可以忽略该步骤;

步骤d107e:当需要用到lpc合成滤波器历史状态时,利用步骤d105中得到的g.722.2核心工作频率对应的预加重后的g.722.1解码信号中最后mlpco=16长度的信息,s1ddp(nd),nd=(i-1)*nd+60,...,ind+75,作为g.722.2解码中lpc合成滤波器的历史状态,然后继续进行后续的g.722.2解码处理;

步骤d107f:当需要用到去加重滤波器时,利用步骤d105中得到的g.722.2核心工作频率对应的预加重之前的g.722.1解码信号中最后一个值,s1dd(nd),nd=ind+75,作为g.722.2解码中去加重滤波器历史状态,然后继续进行后续的g.722.2解码处理;

步骤d107g:当g.722.2解码进行到后置高通滤波时,补偿g.722.2解码过程中后置高通滤波的非线性相移对平滑切换的影响,得到补偿了非线性相移影响后的g.722.2解码后置高通滤波输出信号,基于该信号继续进行后续的g.722.2解码处理;

所述的g.722.2解码过程中后置高通滤波器的输入信号为s2ddp(nd),nd=ind+n2sp,...,(i+1)*nd+n2sp-1,本实施例中,n2sp=76,则后置高通滤波器的输入信号为s2ddp(nd),nd=ind+76,...,(i+1)*nd+75;正常进行g.722.2解码中的后置高通滤波后的输出信号为s2ddphp(nd),nd=ind+76,...,(i+1)*nd+75;所述的补偿g.722.2解码过程中后置高通滤波的非线性相移对平滑切换影响的方法为:

优选地,如果第i+2帧接收的码流类型为mdct类型,利用第一种方法补偿g.722.2解码过程中后置高通滤波非线性相移的影响;

所述的用于补偿后置高通滤波非线性相移影响的第一种方法为:将补偿高通滤波非线性相移影响之后的后置高通滤波的输出信号s2ddphpc(nd)置为后置高通滤波的输入信号s2ddp(nd),即:

s2ddphpc(nd)=s2ddp(nd),nd=ind+76,...,(i+1)*nd+75(17)

优选地,如果第i+2帧接收的码流类型为acelp类型,利用第二种方法补偿g.722.2解码过程中后置高通滤波非线性相移的影响;

所述的用于补偿后置高通滤波非线性相移影响的第二种方法为:对后置高通滤波的输入信号s2ddp(nd),nd=ind+76,...,(i+1)*nd+75施加一个下降窗,得到加窗后的高通滤波输入信号s2ddpw(nd):

其中下降窗whpd1(j)可以为线性下降窗:

whpd1(j)=(lhpd1-1-j)/(lhpd1-1),j=0,...,lhpd1-1(19)

当然,本发明中下降窗不限于上述线性下降窗,也可以采用其它形式的具有从1平滑下降到0特性的函数,窗的长度0≤lhpd1≤nd;本实施例中,取lhpd1=nd;

对后置高通滤波的输出信号s2ddphp(nd),nd=ind+76,...,(i+1)*nd+75施加一个上升窗,得到加窗后的高通滤波输出信号s2ddphpw(nd):

其中上升窗可以为线性上升窗:

1-whpd1(j),j=0,...,lhpd1-1

将加窗的高通滤波输入信号s2ddpw(nd)和加窗的高通滤波器输出信号s2ddphpw(nd)交叠相加,得到补偿高通滤波非线性相移影响的信号s2ddphpc(nd):

s2ddphpc(nd)=s2ddpw(nd)+s2ddphpw(nd),nd=ind+76,...,(i+1)*nd+75(21)

如果下降窗与上升窗的长度小于g.722.2核心工作频率上一帧信号长度,则加窗交叠相加之前的补偿高通滤波非线性相移影响的信号为高通滤波的输入信号,加窗交叠相加之后的补偿高通滤波非线性相移影响的信号为高通滤波的输出信号;

其中,如果第i+2帧接收的码流类型为acelp模式,步骤d107g是可选步骤;

步骤d107h:当需要用到上采样滤波器时,利用步骤d105中得到的g.722.2核心工作频率对应的预加重之前的g.722.1解码信号中最后d2fd=24个采样点,s1dd(nd),nd=ind+52,...,ind+75,作为g.722.2解码中上采样滤波器历史状态,然后继续进行后续的g.722.2解码处理,得到的g.722.2解码信号s2d(n),n=in+80,...,(i+1)*n+79,结束。

实施例2

本实施例描述从基于acelp的编码模式至基于mdct的编码模式的平滑切换方法。同样选择g.722.1的音频编码器作为mdct编码器,选择g.722.2的语音编码器作为acelp编码器;设经过信号分类后,第k帧及之前信号的编码模式为acelp模式,用g.722.2编码;第k+1帧的编码模式为mdct模式,用g.722.1编码。具体的g.722.2至g.722.1的平滑切换方法如下所述。

如图10所示,在编码端包括以下步骤:

步骤e201:对于第0~k-1帧信号,其前一帧、当前帧及后一帧信号的编码模式均为acelp模式,从n=-n2s=-175位置开始读入信号,并进行g.722.2编码,将每帧的编码码流及下一帧的编码模式信息一起输出;

所述的n=-175…0的信号为第0帧中的信号,第0帧信号不是真实的输入信号,该帧信号全部为0;

步骤e202:对于第k帧信号,其前一帧及当前帧信号的编码类型为acelp模式,后一帧信号的编码模式为mdct模式,读入第k帧第n2s=175个点开始的跨越第k帧及第k+1帧的一帧长度的输入信号s(n),n=(k-1)*n+175,...,kn+174,对这部分信号进行g.722.2编码中的下采样处理,得到g.722.2核心工作频率上的信号sd(nd),nd=(k-1)*nd+[4ns/5]-d2fd/2,...,knd+[4(ns-1)/5],即sd(nd),nd=(k-1)*nd+128,...,knd+139,再对g.722.2核心工作频率上的信号sd(n),n=(k-1)*nd+128,...,knd+139进行g.722.2编码预处理中的高通滤波处理,得到高通滤波后的信号sdhp(n),n=(k-1)*nd+128,...,k*nd+139;

步骤e203:利用第三种方法补偿g.722.2编码预处理中的高通滤波非线性相移对平滑切换的影响;

对高通滤波的输出信号sdhp(nd),nd=knd+ndhpfs,...,knd+ndhpfe施加一个线性下降的窗,得到加窗后的高通滤波输出信号sdhpw(nd):

其中ndhpfe为加窗部分信号的结束位置,ndhpfe≤[4(ns-1)/5]-d2d-d21od–d2fd/2;d2d为g.722.2(acelp模式)中的前瞻(look-ahead)延时(5ms)对应在12.8khz采样率信号上的采样数量,d2d=64;d21od为g.722.2核心工作频率上g.722.2解码信号与后续g.722.1解码信号重叠区域信号的区域的采样点数量,本实施例中,d21od=32;ndhpfe=31;

ndhpfs为加窗部分信号的起始位置,ndhpfs=ndhpfe-lhpe2≥[4(ns-1)/5]-nd–d2fd/2;

lhpe2为下降窗whpe2(j)的长度,下降窗whpe2(j)为:

whpe2(j)=(lhpe2-1-j)/(lhpe2-1),j=0,...,lhpe2-1(23)

窗的长度lhpe2大于0,小于等于g.722.2核心工作频率上三个子帧信号长度减去g.722.2核心工作频率上g.722.2解码信号与后续g.722.1解码信号重叠区域信号的长度d21od,即0<lhpe2≤3*nd/4-d21od;本实施例中,d21od=32,lhpe2=3*nd/4-d21od=160;

当然,本实施例中下降窗不限于上述线性下降窗,也可以采用其它的具有从1平滑下降到0特性的函数。

对高通滤波的输入信号sd(nd),nd=knd+ndhpfs,...,k*nd+ndhpfe施加一个线性上升的窗,得到加窗后的高通滤波输入信号sdw(nd):

其中上升窗为1-whpe2(j),j=0,...,lhpe2-1;

将加窗后的高通滤波输入信号sdw(nd)和加窗后的高通滤波器输出信号sdhpw(nd)交叠相加,得到补偿高通滤波非线性相移影响的信号sdhpc(nd):

sdhpc(nd)=sdw(nd)+sdhpw(nd),nd=knd+ndhpfs,...,knd+ndhpfe(25)

交叠区域之前的高通滤波器输出信号保持不变:

sdhpc(nd)=sdhp(nd),nd<knd+ndhpfs(26)

交叠区域之后的高通滤波输出信号等于高通滤波器的输入信号:

sdhpc(nd)=sd(nd),nd>knd+ndhpfe(27)

步骤e204:对补偿了非线性相移影响后的高通滤波输出信号sdhpc(nd)进行后续正常的g.722.2编码处理,得到g.722.2的编码码流;

步骤e205:将g.722.2编码得到的码流及第k+1帧的编码模式信息一起输出;

步骤e206:对于第k+1帧信号,其前一帧的编码类型为acelp模式,当前帧的编码模式为mdct模式,利用新的窗型对第k+1帧信号进行g.722.1编码,以便对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差;

如果第k+1帧后一帧信号的编码模式为mdct模式,则利用预定义的第三窗型对第k+1帧信号进行g.722.1编码;

所述的第三窗型包括分为5个部分:第一零值区、上升窗区、1值保持区,下降窗区和第二零值区;其中:

所述的第一零值区,为一段值为0的窗,其长度与1值保持区在窗中心位置之前的长度相同;

所述的上升窗区,为一段由0平滑上升到1的上升窗,长度n2,且n2>0;优选地,选择余弦上升窗作为该段上升窗;

所述的1值保持区,为一段长度为n2c的值为1窗,n2c的取值范围为n2c≥d1+d21o-n+d2f;其中,d21o为g.722.1的解码信号与前面g.722.2的解码信号之间重叠区域的信号采样点数量;

所述的下降窗区,为一段与第一窗型的后半部分相同的下降窗;

所述的第二零值区,为一段值为0的窗,其长度与1值保持区在窗中心位置之后的长度相同;

所述的窗的中心位置为第三窗型的中心点的位置;所述的mdct编码中的两个折叠位置,为第三窗型中前半区域中心点位置和后半区域中心点位置;

所述的第三窗型的总长度为lw3=n+2*n2c+n2;优选地lw3≥2*n;

如果lw3=2*n,则相应的mdct编解码中的其它部分不需要改变;

如果lw3>2*n,需要将g.722.1编解码中与窗长度相关参数进行相应的尺度缩放或调整,以保证在原码率约束下,实现对lw3长度的信号进行g.722.1编解码;优选地,缩放的尺度为[lw3/2n];

本实施例中,第三窗型如图4所示,具体公式为:

其中n=320为一帧信号的采样点数量;n2=80,为上升窗区长度;1值保持区的长度为n2c=d1+d21o-n1+d2f=n-n2/2=280,d21o=40为mdct的解码信号与前面g.722.2解码信号重叠区域的采样点数量;编码第k+1帧时,窗h2(nw)中nw=0的位置与第k帧的起始位置重合,窗h2(nw)跨越了第k、k+1、k+2三帧;

如果第k+1帧后一帧信号的编码模式类型为acelp模式,则利用第四窗型对第k+1帧信号进行g.722.1编码,同时执行实施例1中所述的信号编码模式从g.722.1(mdct模式)切换至g.722.2(acelp模式)过程中,g.722.1编码最后一帧时输出编码码流之前的其它操作;

其中,在执行g.722.1本地解码时,仅对第k+1帧的g.722.1编码信息进行解码,得到解码信号s1d(n),n=(k+1)*n+110-m,...,(k+1)*n+109;其中,本地解码时采用的窗型与编码时的窗型相同,m=375;

所述的第四窗型使得对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,且能够重构出部分信号与对所述的第k+2帧的acelp解码信号重叠,同时能够补偿mdct编码模式中由于帧与帧之间交叠产生的延时以及acelp编码模式中采样率转换产生的延时;

所述的第四窗型包括5个部分:第一零值区、上升窗区、1值保持区,下降窗区和第二零值区;其中:

所述第一零值区值为0,长度与所述1值保持区在所述第四窗型的窗中心左侧的长度相同;

所述上升窗区从0平滑上升至1,其长度n2大于0;

所述1值保持区值为1,为一段长度为n3的值为1的窗;所述的1值保持区长度n3的取值范围为:n3≥d1+d2f;优选地,n3≥m;

所述下降窗区为从1平滑下降至0的窗,其长度n1f满足0<n1f≤n-d2f;

所述第二零值区值为0,长度与所述1值保持区在所述第四窗型的窗中心右侧的长度相同;

所述的窗的中心位置为第四窗型中线点的位置;所述的mdct编码中的两个折叠位置,为第四窗型中前半区域的中心点位置和后半区域的中心点位置;

优选地,所述的第四窗型是第二窗型与第三窗型的结合,其中:

所述的上升窗区,与第三窗型中的上升窗区相同;

所述的1值保持区的长度n3的取值范围为:n3=n1+n2c;

所述的下降窗区,与第二窗型的下降窗区相同;

这样,第四窗型的总长度为lw4=2*(n3+n2c+n1f/2+n2);

可见,lw4>2*n,需要将g.722.1编解码中与窗长度相关参数进行相应的尺度缩放或调整,以保证在原码率约束下,实现对lw4长度的信号进行g.722.1编解码;优选地,缩放的尺度为[lw4/2n];

本实施例中,第四窗型如图5所示,具体公式为:

其中n=320为一帧信号的采样点数量,n2=80,n1=110,编码第k+1帧时,窗h3(nw)中nw=0的位置与第k帧的起始位置重合,窗h3(nw)跨越了第k、k+1、k+2三帧;

步骤e207:将第k+1帧g.722.1编码的码流以及第k+2帧的编码模式信息一起输出;

步骤e208:对于第k+2帧及以后的信号,根据信号分类得到的编码模式类型,进行后续的编码处理,结束;

优选地,如果第k+2帧的编码模式为mdct模式,则按照原g.722.1编码方法继续对第k+2帧输入信号进行编码处理,然后再根据后续信号分类得到的编码模式信息,继续进行后续的编码处理;

优选地,如果第k+2帧的编码模式为acelp模式,则按照实施例1中所述的当编码模式从mdct模式切换至acelp模式时,切换后的g.722.2编码处理方法对第k+2帧输入信号进行编码处理;然后再根据后续信号分类得到的编码模式信息,继续进行后续的编码处理。

如图11所示,在解码端包括以下步骤:

步骤d201:依次读入从编码端传输过来的第0~k-1帧的码流以及同时传输过来的每一帧的下一帧的编码模式类型信息,根据接收的编码模式信息判断出当前接收的一帧的码流及其前一帧和后一帧信号的码流均为acelp码流,对这几帧码流进行g.722.2解码,得到当前码流对应的解码信号,与前一帧码流解码时缓存下来的信号联合,输出当前帧的解码信号,并将当前码流中解码得到的下一帧的解码信号保存在缓存器中;

其中,第0帧中后面n-n2s=145个点的输出信号由解码第0帧码流得到,前面n2s=175个点的输出信号全部置0;

步骤d202:读入第k帧码流以及同时传输过来的第k+1帧编码模式信息,判断出第k+1帧码流类型为mdct类型;

步骤d203:对于第k帧码流,其前一帧和当前帧码流均为acelp类型,后一帧码流为mdct类型,则对第k帧码流进行g.722.2解码,得到g.722.2解码过程中后置高通滤波的输入信号s2ddp(nd),nd=(k-1)*nd+n2sp,...,k*nd+n2sp-1和后置高通滤波的输出信号s2ddphp(nd),nd=(k-1)*nd+n2sp,...,k*nd+n2sp-1,本实施例中,n2sp=76;

步骤d204:利用第三种方法补偿g.722.2解码过程中后置高通滤波非线性相移对平滑切换的影响;

对后置高通滤波的输出信号s2ddphp(nd),nd=knd+n2ddphpfs,...,knd+n2ddphpfe施加一个下降窗,得到加窗后的后置高通滤波输出信号s2ddphpw(nd):

其中n2ddphpfe为加窗部分信号的结束位置,n2ddphpfe≤n2sp-1-d21od–d2fd/2;本实施例中,n2ddphpfe=31;

n2ddphpfs为实施加窗部分信号的起始位置,n2ddphpfs=n2ddphpfe-lhpd2≥n2sp-nd;

lhpd2为下降窗whpd2(j)的长度,下降窗whpd2(j)可以为线性下降窗:

whpd2(j)=(lhpd2-1-j)/(lhpd2-1),j=0,...,lhpd2-1(31)

窗的长度lhpd2大于0,小于等于g.722.2核心工作频率上一帧信号长度nd减去g.722.2中采样率在输入信号采样率与g.722.2核心工作频率之间相互转换时产生的g.722.2核心工作频率上的d2fd个采样点的延迟的一半,即d2fd/2,再减去g.722.2核心工作频率上g.722.2解码信号与后续g.722.1解码信号重叠区域信号的长度d21od,即0<lhpd2≤nd-d2fd/2-d21od;本实施例中,取lhpd2=nd-d2fd/2-d21od=212;

当然,本发明中下降窗不限于上述线性下降窗,也可以采用其它形式的具有从1平滑下降到0特性的函数;

对后置高通滤波的输入信号s2ddp(nd),nd=knd+n2ddphpfs,...,knd+n2ddphpfe施加一个上升窗,得到加窗后的高通滤波输入信号s2ddpw(nd):

其中上升窗可以为线性上升窗:1-whpd2(j),j=0,...,lhpd2-1;

将加窗后的高通滤波输入信号s2ddpw(nd)和加窗后的高通滤波器输出信号s2ddphpw(nd)交叠相加,得到补偿高通滤波非线性相移影响的信号s2ddphpc(n):

s2ddphpc(nd)=s2ddpw(nd)+s2ddphpw(nd),nd=knd+n2ddphpfs,...,knd+n2ddphpfe(33)

交叠区域之前的后置高通滤波输出信号保持不变,交叠区域之后的后置高通滤波输出信号等于后置高通滤波的输入信号;

步骤d205:对补偿了非线性相移影响后的后置高通滤波输出信号s2ddphpc(nd),nd=(k-1)*nd+76,...,k*nd+75进行g.722.2解码过程中的上采样处理,得到g.722.2解码信号s2d(n),n=(k-1)*n+80,...,k*n+79;

步骤d206:联合第k-1帧码流解码时缓存的解码信号以及当前第k帧码流的解码信号,输出第k帧解码信号s2d(n),n=(k-1)*n,...,(k-1)*n+319,并将已解码得到的第k+1帧的解码信号s2d(n),n=k*n,...,k*n+79保存在缓存器中;

步骤d207:读入第k+1帧码流及同时传输过来的第k+2帧编码模式信息;

步骤d208:对于第k+1帧码流,其前一帧码流为acelp类型,当前帧码流的类型为mdct类型,则采用新的窗型对第k+1帧码流进行g.722.1解码;

优选地,如果第k+1帧后一帧的码流类型为mdct类型,采用第三窗型对第k+1帧码流进行g.722.1解码,本次解码可以得到第k+1帧后280个采样点的信号s1d(n),n=k*n+40,...,k*n+319以及第k+2帧加窗-反折叠后的信号;

优选地,如果第k+1帧后一帧的码流类型为acelp类型,采用第四窗型对第k+1帧码流进行g.722.1解码,同时执行实施例1中所述的信号编码模式从g.722.1(mdct模式)切换至g.722.2(acelp模式)过程中,g.722.1解码最后一帧时所需的其它操作;本次解码可以得到第k+1帧后280个采样点的信号s1d(n),n=k*n+40,...,k*n+319以及第k+2帧前110个采样点的信号;

步骤d209:对g.722.2的解码信号与g.722.1的解码信号重叠部分的信号进行交叠相加处理,得到最终的解码信号;

g.722.2解码信号与g.722.1解码信号重叠区域为kn+n2s-d2-df/2-d21o≤n≤kn+n2s-1-d2-df/2,即k*n+40≤n≤k*n+79,对该区域的g.722.2解码信号施加一个下降窗wamf(j),得到加窗后的g.722.2解码信号s2dw(n):

s2dw(n)=wamf(n-(k*n+40))*s2d(n),n=k*n+40,...,k*n+79(34)

其中下降窗wamf(j)可以为余弦下降窗:

wamf(j)=cos2(jπ/(lamf-1)),n=0,...,lamf-1(35)

当然,本发明中下降窗不限于上述余弦下降窗,也可以采用其它形式的具有从1平滑下降到0特性的函数,窗的长度lamf大于0,小于等于g.722.2解码信号与g.722.1解码信号重叠区域的长度d21o,即0<lamf≤d21o;本实施例中,取d21o=40;

对该区域的g.722.1解码信号施加一个上升窗,得到加窗后的g.722.1解码信号s1dw(n):

s1dw(n)=(1-wamf(n-(k*n+40)))*s1d(n),n=k*n+40,...,k*n+79(36)

其中上升窗可以为余弦上升窗1-wamf(j),n=0,...,lamf-1;

将加窗后的g.722.1解码信号s1dw(n)与加窗后的g.722.2解码信号s2dw(n)交叠相加,得到交叠区域最终的解码信号sfd(n):

sfd(n)=s2dw(n)+s1dw(n),n=k*n+40,...,k*n+79(37)

交叠区域之前的最终解码信号为g.722.2的解码信号s2d(n),交叠区域之后的最终解码信号为g.722.1的解码信号s1d(n);

上升窗也可以是非余弦上升窗,也可以采用其它形式的具有从0平滑上升到1特性的函数。

步骤d210:将最终解码得到的第k+1帧信号输出,将本次解码得到的第k+2帧的部分信号保存在缓存器中;

步骤d211:依次读入第k+2帧及以后的码流和同时传输过来的编码模式信息,根据接收到的编码模式信息,执行后续的解码处理,结束;

优选地,如果第k+2帧的编码模式为mdct模式,则按照原g.722.1解码方法继续对第k+2帧码流进行解码处理,然后再根据后续接收到的编码模式信息,继续进行后续的解码处理;

优选地,如果第k+2帧的编码模式为acelp模式,则按照实施例1中所述的当编码模式从mdct模式切换至acelp模式时,切换后的g.722.2解码处理方法对第k+2帧码流进行解码处理,然后再根据后续接收到的编码模式信息,继续进行后续的解码处理。

实施例3

本实施例描述了一种实现上述实施例平滑切换方法的音频编码模式间平滑切换的编解码装置,包括编码模式从mdct模式至acelp模式切换时的编码模式切换装置、解码模式从mdct模式至acelp模式切换时的解码模式切换装置、编码模式从acelp模式至mdct模式切换时的编码模式切换装置和解码模式从acelp模式至mdct模式切换时的解码模式切换装置。

所述的编码模式从mdct模式至acelp模式切换时的编码模式切换装置,用于当第i帧的编码模式类型为修改型离散余弦变换mdct编码模式,后一帧即第i+1帧的编码模式为代数码激励线性预测acelp编码模式时的编码,包括第一编码模块e310、第一解码模块d310和第二编码模块e320,如图12所示,其中:

所述的第一编码模块e310,用于采用预定义窗型对第i帧的输入信号进行mdct编码获得所述第i帧的编码信息;所述预定义窗型使得对所述第i帧的编码码流进行解码时,能够重构出所述第i+1帧的部分信号;

所述的第一解码模块d310,用于对所述第i帧或者所述第i帧及其之前的帧的编码信息进行解码,获得解码信号;

所述的第二编码模块e320,用于根据所述解码信号、以及包括所述第i帧的部分输入信号及第i+1帧的第一部分输入信号建立并更新acelp编码模式中所需滤波器的历史状态,基于更新后的所述acelp编码模式中所需滤波器的历史状态对包括所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号进行acelp编码处理;

优选地,所述第二编码模块e320包括第一预处理模块e321和第二核心编码模块e322,如图13所示,其中:

所述的第一预处理模块e321用于:对所述解码信号s1d进行acelp编码模式的下采样,获得信号s1dd;以及,使用acelp编码模式中的下采样滤波器对所述第i帧的部分输入信号及第i+1帧的第一部分输入信号进行下采样得到信号sd后,保存所述下采样滤波器的状态sd。优选地,所述第一预处理模块在将所述第i帧的mdct编码码流输出之前执行。

所述的第二核心编码模块e322用于:使用acelp编码模式中的预加重滤波器对s1dd进行预加重,获得所述acelp编码模式核心工作频率上预加重后的信号s1ddp;

使用acelp编码模式中的预处理中的高通滤波器对所述信号sd进行高通滤波后,保存所述高通滤波器的状态shp;

使用acelp编码模式中的预加重滤波器对所述信号sd进行预加重得到信号sdp后,将所述sdp作为acelp预处理信号保存,保存所述预加重滤波器的状态sp;

对输入信号s2进行acelp编码中的下采样处理时,将所述下采样滤波器的状态sd作为acelp编码中的下采样滤波器的历史状态;所述输入信号s2为所述第i+1帧的第二部分输入信号和第i+2帧的部分输入信号的共一帧长度的输入信号;

对所述输入信号s2进行acelp编码过程中,将高通滤波器的状态shp作为acelp编码中高通滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,将所述预加重滤波器的状态sp作为acelp编码中预加重滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史预加重输入信号时,将所述acelp预处理信号的部分信息作为acelp编码中所需的历史的acelp核心工作频率上的预加重后的输入信号;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史的未量化电抗谱对isp系数时,用acelp编码过程中计算得到的未量化线性预测编码lpc系数对应的isp系数作为acelp编码中所需的历史的未量化isp系数;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史感知加权信号时,利用acelp编码过程中计算得到的插值后的第一子帧的lpc系数组成的感知加权滤波器,对所述acelp预处理信号进行感知加权滤波,用得到的感知加权信号作为acelp编码中所需的历史感知加权信号;

对所述输入信号s2进行acelp编码过程中,当需要进行开环基音搜索时,利用acelp编码过程中开环基音搜索中的高通滤波器对所述感知加权信号进行高通滤波处理,得到高通滤波后的感知加权信号以及高通滤波器的状态,利用所述的高通滤波后的感知加权信号作为开环基音搜索增益计算所需的历史的高通滤波后的感知加权信号缓存数据,利用所述的高通滤波器的状态作为开环基音搜索增益计算所需的高通滤波器的历史状态;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史的量化后的isp系数时,用acelp编码过程中计算得到的量化后的isp系数作为acelp编码中所需的历史的量化后的isp系数;

对所述输入信号s2进行acelp编码过程中,当需要利用到lpc合成滤波器的历史状态时,利用所述s1ddp最后mlpco长度的信息作为acelp编码中处理第一个子帧时所需的lpc合成滤波器的历史状态;其中,所述mlpco为acelp编码中lpc的阶数;

对所述输入信号s2进行acelp编码过程中,当需要利用到历史激励信号时,利用acelp编码过程中计算得到的第一子帧的lpc系数组成预测分析滤波器,对所述s1ddp进行分析滤波,得到lpc分析滤波的残差信号,将所得到的lpc分析滤波的残差信号作为acelp编码中所需的历史激励信号;

对所述输入信号s2进行acelp编码过程中,当需要进行闭环基音搜索时,计算当前acelp编码处理信号起始位置之前一帧长度的编码输入信号与对应位置的mdct解码信号的误差;利用acelp编码过程中的感知加权滤波器对所述误差进行滤波,将得到的感知加权滤波器的状态作为acelp编码过程中闭环基音搜索所需的目标信号的计算中的感知加权滤波器的历史状态。

所述第一解码模块e310还用于:当所述第i+2帧的编码模式为mdct模式时,按照如下方式对所述第i+2帧信号进行编码:

使用预设窗型对所述第i+2帧信号进行mdct编码;其中,所述预设窗型使得对第i+2帧的编码码流进行解码时,能够重构出部分信号与对所述的第i+1帧的acelp编码码流进行解码时重构的信号重叠,并补偿模式切换前acelp编解码与模式切换后mdct编解码之间的延时差。

所述的解码模式从mdct模式至acelp模式切换时的解码模式切换装置用于当第i帧的码流类型为修改型离散余弦变换mdct码流,后一帧即第i+1帧的码流类型为代数码激励线性预测acelp码流时的解码,包括第一解码模块d310、第二解码模块d320和第一综合处理模块z310,如图14所示,其中:

所述的第一解码模块d310,用于采用预定义窗型对所述第i帧的码流进行mdct解码,得到第i帧的解码信号和第i+1帧的mdct解码信号;所述预定义窗型使得对所述第i帧的码流进行mdct解码时,能够重构出所述第i+1帧的部分信号;

所述的第二解码模块d320,用于根据所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号建立并更新acelp解码中所需滤波器的历史状态,基于更新后的acelp解码中所需滤波器的历史状态,对所述第i+1帧的码流进行acelp解码,得到acelp解码信号;

所述的第一综合处理模块z310,用于对所述第i+1帧的mdct解码信号与所述acelp解码信号进行处理得到所述第i+1帧的最终解码信号。

优选地,所述第二解码模块d320包括第二预处理模块d321和第二核心解码模块d322,如图15所示,其中:

所述的第二预处理模块d321,用于对所述第i帧的部分解码信号和所述第i+1帧的mdct解码信号进行下采样,得到信号s1dd。

所述的第二核心解码模块d322用于执行如下之一或其组合:

使用acelp编码模式中的预加重滤波器对所述s1dd进行预加重,得到信号s1ddp;

对所述第i+1帧的码流进行acelp解码的过程中,当需要用到前一帧的量化后的isp系数时,利用解码得到的量化后的isp系数作为acelp解码中所需的前一帧的量化后isp系数;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到lpc合成滤波器的历史激励信号时,利用acelp解码中计算得到的量化并插值后的第一子帧的lpc系数组成预测分析滤波器,对所述s1ddp进行分析滤波,得到lpc分析滤波的残差信号,用所得到的lpc分析滤波的残差信号作为acelp解码中所需的lpc合成滤波器的历史激励信号;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到lpc合成滤波器历史状态时,利用所述s1ddp中最后mlpco长度的信息作为acelp解码中lpc合成滤波器的历史状态,其中,mlpco为acelp编码中lpc的阶数;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到去加重滤波器时,利用所述s1dd的最后一个值作为acelp解码中去加重滤波器历史状态;

对所述第i+1帧的码流进行acelp解码过程中,当需要用到上采样滤波器时,利用所述s1dd的最后d2fd个采样点作为acelp解码中上采样滤波器历史状态,所述d2fd为acelp中采样率转换产生的延时在acelp编码模式核心工作频率的采样信号上对应的采样点数量。

优选地,所述的第一解码模块d310和第二预处理模块d321中所述的下采样处理都在对第i帧mdct解码信号输出之前执行。

所述第一解码模块d310还用于:当所述第i+2帧的码流类型为mdct码流时,按照如下方式对所述第i+2帧码流进行解码:

使用预设窗型对所述第i+2帧码流进行mdct解码;其中,所述预设窗型使得对第i+2帧的码流进行解码时,能够重构出部分信号与对所述的第i+1帧的acelp编码码流进行解码时重构的信号重叠,并补偿模式切换前acelp编解码与模式切换后mdct编解码之间的延时差。

所述的第一综合处理模块z310还用于,当所述第i+2帧的码流类型为mdct码流时,对所述第i+2帧的mdct解码信号与所述的对所述的第i+1帧的acelp编码码流进行解码时得到的acelp解码信号进行处理得到所述第i+2帧的最终解码信号。

所述的编码模式从acelp模式至mdct模式切换时的编码模式切换装置,用于当第k帧的编码模式类型为代数码激励线性预测acelp编码模式,且其前一帧即第k-1帧为acelp编码模式,其后一帧即第k+1帧为修改型离散余弦变换mdct编码模式时对第k帧和第k+1帧信号的编码,包括第三编码模块e330和第四编码模块e340,如图16所示,其中:

所述的第三编码模块e330,用于对第k帧及第k+1帧中一帧长度的输入信号进行下采样处理,得到acelp核心工作频率上的信号sd,对所述sd使用acelp编码中的高通滤波器进行处理,得到信号sdhp;对所述信号sdhp进行高通滤波非线性相移补偿处理,得到补偿后的信号sdhpc;对所述sdhpc进行后续acelp编码处理,得到第k帧的acelp编码码流;其中,所述的第k帧及第k+1帧中一帧长度的输入信号中包含的第k帧的输入信号为前一次acelp编码时输入第k帧中部分信号之后第k帧的剩余部分的信号;

所述的第四编码模块e340,用于使用预定义窗型对所述第k+1帧信号进行mdct编码;其中,所述预定义窗型使得对第k+1帧的编码码流进行解码时,能够重构出部分信号与对所述的第k帧的acelp编码码流进行解码时重构的信号重叠,并补偿编码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差。

所述的编码模式从acelp模式至mdct模式切换时的解码模式切换装置,用于当第k帧的码流类型为代数码激励线性预测acelp码流,且其前一帧即第k-1帧为acelp码流,后一帧即第k+1帧的码流类型为修改型离散余弦变换mdct码流时对第k帧和第k+1帧码流的解码,包括第三解码模块d330、第四解码模块d340和第二综合处理模块z320,如图17所示,其中:

所述的第三解码模块d330,用于对第k帧码流进行acelp解码,得到acelp解码过程中后置高通滤波器的输入信号s2ddp和后置高通滤波器的输出信号s2ddphp,进行后置高通滤波非线性相移补偿处理得到s2ddphpc,对s2ddphpc进行后续acelp解码处理,得到第k帧的acelp解码信号和第k+1帧的acelp解码信号;

所述的第四解码模块d340,用于采用预定义窗型对第k+1帧码流进行mdct解码,得到mdct解码信号;所述预定义窗型使得对第k+1帧码流进行mdct解码时,能够重构出部分信号与对所述的第k帧码流进行acelp编码时重构的信号重叠,并补偿解码模式切换前acelp编解码与编码模式切换后mdct编解码之间的延时差;

所述的第二综合处理模块z320,用于对所述第k+1帧的acelp解码信号和所述mdct解码信号进行处理得到所述第k+1帧的最终解码信号。

需要说明的是,方法实施例中描述的多个细节同样适用于上述装置实施例,因此省略了对相同或相似部分的重复描述。

如果不进行任何平滑处理,直接进行mdct模式和acelp模式之间编解码切换,由于两种编码模式的延迟不同,两种编码模式切换时,会产生空白段或重复段,造成信息的丢失或重复;即使不考虑两种编码模式之间不同的延时,两种编码模式对信号的处理方法不同,各自实现帧间平滑过渡的方法也不相同,直接切换时,两种实现帧间平滑过渡的方法均无法发挥作用,会使切换信号在帧与帧之间过渡的部分产生跳变等严重的失真,无法实现平滑过渡。已公开的acelp的编码模式与mdct的编码模式之间的切换方法效果并不好,运算复杂度高,或是需要增加额外码率或延时。

与现有技术相比,本发明充分利用了mdct编码模式和acelp编码模式实现帧间平滑过渡的方法,通过规避mdct编解码中窗型变化陡峭,合理利用acelp编码中的各滤波器的记忆性,同时配合对acelp编解码中高通滤波器非线性相移影响的补偿,以及利用mdct解码信号与acelp解码信号的交叠相加处理,保证了编码模式从mdct编码模式至acelp编码模式切换时的平滑过渡;通过规避mdct编解码中窗型变化陡峭,同时配合对acelp编解码中高通滤波器非线性相移影响的补偿,并利用acelp解码信号与mdct解码信号的交叠相加,保证了编码模式从acelp编码模式至mdct编码模式切换时的平滑过渡。

本发明充分考虑了通常情况下mdct编码模式与acelp编码模式的时延不同以及一次编码所需信号长度不同的特点,通过修改切换过程中mdct编码模式的窗型,补偿了两种编码模式之间的延时差,以及解码端可利用数据信息的长度差,保证了整个基于mdct编码模式和acelp编码模式之间平滑切换的音频编解码装置无额外延时增加。

本发明还通过合理利用mdct编码模式中的bit分配方案,保证了在切换过程中的新mdct窗型下,mdct编码无额外码流增加;根据acelp编码中各参数对切换效果的不同影响,通过适当的改变对平滑切换不利或影响不大的参数占用的编码码流比特数,以传输一些有利于平滑切换的边信息,保证了切换过程中acelp编码无额外码流增加。

本发明充分考虑了各编码模式中各参数对平滑切换的影响,提取出对平滑切换影响较大的参数进行相应的处理,保证了在平滑切换过程中引入的较少的计算量;同时还充分利用了mdct编解码的计算复杂度远小于acelp编解码计算复杂度的特点,通过合理地将部分acelp编解码在切换过程中的历史状态建立的操作移到mdct编解码中进行,分担了acelp编解码在切换过程中增加的复杂度,保证了基于mdct编码模式与acelp编码模式之间平滑切换方法的计算复杂度的最大值比较低。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

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