一种语音/音乐双模编解码无缝切换方法

文档序号:2837100阅读:493来源:国知局
专利名称:一种语音/音乐双模编解码无缝切换方法
技术领域
本发明涉及一种可用于移动通信中低码率语音/音乐双模编解码器的设计。特别的,当语音模式采用码激励线性预测编码CELP,且音乐模式采用基于修正余弦变换MDCT的变换编码时,两种模式的无缝切换和降采样处理。
背景技术
语音信号和一般的音乐信号在时频统计特性上有很大的不同。时域语音信号表现为准周期特性,其频谱较平坦且带宽在7KHz以下;一般的音乐信号在时域和频域都有很大的动态特性,其频谱带宽主要受限于采样率,可以达到16KHz以上。因此语音编码通常采用线性预测结合长时预测(基音)的编码方法,如码激励线性预测编码CELP(Code Excited Linear Prediction);而音乐编码器则通常采用时频变换结合心理声学的编码方法,如MPEG-2/4 AAC(Advanced AudioCoding)。但是当语音编码器的输入是一般的音乐或者音乐编码器的输入是语音时,编码音质将明显低于编码器与输入音频类型匹配时的情况。
随着无线通信,IPTV等信息技术的发展,能在低码率下同时高质量处理语音和音乐的编解码器成为一个重要的应用需求。一个可能的解决方案就是将两种编码方法结合起来,根据音频信号的类型动态切换成语音或音乐编码模式的语音/音乐双模编码器。例如在第三代移动通信3GPP(the 3rdGeneration PartnershipProject)中使用的自适应多速率长宽带编码器AMR-WB+(Adaptive Multi-RateWide Band Plus),它的核心就是语音编码器AMR-WB和音乐编码器TCX(Transform Coded Excitation)。
语音/音乐双模编码器的一个核心问题就是如何实现语音/音乐模式的无缝切换,即切换本身不引起附加的编解码失真,同时避免切换带来的码率增加。无论是音乐编码器还是语音编码器,他们的基本处理单元都是帧,即某一有限长度且时间上连续信号片断。单纯基于时频变换的音乐编码器帧间的平滑过渡采用重叠相加技术,而单纯的基于线性预测的语音编码器帧间的连续性依赖于线性预测滤波器的记忆性(零输入响应)。对于语音/音乐双模编解码器的模式切换,特别的,当音乐模式采用基于MDCT的编码器时,文献中存在如下几种切换方法(1)切换帧共20ms中的前5ms延续切换前的编码模式,后5ms采用切换后的编码模式,中间10ms在解码端通过线性预测合成滤波器外插得到,外插的基础是先前的解码输出(见欧洲专利EP932141)。该方法的问题是外插的10ms全部来自基于过去信息的预测,如果切换帧具有很大动态变化,预测将和实际信号有很大出入。因此这种切换方法本身就会带来附加的解码失真。
(2)首先对输入的时域音频信号进行线性预测滤波得到激励信号,切换方法工作在滤波输出的激励信号上。对于音乐到语音的切换,不对上一帧离散余弦变换DCT延伸到当前语音帧的部分做重叠相加处理,而对语音帧直接采用CELP编解码;对于语音到音乐切换,音乐帧的DCT变换采用的起始重叠长度为0的窗函数(见美国专利US6658383)。该方法中没有对两种模式的切换做过渡处理,因此本身无法实现无缝切换。最终解码输出的时域音频信号的连续性是通过对激励信号线性预测合成滤波器的平滑作用得到。另外,由于在音乐到语音的切换时采取直接舍弃重叠信号的方法,也意味着这种切换有额外的码率增加。
(3)首先对输入的时域音频信号进行线性预测滤波得到激励信号,切换方法工作在滤波输出的激励信号上。该方法采用一种特殊的窗型的MDCT变换处理语音到音乐模式的切换,避免了MDCT重叠相加部分在切换帧的混叠(见美国专利申请20060173605)。与(2)类似,最终输出时域音频信号的连续性是通过线性预测合成滤波器的平滑作用得到。
以上三种方法都没有有效解决两种模式无缝切换的问题。

发明内容
本发明需要解决的技术问题是在不降低编码效率的前提下,如何实现语音/音乐双模编解码中模式的无缝切换。该切换方法直接处理未经线性预测滤波的时域音频信号,并且语音模式采用CELP,音乐模式采用基于MDCT变换编码。
本发明的特征在于,在编码端一次包含以下步骤步骤(1),在数字集成电路中构成一个编码器,在该编码器至少有四个子模块语音/音乐分类子模块,区分语音帧和音乐帧;语音/音乐切换模块,对语音帧和音乐帧作无缝切换;修正余弦变换的音乐编码子模块AAC,对音乐编码;语音编码子模块CELP,对语音编码;步骤(2),该语音/音乐分类子模块把输入的音频信号划分为语音帧和音乐帧;步骤(3),把步骤(2)所得到的结果送入语音/音乐切换模块,判断是否为语音帧;步骤(4),在步骤(3)中,若判断为语音帧,则执行步骤(5),若判断为音乐帧,则执行步骤(6);步骤(5)判断步骤(4)得到的语音帧的上一帧是否为语音帧若其上一帧是音乐帧,则执行步骤5.1;若其上一帧是语音帧,则执行步骤(5.2);步骤(5.1),若步骤(5)判断的结果,所选语音帧的上一帧是音乐帧,则进行预编码首先从上一帧经过编码量化后的整数修正余弦变换MDCT频谱数据中恢复第L帧的前N/2个样点,L是当前帧的帧序号,N是一帧的采样点数,为偶数,各帧相同;再从这N/2个点中截取最后的P个样点,P为一个CELP编码帧的样点数,降采样后作为语音编码器CELP的输入;编码该帧前CELP的内部状态清0,该帧的编码数据不写入最终的编码码流;然后,CELP保持其内部状态进入步骤(5.2);步骤(5.2)判断(4)得到的语音帧的下一帧是否为语音帧若其下一帧是音乐帧,则执行步骤(5.3);若其下一帧是音乐帧,执行步骤(5.4);步骤(5.3),若步骤(5.2)判断的结果,所选语音帧的下一帧是音乐帧,则进行加窗折叠取当前语音帧的最后M/2个样点和与当前语音帧相邻的下M/2个时域样点,M为偶数,组成时间上连续的M个样点,即加窗折叠区,做如下的加窗折叠处理yL(N+i)=x(N+i)*h2(M/2-1-i)+x(N-1-i)*h2(M/2+i)i=-M/2,...,-1,N是-帧的采样点数,为偶数,xL(N+i),i=-M/2,...,-1是当前帧输入的最后M/2个时域信号,xL(N-1-i),i=-M/2,...,-1是紧邻当前帧之后的个时域信号,h2(M/2-1-i),i=-M/2,...,-1是窗函数h2的后M/2个样点,h2(M/2+i),i=-M/2,...,-1是窗函数h2的前M/2个样点,h2是满足MDCT完全重建条件的单调递增函数h2(i)2+h2(M-1-i)2=1, i=0,...,M-1,得到yL(N-M/2),...,yL(N-1)共M/2个样点,与当前帧的前N-M/2个样点xL(0),..,xL(N-M/2+1)组成新的N样点序列xL(0),...,xL(N-M/2+1),yL(N-M/2),...,yL(N-1),以这N个样点作为输入,进入步骤(5.4);步骤(5.4),将来自步骤(5.2)原N点时域信号或(5.3)经处理的N点时域信号进行k倍降采样处理,得到k*N个样点,k*N表示不超过k*N最大整数,k=fs/fa为CELP的采样率fs与输入音频的采样率fa的比值,以这k*N个样点为输入,进入步骤(5.5);步骤(5.5),对步骤(5.4)得到的k*N点序列进行CELP编码,得到CELP码流;
步骤(6)判断步骤(4)得到音乐帧,判断其上一帧是否为音乐帧,若上一帧是语音帧则执行步骤(6.1);若上一帧是音乐帧则执行步骤(6.2);步骤(6.1),对由作为上一帧的语音帧向音乐帧切换的第一个MDCT变换的作用区域第I帧和第(I+1)帧,I是当前帧的帧序号,做如下的加窗处理yI(i)=xI(i)*w2(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w2(i+N),i=0,1,....N-1]]>xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,...,N-1为第(I+1)帧的N点时域信号,w2为窗函数,由下式决定w2(i)=0,0≤i<(N-M)/2h2(i-(N-M)/2),(N-M)/2≤i<(N+M)/21,(N+M)/2≤i<Nh1(2N-1-i),N≤i<2N]]>其中h2d与步骤(5.3)中的h2一致,h1为满足MDCT完全重建条件的窗函数h2(j)2+h2(M-1-j)2=1,j=0,...,M-1,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.2),若上一帧是音乐帧,则判断当前帧的下一帧是否为音乐帧;若下一帧不是音乐帧,执行步骤(6.2.1);若下一帧是音乐帧,执行步骤(6.2.2);步骤(6.2.1),当前帧的下一帧是语音帧,对当前帧和下一帧进行如下的加窗处理yI(i)=xI(i)*w1(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w1(i+N),i=0,1,....,N-1]]>I是当前帧的帧序号,(I+1)是下一帧的帧序号,xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,...,N-1为第(I+1)帧的N点时域信号,
w1为窗函数,由下式决定w1(i)=h1(i),0≤i<N1,N≤i<3N/20,3N/2≤i<2N]]>其中h1与步骤(6.1)中的h1一致,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.2.2),当前帧的下一帧是语音帧,对当前帧和下一帧进行如下的加窗处理yI(i)=xI(i)*w0(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w0(i+N),i=0,1,....,N-1]]>I是当前帧的帧序号,(I+1)是下一帧的帧序号,xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,...,N-1为第(I+1)帧的N点时域信号,w0为窗函数,由下式决定w0(i)=h1(i),0≤i<Nh1(2N-1-i),N≤i<2N]]>其中h1与步骤(6.1)中的h1一致,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.3),对步骤(6.1)或者(6.2.1)或者(6.2.2)得到的点序列进行AAC编码,得到AAC码流。
在解码端依次含有以下步骤步骤(1),在数字集成电路中构成一个解码器,在该编码器至少有三个子模块语音/音乐切换模块,对语音帧和音乐帧作无缝切换;修正余弦变换的音乐解码子模块,对AAC码流编码;语音解码子模块,对CELP码流解码;
步骤(2),根据码流的类别选择不同的解码子模块当前的码流为AAC时,执行步骤(3);当前的码流为CELP时,执行步骤(4);步骤(3),把步骤(2)所得到的码流输入到AAC解码器,得到输出时域音频信号;步骤(4)判断当前帧的上一帧是否为CELP码流,如果上一帧是AAC码流,执行步骤(4.1);如果上一帧是CELP码流,执行步骤(4.2);步骤(4.1),当前帧是CELP码流,当前帧的上一帧是AAC码流,进行预编码处理,与权利要求1的步骤(5.1)一致,将预编码后CELP编码器的内部状态传送给CELP解码器,CELP解码器保持这个状态进入步骤(4.2);步骤(4.2),把步骤(2)得到的码流输入到CELP解码器,得到时域语音信号,执行步骤(4.3);步骤(4.3),将步骤(4.2)得到的时域语音信号进行1/k倍升采样处理,与编码的步骤(5.4)中的k一致;执行步骤(4.4)步骤(4.4)判断当前帧的下一帧是否为AAC码流,如果下一帧是AAC码流,执行步骤(4.5);如果下一帧不是AAC码流,执行步骤(4.6);步骤(4.5),如果当前帧的下一帧的是AAC码流,进行与编码的步骤(5.3)对应的操作,将步骤(4.3)得到的当前帧时域样点中的最后M/2个样点进行镜像和加窗x′(N-M/2+i)=y′(N-M/2+i)*h2(M-1-i),i=0,1,...,M/2-1y′(N+M/2-1-i)*h2(M-1-i),i=M/2,...,M-1]]>N是一帧的时域样点数,与编码的步骤(5.3)的N一致,M是重叠区的样点数,与编码的步骤(5.3)的M一致,y′(N-M/2+i),i=0,1,...,M/2-1表示步骤(4.3)得到语音信号的最后M/2个时域样点,y′(N+M/2-1-i),i=M/2,...,M-1表示步骤(4.3)得到的语音信号的最后M/2个样点的时域镜像,
h2与编码的步骤(5.3)中的h2一致,得到M个镜像加窗后的样点x′(N-M/2),...,x′(N+M/2-1),与下一帧AAC解码得到的有效时域信号的前M个时域样点x″(N-M/2),...,x″(N+M/2-1)逐点相加,得到完整的M点语音/音乐过渡信号y″(N-M/2),..,y″(N+M/2-1),与步骤(4.3)得到的语音信号的前N-M/2个样点y′(0),...,y′(N-M/2-1)构成时域上连续的N+M/2个样点y′(0),...,y′(N-M/2-1),x′(N-M/2),...,x′(N+M/2-1),得到输出时域音频信号。
本发明的特征还在于上述语音/音乐双模编解码方法使用窗函数h1(i)=sin(2πi/4N+π/4N),i=0,1,...,N-1,以及窗函数h2(i)=sin(2πi/4M+π/4M), i=0,1,...,M-1。
本发明可以在语音→音乐和音乐→语音两种切换模式下实现平滑的过渡。并且与专利EP93214,US-6658383,及专利申请US20060173675相比,没有切换引起的额外编码样点数的增加或重复编码,实现了高效的切换。


图1语音/音乐双模编码器框2切换帧的窗型和加窗折叠处理图3窗型示意4具体实施例编码流程5具体实施例解码流程图具体实施例本发明的技术解决方案是当从语音切换到音乐时,对切换前最后一个语音帧的尾部进行加窗和折叠处理,此时连续性由MDCT变换的重叠相加特性保证;当从音乐切换到语音时,对切换前的最后一个音乐帧采用新的MDCT窗型使其与相继的语音帧间无时域重叠,此时的连续性由CELP中线性预测合成滤波器的记忆性保证。另一方面,为了使语音编码和音乐编码的采样率相匹配,对语音帧进行特定的降采样处理。下面使结合附图1,2,3给予详细说明。
图1表示语音/音频双模编码器的总体结构,分为核心双模编码器10,立体声编码13,带宽扩展12,和比特成型11四个模块。输入的时域音频信号的立体声信息(如果输入为立体声)和高频信息分别由13和12进行编码;输入信号的低频单声道部分由10进行编码,最后由11将13,12,10输出的比特流打包,生成最后的编码码流。
带宽扩展模块12的输入是语音/音乐信号中1/4采样率到1/2采样率的高频成分。首先通过时频分析得到高频成分的频谱包络,并以参数表示。然后根据音质和比特率要求量化频谱包络参数并进行熵编码(如Huffman编码)。最后数据输出到比特流成型模块11。
立体声模块13提取输入语音/音乐信号中的立体声分量的参数信息,包括声道间强度差IID(Interchannel Intensity Difference)、声道间相位差IPD(Interchannel Phase Difference)、声道间相关度IC(Interchannel Coherence)。该模块进一步将IID,IPD,以及IC参数根据音质和比特率要求进行量化及熵编码,最后输出到比特流成型模块11。
比特流成型模块11的输入是10,12,和13的输出。根据定义好的码流格式,将这三部分数据以一定的格式封装起来,加上信号的采样率,编码帧长等必要的辅助信息,形成完整的编码码流。
图1的10由四个子模块组成语音/音乐鉴别101,语音/音乐切换102,MDCT变换编码103,和CELP编码104。首先101给出当前帧类型的判断,然后102根据当前帧和上一帧类型的是否不一致启动切换处理,103和104分别处理对应类型的音频信号帧。
语音/音乐鉴别模块101首先计算反映信号类型的统计量,如低频单声道分量平均能量、能量的变化率、以及谱线分布等。然后根据预先设定的统计量的权重对各个统计量加权,得出一个表征当前帧为语音的可能性的指数。当这个指数在高于某一域值时,将当前帧标识为语音帧;否则标识为音乐帧。
如果当前帧被标识为音乐,调用MDCT变换编码器103进行编码。首先对输入信号进行MDCT变换和心理声学分析,分别得到MDCT频谱和按心理声学划分的MDCT各个子带在给定比特率下的允许失真(量化误差)。然后在每个子带允许的失真和总的比特率这两个约束下,对MDCT频谱进行量化。为进一步降低码率,量化数据进行Huffman编码以去除冗余。音频编码数据输出到比特流成型模块11。
如果当前帧被标识为语音,调用CELP编码器104进行编码。首先对输入信号进行线性预测(LP)分析,得到线性预测滤波器的系数。然后对输入信号进行LP滤波,得到预测残差信号或激励信号。将当前的激励信号与之前帧的激励信号进行相关度分析,得到基音周期(Pitch Lag)和基音增益(Pitch Gain),并从当前的残差信号中减去一个基音周期前进行基音增益调整的残差信号,得到新的残差信号。这个过程也被称为长时预测(Long Term Prediction)。将这个新的残差信号作为目标,在给定的码本中寻找与之最匹配的码本,并求出相应的码本增益。CELP将上面过程中得到的线性预测滤波器系数、基音周期、基音增益、码本标号、及码本增益进行量化,输出到比特成型模块11。
经过信道14,比特流被传送到语音/音乐双模解码器。
解码是编码的逆过程。顺次的,比特流解析模块15从比特流中分离出核心码流、模式控制参数、高频码流、以及立体声码流。核心码流传送到核心解码器16,并在模式控制参数的控制下,通过切换器161选择IMDCT变换解码器162或者CELP解码器163进行解码。核心解码器输出的是单声道低频信号,经过高频重建模块17输出单声道全频带信号,再经过立体声重建模块18输出立体声语音/音乐信号。
核心编码器10和核心解码器16的切换完全对应。当连续处于语音模式时,核心编解码器都不需要加窗操作,CELP编解码器能自动实现帧间的平滑过渡;当连续处于音乐模式的时候,编解码器都采用图2(a)所示的窗型,结合MDCT/IMDCT的时域混叠特性,实现帧间的平滑过渡。
图2表示音乐向语音和语音向音乐两种互补切换对输入音频信号时序关系及相应的处理。21是音乐到语音切换的最后一个MDCT变换;22是语音片断范围;23是语音到音乐切换时CELP和MDCT的重叠区域;24是语音到音乐切换后第一个MDCT变换;25表示语音片断末尾经加窗和重叠得到样点;27表示预编码部分的样点;26(包含25)表示降采样处理后需要进行CELP编码的一个连续语音片断。
将输入音频信号表示为x(l*N+i),其中常数N为每帧的样点数,l=0,1,2,......为帧序号,i=0,1,...,N-1是帧内相对帧起始的样点序号。图2中的音乐模式结束于l=L帧的样点x(L*N+N/2-1);语音模式起始于相邻的下一个样点x(L*N+N/2)。语音模式持续到第l=L+K帧的样点x((L+K)*N+N/2+M/2-1),其中M为重叠区23的样点数,音乐模式起始于下一个样点x((L+K)*N+N/2-M/2)。这里我们要求N,M均为偶数。L帧是音乐→语音的切换帧;(L+K)是语音→音乐的切换帧。
(L-1)和L帧是切换前最后一个MDCT作用的区域。由于后续的CELP变换不提供消除MDCT变换混叠效应的信号,第(L-1)和L帧的MDCT变换采用如下的末端无重叠的图3(b)的过渡窗w1(i)=h1(i),0≤i<N1,N≤i<3N/20,3N/2≤i<2N---(1)]]>其中h1(i)为满足MDCT变换完全重建条件h1(i)2+h1(N-1-i)2=1,0≤i<N(2)的单调递增函数,一个典型的例子就是正弦窗h1(i)=sin(2πi/4N+π/4N)。于是输入MDCT变换的加窗音频信号yL(i)yL(i)=w1(i)*x((L-1)N+i), 0≤i<2N(3)再经过MDCT变换得到相应的N个MDCT谱线yL(k)
YL(k)=1NΣi=02NyL(i)*cos(π2N(2i+1+N)(2k+1)),0≤k<N---(4)]]>第(L+K)和(L+K+1)是语音向音乐切换的第一个MDCT变换作用的区域。为了利用MDCT变换本身的重叠相加去混叠特性,这里MDCT和CELP有长度为M的重叠,既图3(c)过渡窗w2(i)=0,0≤i<(N-M)/2h2(i-(N-M)/2)(N-M)/2≤i<(N+M)/21,(N+M)/2≤i<Nh1(2N-1-i)N≤i<2N---(5)]]>其中h2(i)为满足MDCT变换完全重建条件h2(i)2+h2(M-1-i)2=1,0≤i<M(6)的单调递增函数,一个典型的例子就是正弦窗h2(i)=sin(2πi/4M+π/4M)。与音乐到语音的切换不同的地方在于,对23的M个时域样点x(S),......,x(S+M-1),作如下的加窗和折叠处理,其中S=(L+K)*N+(N-M)/2为重叠区23的第一个样点的序号,得到yw(S+i)yw(S+i)=x(S+i)*h2(M-1-i)+x(S+M-i)*h2(i)0≤i<M/2(7)而23前的K*N-M/2个语音样点与23经加窗和折叠后的M/2个yw(S+i)顺次连接,构成一个K*N点语音片断。
由于语音和音乐有不同的带宽,他们的要求的采样率通常不一致。例如3GPP的enhAacPlus编码器中,核心AAC编码器的输入采样率为16KHz,而语音编码器AMRWB的核心采样率为12.8KHz。由于高采样率意味者更多的样点,进而更高的码率,考虑语音信号的窄带特性,需要对语音分进行降采样处理。降采样处理要同时考虑CELP帧的尺寸,保证一个语音片断降采样后的样点数是CELP帧的整数倍。例如取N=1024,经末端加窗和折叠的k帧语音共1024k个时域样点,其原始采样率为16KHz。而CELP帧的尺寸若为256个样点,那么3/4降采样后有768k个时域样点或3k个CELP帧。
下面说明第L帧和第(L+K)帧实现平滑切换的预编码技术和加窗折叠技术。
由于第L帧采用矩形窗,根据MDCT的数学性质,经过反变换IMDCT后可直接得到第L帧的前N/2个样点的时域信号。为了使这N/2个样点和相继的语音样点平滑过渡,采用预编码技术。所谓预编码技术就是首先从编码端量化后的整数MDCT频谱数据恢复出L帧的前N/2个样点,这N/2个样点与解码端输出的是严格一致的。从这N/2个样点的后面截取一个CELP帧长度的样点序列27也作为CELP编码器输入,但是这部分编码数据不写入码流,其目的在于建立线性预测滤波器和基音搜索器的状态。解码端,对IMDCT变换得到的预编码时域信号进行同样的CELP编码,这样当CELP的当前帧是26的第一个语音帧时,解码器可以获得和编码器一致的27的激励信号。这个激励信号结合码流中传送的基音周期和增益信息,再通过线性预测合成滤波器,音乐到语音实现了无缝切换。预编码技术避免了把26的第一帧作为CELP输入起始帧,由于其算法延时和内部初始状态的不稳定造成的第一帧音频信号严重失真问题。预编码使CELP在进行实际编码前建立稳定的内部状态,保证切换帧间的平滑过渡。
对于语音到音乐的切换,经CELP解码和与编码端降采样对应的上采样得到与25对应的M/2个样点y′w(S+i),0≤i<M/2,与(7)中的yw(S+i)一一对应,两者的差异就是编解码误差。将这M/2个样点进行镜像并加窗,得到x′w(S+i)=y′w(S+i)*h2(M-1-i),0≤i<M/2y′w(S+M-1-i)*h2(M-1-i),M/2≤i<M]]>≈h2(M-1-i)*(h2(M-1-i)*x(S+i)+h2(i)*x(S+M-1-i)),0≤i<M---(8)]]>根据MDCT的数学性质,对应23的IMDCT输出并加窗信号xv′(S+i)≈h2(i)*(h2(i)*x(S+i)-h2(M-1-i)*x(S+M-1-i)),0≤i<M(9)将(8),(9)相加,得到去回混叠的23解码输出x′(S+i)=x′w(S+i)+x′v(S+i)≈(h2(i)2+h2(M-1-i)2)*x(S+i).(10)=x(S+i),0≤i<M如果没有CELP和MDCT的编解码失真,x′(S+i)=x(S+i),即切换帧完全重建。同时由于M点过渡区加窗和重叠相加的存在,两个分段连续的区域,语音解码帧和音乐解码帧被粘合成一个连续的区域。
下面以3GPP AMR-WB和MPEG-2 AAC为例说明语音/音乐双模编解码无缝切换方法的实现,但是该方法不限于AMR-WB和AAC混合的情况。这里,AMR-WB的内部采样率是12KHz,而不是标准的12.8KHz,并且进行了延时补偿;AAC的采样率是16KHz,并且内部只采用长正弦窗。
输入的音频信号为16KHz采样的语音/音乐混合信号。信号被划分为连续的帧,每帧1024样点,或64ms。401判断当前帧是否为语音,如果是,则对当前帧应用AMR-WB编码412,否则对当前帧采用AAC编码413。在进行412或413的编码前,需要进行模式切换处理,既402~411。由于实际的语音或音乐片断的长度都远大于100ms,因此我们假定没有“语音-音乐-语音-音乐”这种两个模式间隔出现的频繁的切换情况。考虑到语音的带宽和样点数的约束,对语音帧进行16KHz→12KHz的降采样处理,对音乐帧保持16KHz采样率。AMR-WB每帧长度为256个样点,AAC每帧长度为1024个样点。因此一个语音帧处理后有768个样点,既3个AMR-WB帧;一个音乐帧对应一个AAC帧。
如果当前帧被401标识为语音,402给出的上一帧是否也为语音帧。如果是,这意味着当前帧没有音乐→语音切换发生,并且如果405给出当前帧不是语音尾帧,既连续的语音帧序列中的最后一帧,直接进行16KHz→12KHz的降采样407处理;如果405给出当前帧是语音尾帧时,这说明当前帧是语音→音乐的切换帧,对当前帧的最后128个样点加余弦窗并进行偶折叠406,然后进行降采样407处理。如果402给出上一帧是音乐时,这说明当前帧是语音→音乐的切换帧,怎进行预编码404处理。所谓预编码404就是将上一个AAC帧进行解码,并进行16KHz→12KHz的降采样处理,得到当前帧前的256个样点,既一个AMR-WB帧。然后对这个AMR-WB帧进行编码,使AMR-WB内部状态达到稳定。
如果当前帧被401标识为音乐帧,403给出上一帧是否为音乐。如果是,这说明当前帧不是语音→音乐的切换帧,进一步,如果408给出当前帧是音频尾帧,既连续的音乐帧序列中的最后一帧,则当前帧是音乐→语音的切换帧,对当前帧加图3(b)的窗型410,否则,加图3(a)中的窗型411。如果403给出上一帧不是音乐帧,那么当前帧是语音→音乐切换帧,对当前帧应用图3(c)的窗型409。
解码是编码的逆过程,根据当前帧的类型,轮流由AMR-WB解码器505和AAC解码器504输出语音/音乐混合信号。解码端切换处理模块502,503,506,507,508保真切换的平滑过渡。
如果501给出当前帧是语音帧,则502进一步给出上一帧的是否为语音帧。如果上一帧也是语音,则直接进行AMR-WB解码505;否则当前帧是音乐→语音的切换帧,需要进行预编码503处理。所谓预编码503和编码端404完全一致,既对上一个AAC帧的解码信号进行16KHz→12KHz的降采样,然后对当前帧之前的一个AMR-WB帧(256个样点)进行编码,编码器的内部状态被AMR-WB解码器继承,使它在解当前帧(连续的语音帧序列中的第一帧)时具有稳定的内部状态。AMR-WB解码器505的输出直接进行12KHz→16KHz的升采样处理506。如果507给出当前帧是语音尾帧,那么对当前的语音帧进行镜像加窗处理508。所谓镜像加窗508就是将当前解码输出的1024个样点的最后64个样点变换成128个样点,这128样点的前64个就是原来的64个样点,而后64个和前64个是镜像对称的关系,然后在对这128个样点家余弦窗。508是编码端加窗折叠406的逆过程。这128个点与下一帧AAC的解码重叠相加得到最后的时域输出。
如果当前帧是AAC的帧,则直接进行AAC解码,得到时域音频信号。
权利要求
1.-种语音/音乐双模编码无缝切换方法,其特征在于依次含有以下步骤步骤(1),在数字集成电路中构成一个编码器,在该编码器至少有四个子模块语音/音乐分类子模块,区分语音帧和音乐帧;语音/音乐切换模块,对语音帧和音乐帧作无缝切换;修正余弦变换的音乐编码子模块AAC,对音乐编码;语音编码子模块CELP,对语音编码;步骤(2),该语音/音乐分类子模块把输入的音频信号划分为语音帧和音乐帧;步骤(3),把步骤(2)所得到的结果送入语音/音乐切换模块,判断是否为语音帧;步骤(4),在步骤(3)中,若判断为语音帧,则执行步骤(5),若判断为音乐帧,则执行步骤(6);步骤(5)判断步骤(4)得到的语音帧的上一帧是否为语音帧若其上一帧是音乐帧,则执行步骤5.1;若其上一帧是语音帧,则执行步骤(5.2);步骤(5.1),若步骤(5)判断的结果,所选语音帧的上一帧是音乐帧,则进行预编码首先从上一帧经过编码量化后的整数修正余弦变换MDCT频谱数据中恢复第L帧的前N/2个样点,L是当前帧的帧序号,N是一帧的采样点数,为偶数,各帧相同;再从这N/2个点中截取最后的P个样点,P为一个CELP编码帧的样点数,降采样后作为语音编码器CELP的输入;编码该帧前CELP的内部状态清0,该帧的编码数据不写入最终的编码码流;然后,CELP保持其内部状态进入步骤(5.2);步骤(5.2)判断(4)得到的语音帧的下一帧是否为语音帧若其下一帧是音乐帧,则执行步骤(5.3);若其下一帧是音乐帧,执行步骤(5.4);步骤(5.3),若步骤(5.2)判断的结果,所选语音帧的下一帧是音乐帧,则进行加窗折叠取当前语音帧的最后M/2个样点和与当前语音帧相邻的下M/2个时域样点,M为偶数,组成时间上连续的M个样点,即加窗折叠区,做如下的加窗折叠处理yL(N+i)=x(N+i)*h2(M/2-1-i)+x(N-1-i)*h2(M/2+i) i=-M/2,...,-1,N是一帧的采样点数,为偶数,xL(N+i),i=-M/2,...,-1是当前帧输入的最后M/2个时域信号,xL(N-1-i),i=-M/2,...,-1是紧邻当前帧之后的个时域信号,h2(M/2-1-i),i=-M/2,...,-1是窗函数h2的后M/2个样点,h2(M/2+i),i=-M/2,...,-1是窗函数h2的前M/2个样点,h2是满足MDCT完全重建条件的单调递增函数h2(i)2+h2(M-1-i)2=1,i=0,...,M-1,得到yL(N-M/2),...,yL(N-1)共M/2个样点,与当前帧的前N-M/2个样点xL(0),...,xL(N-M/2+1)组成新的N样点序列xL(0),...,xL(N-M/2+1),yL(N-M/2),...,yL(N-1),以这N个样点作为输入,进入步骤(5.4);步骤(5.4),将来自步骤(5.2)原N点时域信号或(5.3)经处理的N点时域信号进行k倍降采样处理,得到k*N个样点,k*N表示不超过k*N最大整数,k=fs/fa为CELP的采样率fs与输入音频的采样率fa的比值,以这k*N个样点为输入,进入步骤(5.5);步骤(5.5),对步骤(5.4)得到的k*N点序列进行CELP编码,得到CELP码流;步骤(6)判断步骤(4)得到音乐帧,判断其上一帧是否为音乐帧,若上一帧是语音帧则执行步骤(6.1);若上一帧是音乐帧则执行步骤(6.2);步骤(6.1),对由作为上一帧的语音帧向音乐帧切换的第一个MDCT变换的作用区域第I帧和第(I+1)帧,I是当前帧的帧序号,做如下的加窗处理yI(i)=xI(i)*w2(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w2(i+N),i=0,1,....,N-1]]>xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,...,N-1为第(I+1)帧的N点时域信号,w2为窗函数,由下式决定w2(i)=0,0≤i<(N-M)/2h2(i-(N-M)/2)(N-M)/2≤i<(N+M)/21,(N+M)/2≤i<Nh1(2N-1-i)N≤i<2N]]>其中h2与步骤(5.3)中的h2一致,h1为满足MDCT完全重建条件的窗函数h2(j)2+h2(M-1-j)2=1,j=0,...,M-1,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.2),若上一帧是音乐帧,则判断当前帧的下一帧是否为音乐帧;若下一帧不是音乐帧,执行步骤(6.2.1);若下一帧是音乐帧,执行步骤(6.2.2);步骤(6.2.1),当前帧的下一帧是语音帧,对当前帧和下一帧进行如下的加窗处理yI(i)=xI(i)*w1(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w1(i+N),i=0,1,....,N-1]]>I是当前帧的帧序号,(I+1)是下一帧的帧序号,xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,..,N-1为第(I+1)帧的N点时域信号,w1为窗函数,由下式决定w1(i)=h1(i),0≤i<N1,N≤i<3N/20,3N/2≤i<2N]]>其中h1与步骤(6.1)中的h1一致,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.2.2),当前帧的下一帧是语音帧,对当前帧和下一帧进行如下的加窗处理yI(i)=xI(i)*w0(i),i=0,1,....,N-1y(I+1)(i)=x(I+1)(i)*w0(i+N),i=0,1,....,N-1]]>I是当前帧的帧序号,(I+1)是下一帧的帧序号,xI(i),i=0,1,...,N-1为第I帧的N点时域信号,x(I+1)(i),i=0,1,...,N-1为第(I+1)帧的N点时域信号,w0为窗函数,由下式决定w0(i)=h1(i),0≤i<Nh1(2N-1-i),N≤i<2N]]>其中h1与步骤(6.1)中的h1一致,得到的时域上连续的2N点加窗信号yI(0),...,yI(N-1),y(I+1)(0),...,y(I+1)(N-1),作为输入,进入步骤(6.3);步骤(6.3),对步骤(6.1)或者(6.2.1)或者(6.2.2)得到的点序列进行AAC编码,得到AAC码流。
2.一种语音/音乐双模解码器,能够解码权利要求1所述的语音/音乐双模编码器生成的CELP/AAC混合码流,其特征在于依次含有以下步骤步骤(1),在数字集成电路中构成一个解码器,在该编码器至少有三个子模块语音/音乐切换模块,对语音帧和音乐帧作无缝切换;修正余弦变换的音乐解码子模块,对AAC码流编码;语音解码子模块,对CELP码流解码;步骤(2),根据码流的类别选择不同的解码子模块当前的码流为AAC时,执行步骤(3);当前的码流为CELP时,执行步骤(4);步骤(3),把步骤(2)所得到的码流输入到AAC解码器,得到输出时域音频信号;步骤(4)判断当前帧的上一帧是否为CELP码流,如果上一帧是AAC码流,执行步骤(4.1);如果上一帧是CELP码流,执行步骤(4.2);步骤(4.1),当前帧是CELP码流,当前帧的上一帧是AAC码流,进行预编码处理,与权利要求1的步骤(5.1)一致,将预编码后CELP编码器的内部状态传送给CELP解码器,CELP解码器保持这个状态进入步骤(4.2);步骤(4.2),把步骤(2)得到的码流输入到CELP解码器,得到时域语音信号,执行步骤(4.3);步骤(4.3),将步骤(4.2)得到的时域语音信号进行1/k倍升采样处理,与权利要求1的步骤(5.4)中的k一致;执行步骤(4.4)步骤(4.4)判断当前帧的下一帧是否为AAC码流,如果下一帧是AAC码流,执行步骤(4.5);如果下一帧不是AAC码流,执行步骤(4.6);步骤(4.5),如果当前帧的下一帧的是AAC码流,进行与权利要求1的步骤(5.3)对应的操作,将步骤(4.3)得到的当前帧时域样点中的最后M/2个样点进行镜像和加窗x′(N-M/2+i)=y′(N-M/2+i)*h2(M-1-i),i=0,1,...,M/2-1y′(N+M/2-1-i)*h2(M-1-i),i=M/2,...,M-1]]>N是一帧的时域样点数,与权利要求1的步骤(5.3)的N一致,M是重叠区的样点数,与权利要求1的步骤(5.3)的M一致,y′(N-M/2+i),i=0,1,...,M/2-1表示步骤(4.3)得到语音信号的最后M/2个时域样点,y′(N+M/2-1-i),i=M/2,...,M-1表示步骤(4.3)得到的语音信号的最后M/2个样点的时域镜像,h2与权利要求1的步骤(5.3)中的h2一致,得到M个镜像加窗后的样点x′(N-M/2),...,x′(N+M/2-1),与下一帧AAC解码得到的有效时域信号的前M个时域样点x″(N-M/2),...,x″(N+M/2-1)逐点相加,得到完整的M点语音/音乐过渡信号y″(N-M/2),...,y″(N+M/2-1),与步骤(4.3)得到的语音信号的前N-M/2个样点y′(0),...,y′(N-M/2-1)构成时域上连续的N+M/2个样点y′(0),...,y′(N-M/2-1),x′(N-M/2),...,x′(N+M/2-1),得到输出时域音频信号。
3.根据权利要求1和2所述的一种语音/音乐双模编解码方法其特征在于所述的h1(i)=sin(2πi/4N+π/4N),i=0,1,...,N-1。
4.根据权利要求1和2所述的一种语音/音乐双模编解码方法其特征在于所述的h2(i)=sin(2πi/4M+π/4M),i=0,1,...,M-1。
全文摘要
一种语音/音乐双模编解码无缝切换方法。当双模编解码器从基于CELP的语音模式切换到基于MDCT的音乐模式时,对切换前的最后一个CELP帧时域音频信号的尾部采用加窗和折叠处理,切换的连续性由MDCT变换的重叠相加性质保证;当双模编解码器从基于MDCT的音乐模式切换到基于CELP的语音模式时,切换前最后一个MDCT帧采用一种新的窗型使其与切换后第一个CELP帧无时域重叠,切换的连续性由预编码技术保证。该方法对采用CELP模式的音频时域信号进行特定的降采样处理,以适应两种编解码模式对输入音频信号采样率的不同要求以及音频信号动态的时频域特性。
文档编号G10L19/12GK101025918SQ20071006286
公开日2007年8月29日 申请日期2007年1月19日 优先权日2007年1月19日
发明者张树华, 窦维蓓, 杨华中, 张斌 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1