基于子带结构带宽可伸缩语音编码器的研究 第10页
搜集关于问题特征和其自身行为的信息,并使用这些信息来修改问题的表现形式。蚂蚁既能共同的行动,又能独立地工作,显示出了一种相互协作的行为,通过信息素指引着它们之间的通讯。人工蚁使用一种结构上的贪婪启发搜索可行解。根据问题的约束条件列出了一个解,作为经过问题状态的最小代价。每只蚂蚁都能够找出一个解,但很可能是较差解。蚁群中的个体同时建立了很多不同的解决方案,找出高质量的解是群体中所有个体之间全局相互协作的结果。
根据滤波器系数优化的要求结合蚁群算法的基本原理,下面提出一种滤波器系数优化的算法。
首先设定几个参数,滤波器的m个系数的初始值a[m]由通过2.2的直接设计法[18]得到,做为m个蚂蚁的初始坐标;将蚂蚁i初始坐标a[i]的10%作为它的移动距离D,D是动态变化的,每次移动后减半,蚂蚁i移动后坐标变为a[i]+D;当前最优重建误差的初始值E由滤波器系数初始值根据式(
一次蚂蚁的移动指一只蚂蚁移动一次,一次蚁群的移动指m个蚂蚁移动一次。每次移动后,计算重建误差e并与当前最优重建误差E比较,如果e<E,则将E赋值为e,下次移动的方向与本次相同,如果e>E,则将D赋值为-D,下次移动方向为本次移动的反方向。
算法具体步骤如下:
1初始化滤波器系数与蚂蚁的移动距离D,计算重建误差e,并将e赋值给E。
2蚂蚁的坐标表示滤波器系数的值,蚁群的移动次数N初始值为100。
3蚁群的移动。如果是第一次蚁群移动,随机选取蚂蚁的移动方向;如果不是第一次蚁群移动,则根据上次移动的偏差k与当前最优偏差K比较,朝最优偏差方向移动。每次蚁群移动后,N=N-1,D=D/2。
4移动后通过比较重建误差e与当前最小重建误差E,及时更新当前最小重建误差与对应的位置偏差,指明下次蚁群移动方向。
5如果N>1,则转步骤2;如果N=1,是蚁群的最后一次移动,每次蚂蚁移动进行步骤4,决定是否更新对应的滤波器系数。
6全部移动完成,得到最后的滤波器系数,整个优化过程结束。
算法流程图如下: 若图片无法显示请联系QQ752018766
整个算法中,系数经过不断的调整以后,通过缩小移动距离来逼近最优解,根据前次相对位置偏差与当前最优位置偏差的比较来指引蚂蚁移动的方向,不断调整各个参数,得到最终结果。在整个蚁群中,每个蚂蚁的移动范围都在初值的10%以内,这是因为系数的微小变化都会引起重建误差的改变,并且初始值是经过初步优化得到的结果,所以把移动范围限定在一个很小的范围内。
本文以32阶滤波器为例, 进行仿真来检测算法的可靠性和有效性.
用汉明窗来设计一般的低通和高通滤波器组成滤波器组,截止频率都为0.5,设计结果如图4.1,图4.2:
图 4.6 ACA优化后QMF组重建误差
从实验结果可以看出,直接设计法得到的QMF组重建误差控制在4%以内(约3.89%),通过ACA优化以后,将重建误差控制在2%以内(约1.88%)。
本章主要介绍了2通道QMF组的设计和优化,主要包括:QMF组的原理、误差组成及消除办法、QMF组的直接设计法和基于ACA的QMF组优化算法。子带滤波是子带编码的关键,滤波器设计的好坏直接关系到子带编码的质量,本章最后通过实验表明优化后的QMF组重建误差控制在2%以内,得到了预期的效果。
在下一章中,将主要针对子带编码的系统结构进行介绍。
目前,MPEG-4提出的全带结构的带宽可伸缩编码标准已经十分成熟,但是由于采取了全带结构,复杂度明显高于子带结构带宽可伸缩编码器,如要要进一步提高传输码率,实现起来困难很大。对于子带结构带宽可伸缩编码,1988年ITU-T提出的G.722标准已经不能满足目前环境的需要,为了适应未来语音通信的需要,根据前文提到的相关技术、理论为基础,提出一种新型的子带结构带宽可伸缩编码语音编码器,用较低码率达到较好的语音质量,以满足未来的需要。
本文提出一种新的子带结构带宽可伸缩语音编码器。本文主要讨论两子带的情况,首先将宽带语音分裂成两个子带。核心层编码器输出核心层码流,满足语音通信的基本需求,增强层编码器输出增强层码流。核心层码流可单独作为窄带语音信号输出,也可以与增强层码流通过QMF组的综合滤波器处理得到宽带语音信号。为了适应当前低码率高音质的要求,核心层采用成熟的码激励线性预测算法以满足普通通话质量的要求,增强层采用低码率的参数编码来降低整个系统的码率。接下来将详细介绍编码器的整体结构。
在宽带语音编解码中,信号以16kHz的频率采样,带宽限制在50-7000Hz,这样的语音质量接近于面对面交流感觉的通讯质量。同窄带电话语音相比,增加的从50-200Hz的低端频率提高了自然度、表现力、舒适度。扩展的3400-7000Hz的高频部分可以更好地区分摩擦音所以更易于理解。50-7000Hz的带宽不仅提高了可理解性和语音自然度,而且使说话人识别变的简单。
图 5.1 编码器系统结构图
本文主要讨论两子带的编码器,宽带语音信号用16KHz频率采样,然后用QMF组的分析滤波器组将信号分裂成等宽的两子带(0-4KHz,4-8KHz),再用8KHz采样频率对两个子带采样。核心层信号采用高性能的窄带语音编码器G.729E,码率为11.8Kbit/s。增强层信号采用改进型LPC声码器,输出码率为2.4Kbit/s。核心层码流可以单独进行解码,解码后作为窄带语音输出,也可以通过QMF组的综合滤波器将核心层、增强层码流进行处理,然后作为宽带语音输出。这样整个编码系统有两种输出码率:11.8Kbit/s和14.2Kbit/s。
整个编码器的结构如图5.1,编码端的高、低通滤波器组成QMF组中分析滤波器组,解码端的高、低通滤波器组成QMF组的综合滤波器组。在上一章中已经详细介绍了滤波器的设计和优化,这一章主要讨论编码器的结构。
核心层采用G.729E的编码方案。G.729[22]是ITU-T在1996年3月公布的用对结构代数码激励线性预测(CS-ACELP)语音编码方案,码率为8Kbit/s。这个方案的特点是分析窗采用混合窗;LSP参数采用二级矢量量化;以子帧为单位的码本搜索分为自适应码本搜索和代数码本搜索;基音分析采用开环基音分析和自适应码本搜索相结合,而降低了运算量,减少了基音的量化比特数,并提高了基音预测的准确度;代数码本算法简单,不需要存储码本,恢复音质清晰。在8Kbit/s码率合成音质不低于32Kbit/sADPCM的水平,算法延时为15ms。图5.2描述了编码器的工作原理:
图
G.729是对电话带宽的语音信号编码的标准,对输入的模拟语音信号用8KHz采样,16bit线性PCM量化。CS-ACELP是基于码激励线性预测(CELP)的编码模式。G.729选择帧长为10ms,每帧80个样点,每一帧分成等长的两个子帧。算法采用分析合成法,编码器对输入的语音信号先进行预处理,然后进行10阶LPC分析,将得到的LPC参数转换为LSP参数进行量化;再对编码端得到的激励信号通过综合滤波器后得到合成语音,将合成语音与原始语音相减,得到残差信号;对残差信号进行感觉加权,然后进行基音分析、码本搜索,并分别求得自适应码本增益和固定码本增益;最后对各个参数进行编码,编码端需要传输的参数有:LSP参数、自适应码本标志及其增益、固定码本标志、固定码本符号及其增益。解码器先对比特流分别进行解码,把解码得到的自适应码本和固定码本矢量分别乘以各自的增益然后相加,得到激励信号,然后经过综合滤波器得到合成语音信号,最后再经过处理。
G.729E是G.729的高速率扩展版本。它在LP分析、后滤波、感觉加权、码本结构等方面进行了改进,改进后码率为11.8Kbit/s。另外,G.729E特别增加了对音乐信号的处理,增加了一个30阶的后向LP分析对音乐信号进行处理,相应的G.729E设计了前向/后向自适应码本和固定码本,并根据输入信号的平稳度来选择LP分析滤波器,两个LP分析以帧为基础,前向LP针对输入信号,后向LP针对合成信号,在进行LP分析切换时,需要对切换进行平滑以使人耳感觉不到明显的切换影响,在比特分配时,G.729E通过一个信息位来表明前向还是后向,同时对该信息位用一位奇偶校验位保护。由于G.729E的码本容量大,码字中的脉冲数多。
G.729编码原理框图如图5.2。在预处理[3]模块中,输入16bit线性PCM语音信号,为避免处理过程中产生溢出和不必要的低频部分,将输入样点都除以2,再通过一个高通滤波器,两者结合起来可以通过滤波器H(z)实现:
经过H(z)滤波后信号为S(n),将在后续操作中用到。
短时分析与合成滤波器是基于10阶线性预测(LP)滤波器的。
线性预测滤波器定义为:
其中
线性预测分析窗口包括两个部分:第一部分为半个汉明窗,第二部分为一个余弦的1/4。窗函数的计算公式为:
(5-3)
线性预测中有5ms的前瞻,就是要从下一帧中取40个样点,因此在编码端引入5ms的附加延迟。线性预测分析窗口从以前帧中取120个样点,当前帧有80个样点,从后一帧中取40个样点。
加窗后语音信号表示为:
用它来计算自相关系数:
为了避免输入值太小而引起的运算问题,r(0)下限设为1.0。通过将自相关系数乘以
其中
;
用修正自相关函数求解线性预测滤波器系数
其中r(k)为自相关函数。将系数转化为线谱对LSP,LSP的系数
使用两级矢量量化(VQ)将其量化为18bit。通过合成分析搜索过程选出激励信号。在这个过程中,按照感知加权后的失真测度使原始语音与重建语音的误差最小化,这是通过将误差信号经过感知加权滤波器滤波后得到的。
感知加权[3-6]滤波器的系数由未量化的线性预测滤波器得出。可由下式得出:
由变量r1和r2来确定滤波器W(z)的频率相应,所以适当调整这两个变量的值,可以使感觉加权获得更为有效的效果,这可以通过将r1和r2作为输入信号的谱形状的函数来实现。这个调整每帧进行一次,第一子帧通过一个插值过程来平滑,频谱的形状是由一个二阶的线性预测滤波器,作为Levinson_Durbin迭代算法的副产品得到。反射系数
LAR系数对于当前10ms帧,用于第二子帧。第一子帧通过线性内插得到。这个二阶预测器的谱包络特征被判断为两种:平坦(flat=1)和倾斜(flat=0)。对于每一个子帧,通过对对数域比值系数用一个阀值函数(LAR门限函数)来判断其谱包络特征是平或斜。
如果子帧的内插频谱分类为平坦(flat=1),那么加权因子r1=0.94,r2=0.6;如果分类为倾斜(flat=0),则r1=0.98,而r2的值自适应于LP合成滤波器的谐振强度,其范围在0.4-0.7之间,如果出现强的谐振,则r2的值接近上界,根据当前子帧连续2个LSP系数之间的最小距离准则达到自适应。
子帧中加权语音信号由下式给出:
,n=0,…,39 (5-12)
为了减少自适应码本搜索的复杂程度,其搜索范围局限于一个候选的基音周期
在以下三个范围内查找:
i=1;80,…,143
i=2;40,…,79
i=3;20,…,39
将得到的三个最大的自相关函数
在选择较小范围的归一化相关函数的条件下,先用三个归一化函数中的最大值,即较低范围内的短时延被选中,对应自相关较长的时延。
加权合成滤波器
通常,自适应码本搜索所使用的目标信号[3]x(n)是从方程加权语音信号
G.729协议中使用另一个等同的做法来计算目标信号,这就是将线性预测残差信号r(n)通过合成滤波器
线性预测残差信号r(n)不但在此处用于寻找目标矢量,而且在自适应码本搜索中要存入激励缓存。线性预测残差信号由下式给出:
自适应码本参数[3-6](或称基音参数)是基音周期和基音增益。在自适应码本实现基音滤波器的逼近过程中,激励信号要在一个子帧的长度内不断重复,在搜索阶段,用线性预测残差信号来代替激励信号,以简化闭环基音搜索过程,自适应码本搜索每子帧进行一次。
一旦确定了自适应码本的基音延迟,自适应码本的增益
其中x(n)是目标矢量,y(n)是自适应码本矢量v(n)通过加权合成滤波器W(z)/A(z)的零状态响应,由下式计算:若图片无法显示请联系QQ752018766
固定码本[3-6]是使用一种称为”交叉单脉冲排列”的代数码本结构。在这个码本中,每个码本矢量包含四个非零脉冲,每个脉冲的幅度是+1或-1。码本矢量c(n)按以下方式构建:先取一个40文的0矢量,将四个单脉冲放置在找到的位置,然后分别将它们乘以相应的符号。自适应码本和固定码本的增益用7bit组合矢量量化,用原始语音和重构语音之间的误差加权均方最小来搜索在增益码本。
固定码本增益可以表示为: (5-18)
其中
固定码本贡献的平均能量由下式给出:
(5-19)
自适应码本增益
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>