首页 DSP 语音信号的线性预测编码(lpc)

DSP 语音信号的线性预测编码(lpc)

举报
开通vip

DSP 语音信号的线性预测编码(lpc) 低速率语音编码算法研究及其实时实现 21 第三章 语音信号的线性预测编码(LPC) 用波形编码方法可以使语音传输比特率降至 16kb/s至 6416kb/s。而采用对语 音参数编码的分析综合方法可使传输比特率进一步降低至 600b/s 至 2.4kb/s。这 种参数编码方法是根据语音产生模型直接提取声道参数,并对参数进行编码。 根据语音信号的产生模型语音信号 ( )S Z 是一个线性非移交因果稳定系统 ( )V Z 受到信号 ( )E Z 激励后所产生的输出。在时域中,语音信号 ( ...

DSP 语音信号的线性预测编码(lpc)
低速率语音编码算法研究及其实时实现 21 第三章 语音信号的线性预测编码(LPC) 用波形编码方法可以使语音传输比特率降至 16kb/s至 6416kb/s。而采用对语 音参数编码的分析综合方法可使传输比特率进一步降低至 600b/s 至 2.4kb/s。这 种参数编码方法是根据语音产生模型直接提取声道参数,并对参数进行编码。 根据语音信号的产生模型语音信号 ( )S Z 是一个线性非移交因果稳定系统 ( )V Z 受到信号 ( )E Z 激励后所产生的输出。在时域中,语音信号 ( )s n 是该系统的 单位冲击响应 ( )v n 和激励信号 ( )e n 的卷积。在语音信号数字处理所涉及的各个领 域中,根据 ( )s n 来求得 ( )v n 和 ( )e n 具有非常重要的意义。例如,为了求得语音信 号的共振峰就需要知道 ( )V Z 。又如,为了判断语音信号是清音还是浊音以及求 得浊音情况下的基音频率,就应该知道 ( )e n 或 ( )E Z 。在实现各种语音编码、识 别、合成以及说话人验证和识别等算法时无不需要由 ( )v n 和 ( )e n 的卷积 ( )s n 来求 得 ( )v n 和 ( )e n 。 由卷积信号求得参与卷积的各个信号是数字信号处理各个领域中普遍遇到 的一项共同的任务,解决此任务的算法称为解卷算法。解卷算法可以分成两大类。 第一类算法中首先为线性系统 ( )V Z 建立一个模型,然后对模型的参数按照某种 最佳准则进行估计所以这种算法称为“参数解卷”。如果所取的模型中只包含有 限值极点而没有有限值零点因而系统的 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数可以表示为 ( ) 1/ ( )V Z A Z= ,其中, 1 ( ) P i i i A Z a Z − = = ∑ ,这时解卷算法可以归结为对各模型参数 ia 进行估计。这种模型 即称为“全极点模型”或称为“AR模型”(AR是 AUTOREGRESSIVE的缩写)。 如果采用最小均方误差(简记为 LMS误差,LMS是 Least Mean Square的缩写) 第三章 语音信号的线性预测编码(LPC) 22 准则对 AR模型参数进行估计,就得到了著名的线性预测编码(LPC)算法(LPC 是 Linear Predictive Coding的缩写)。如果所取的模型中既包含有限极点又包含 有限值零点,则称为“零极点模型”’或称之为“ARMA 模型”(ARMA 是 AUTOREGRESSIVE MOVING AVERAGE的缩写)、对于这种模型迄今尚未找到 一种高效的参数估计算法。第二类算法则无需为线性系统建立一个模型。这一章 将依次介绍 LPC算法的基本原理、参数估计和仿真的结果。 3.1 线性预测编码的基本原理 线性预测编码的基本原理是建立在语音产生的数字模型基础上的。语音一般 可分成浊音和清音。语音信号 ( )s n 可以看作一个时变的声道系统在声门的激励之 下的输出信号。对浊音而言,声门激励为一周期脉冲串,而对清音而言,声门激 励为随机噪声序列。由此得出语音信号的简化模型,如图 3-1所示 图 3-1 语音产生模型的简化方框图 在此,声道系统是一个时变系统,但相对于声门激励而言,它是一个随时间 t而缓慢变化的系统,一般可认为在 10~20ms内声道系统近似不变。由声学理论 可知,除鼻音和摩擦音时声道系统 ( )H z 需用零极点模型来模拟外,其他语音均 可用下述全极点系统来模拟: 低速率语音编码算法研究及其实时实现 23 1 ( )( ) ( ) 1 p l l l S z GH z U z a z− = = = −∑ (3.1) 上式表示的简化模型的参数有:浊音清音判别,基音周期,增益G以及数字 滤波器系数{ }la 。这些参数都随时间而变化, p为此模型的阶数。当阶数 p足够 大时,这个全极点模型几乎可以模拟所有语音信号的声道系统。即使对于鼻音和 摩擦音,由于一个零点可以用足够多的极点来逼近,因此只要预测器的阶数 p足 够多就可以表示几乎所有语音。利用这个模型,可以对增益G和滤波器系数{ }la 进行计算。下面,我们着重讨论对系数{ }la 的估算。 对于图 3-1所示的系统,语音信号 ( )s n 和激励信号 ( )u n 之间的关系可以利用 由(3.1)式推得的差分方程来表示 1 ( ) ( ) ( ) p l l s n a s n l Gu n = = − +∑ (3.2) 线性预测的基本原理是:语音信号的现在估计值 ( )s n$ 需要用先前的 p个采样 值 ( 1), ( 2), , ( )s n s n s n p− − −L 的线性组合的加权来逼近,即 1 ( ) ( ) p l l s n s n lα = = −∑$ (3.3) p 阶线性预测器的系统函数可表示为 1 ( ) p l l l P z zα − = =∑ (3.4) 由此得出 p阶级性预测器所引入的误差 ( )e n 为实际值 ( )s n 与预测估计值 ( )s n$ 之差 1 ( ) ( ) ( ) ( ) ( ) p l l e n s n s n s n s n lα = = − = − −∑$ (3.5) 第三章 语音信号的线性预测编码(LPC) 24 在此称 ( 1,2, , )l l pα = L 为 p阶线性预测器的预测系数。语音信号线性预测的 基本问题就是要根据总均方误差最小化的准则来确定这些参数. 由(3.5)式可知,预测误差序列 ( )e n 是一个系统函数为 ( )A z 的系统的输出, ( )A z 为 1 ( ) 1 p l l l A z zα − = = −∑ (3.6) 由(3.2)式(3.5)式可以着出,若语音信号的模型符合(3.1)式,且 l la α= , 则预测误差 ( ) ( )e n Gu n= ,于是(3.1)式可以写成 ( ) ( ) GH z A z = (3.7) 上式表示,预测误差滤波器 ( )A z 是(3.1)式表示的系统 ( )H z 的逆滤波器。当 l la α= 时, ( ) ( )e n Gu n= 。因而,当输入为脉冲串时,除脉冲激励的时间外,误 差是很小的。因为 ( )e n 的波形当增益G为常数时,与激励 ( )u n 的波形相同,故 可借助误差 ( )e n 来判别清音和浊音,以及在浊者语音时的基音。 短时平均预测误差定义为 2 ( )n n m E e m=∑ (3.8) 故 2 2 1 [ ( ) ( )] [ ( ) ( )] nn n m p n l n m l E s m s m s m s m lα = = − = − − ∑ ∑ ∑ $ (3.9) 式中, ( )ns m 是在取样点 n附近选择的一个语音段,即 ( ) ( )ns m s n m= + (3.10) 在以上几个公式中,求和的上下限暂且不定。而且在求平均时略去了和式除 低速率语音编码算法研究及其实时实现 25 以求和的项数,如此省略不会影响最终结果。为了求得(3.9)式中 nE 为最小值 时的各个 lα 值,可以使得 0, ( 1, 2, , )n i E i pα ∂ = =∂ L (3.11) 由于 2 2 1 1 ( ) 2 ( ) ( ) ( ) p p n n n l n l n m l l E s m s m s m l s m lα α = =   == − − + −      ∑ ∑ ∑ (3.12) 故 1 2 ( ) ( ) 2 ( ) ( ) 0 p n n n n l n m li E s m s m i s m i s m lαα =  ∂ = − − + − − ∂   = ∑ ∑ (3.13) 于是 1 ( ) ( ) ( ) ( ), (1 ) p n n l n n m l m s m s m i s m i s m l i pα = − = − − ≤ ≤∑ ∑ ∑ (3.14) 式中, lα 为使 nE 为最小值时的 lα 。如果我们定义 ( , ) ( ) ( )n n n m i l s m i s m lφ = − −∑ (3.15) 则(3.14)式可以表示为 1 ( , ) ( ,0), ( 1, 2, , ) p l n n l i l i l pα φ φ = = =∑ L (3.16) 上式为包含 p个未知数 lα 的 p个方程,从而可以利用各种有效算法解得{ }lα 。 因而,利用(3.16)式,可以得到 nE 的表示式为 1 (0,0) (0, ) p n n l n l E lφ α φ = = −∑ (3.17) 因此,最小误差由一个固定分量减去一个取决于预测器系数得分量所构成。 为了求解最佳线性预测器的系数,首先根据各段信号值 ( )ns m ,按式(3.15) 第三章 语音信号的线性预测编码(LPC) 26 算出 ( , )n i lφ 值。然后再按(3.16)式即可求得。 下面的几节介绍了浊音清音判别,基音周期,增益G以及数字滤波器系数 { }la 的详细算法以及我们对传统 LPC编码算法的改进。 3.2 模型增益的计算 语音产生模型中的增益G的推导可以根据信号能量和线性预测取样能量相 匹配的原则来得到。在前面已经讨论过,语音信号全极点模型的系统函数为 1 ( )( ) ( ) 1 p l l l S z GH z U z a z− = = = −∑ (3.17) 于是,激励信号 ( )Gu n 可以表示为 1 ( ) ( ) ( ) p l l Gu n s n a s n l = = − −∑ (3.18) 同时,预测误差 ( )e n 可以表示为 1 ( ) ( ) ( ) ( ) ( ) p l l e n s n s n s n s n lα = = − = − −∑$ (3.19) 因此,当实际的预测系数和模型系数相等时,也即 l la α= 时,可以得到 ( ) ( )Gu n e n= (3.20) 上式表明,输入信号正比于误差信号,比例常数等于增益G。然而,实际上, lα 只能近似等于 la ,即 l la α≈ ,故 ( ) ( )Gu n e n≈ 。另一方面,可以写出短时平均 预测误差为 1 1 2 2 2 0 0 ( ) ( ) N N n n m m E e m G u m − − = = = =∑ ∑ (3.21) 对于浊音语音,我们假定 ( ) ( )u n nδ= ,也就是说激励信号是 0n = 处的单位冲击 低速率语音编码算法研究及其实时实现 27 序列,也即 ( ) ( )Gu n G nδ= ,此时输出为 ( )h n ,因而可以表示为 1 ( ) ( ) ( ) p l l h n h n l G nα δ = = − +∑ (3.22) 若 ( )h n 的自关函数定义为 � 0 ( ) ( ) ( ) n R m h n h n m ∞ = = +∑ (3.23) 将(3.22)式代入到(3.23)式,可得 � 0 1 0 ( ) ( ) ( ) ( ) ( ) p l n l n R m h n h n m l h n G m nα δ∞ ∞ = = = = + − + +∑∑ ∑ (3.24) 因为(3.24)式中的第二项 2 0 0 ( 0) ( ) ( ) ( 0)n m h n G m n G m δ∞ = ≠+ =  =∑ (3.25) 故(3.24)式可以表示为 � � � 1 2 1 ( ) ( 0) ( ) ( ) ( 0) p l l p l l R m l m R m R l G m α α = =  − ≠=  + = ∑ ∑ (3.26) 由(3.26)式,可以得出在浊音情况下模型增益可以表示为 � �2 1 (0) ( ) p l l G R R lα = = −∑ (3.27) 因为对于 ( )G nδ 的响应而言,其能量必须等于信号的能量。所以 � ( ) ( ), (0 )nR m R m m p= ≤ ≤ (3.28) 可以将(3.27)式表示成下述形式 2 1 (0) ( ) p n l n n l G R R l Eα = = − =∑ (3.29) 对于清音语音,相关的定义是统计取平均,如果输入是具有零均值和单位方差的 白噪声,即 第三章 语音信号的线性预测编码(LPC) 28 [ ( ) ( )] ( )E u n u n m mδ− = (3.30) 假如用随机输入 ( )Gu n 来激励语音模型,其输出以 ( )g n 表示,即 1 ( ) ( ) g( ) p l l Gu n g n n lα = = − −∑ (3.31) 若 ( )g n 的自相关函数用 � ( )R m 来表示,即 � 1 1 ( ) [ ( ) ( )] g( ) ( ) ( ) [ ( ) ( )] [ ( ) ( )] p l l p l l R m E g n g n m E n l Gu n g n m E g n l g n m E Gu n g n m α α = = = −   = − + −     = − − + − ∑ ∑ (3.32) 因为 ( )u n 和任何 ( )u n 之前的信号无关,故当 0m ≠ 时,(3.32)式的第二项等于零, 而当 0m = 时 [ ( ) ( )] [ ( )( ( ))]E u n g n E u n Gu n G= = (3.33) 于是 2 0 ( 0) [ ( ) ( )] ( 0) m E Gu n g n m G m ≠− =  = (3.34) 利用(3.34)式,(3.32)式可以表示为 � � � 1 2 1 ( ) ( 0) ( ) ( ) ( 0) p l l p l l R m l m R m R l G m α α = =  − ≠=  + = ∑ ∑ (3.35) 因为对于 ( )Gu n 的响应而言,其能量必须等于信号的能量,所以可以写出 � ( ) ( ), (0 )nR m R m m p= ≤ ≤ (3.36) 因此,(3.35)式可以表示为 2 1 (0) ( ) p n l n n l G R R l Eα = = − =∑ (3.37) 低速率语音编码算法研究及其实时实现 29 (3.37)式相应于清音时的模型增益平方,和浊音时的(3.29)式相同。 3.3 线性预测器系数的计算 解线性预测参数方程组(3.16)的算法有多种,虽然都能从 个方程中解出 个 未知数,但是各种算法的效率是不同的,利用方程组的系数矩阵的对称性质可以 使运算效率提高。同时采用何种的参数表示形式也会对编解码算法的效率产生影 响。在这一节中将详细讨论几种常用的算法,最后给出一种比较高效率的编解码 算法。 3.3.1 利用杜宾递推算法计算线性预测器系数 如前所述,计算线性预测器系数主要是解(3.16)式,求得预测器系数 iα , 即 1 ( ) ( ), ( ) p l n n l R i l R i i i pα = − = ≤ ≤∑ (3.38) 上述方程的系数矩阵是一个托伯利兹矩阵。解上述方程有许多算法,如列文逊 (Levinson)算法,罗宾逊(Robinson)算法等。然而,比较有效的方法是杜宾 (Durbin)递推算法。下面列出这个算法的主要公式,在下述公式中,为了方便 起见,略去了自关函数的下标: (0) (0)E R= (3.39) 1 ( 1) ( 1) 1 ( ) ( ) / , ( ) i i i i j j k R i R i j E i i pα− − − =  = − − ≤ ≤  ∑ (3.40) ( )i i ikα = (3.41) ( ) ( 1) ( 1) , ( 1)i i ij j i i jk i j iα α α− −−= − ≤ ≤ − (3.42) ( ) 2 ( 1)(1 )i iiE k E −= − (3.43) 第三章 语音信号的线性预测编码(LPC) 30 (3.39)至(3.43)式,可以对 1,2, ,i p= L 进行递推求解,而最终解为 ( ) , ( )pj j i j pα α= ≤ ≤ (3.44) 在上面的表达式中,上述括号内的值表示预测器阶数,即 ( )ijα 表示 i阶预测器的 第 j个预测系数。应当指出,对于一个 p阶预测器,在上述求解预测器系数的过 程中,阶数低于 p的各阶预测器系数也得到了。 下面,通过求解一个二阶预测器系数的例子,来说明杜宾递推算法的具体计 算过程。设原始的矩阵方程如下式所示: 1 2 (0) (1) (1) (1) (0) (2) R R R R R R α α     =         利用(3.39)至(3.44)式,可得 (0) 1 (1) 1 (0) (1) (0) (1) (0) E R Rk R R R α = = = 2 (1) 2 (0) 1 2 2 2 (1)(1 ) 1 (0) (0) (0) (1) (0) RE k E R R R R R  = − = −   −= (1) (1) 2 1 2 2 2 2 2 (2) (1) / (1) (0) (2) (1) (0) (0) (1) (2) (0) (1) (0) (1) k R R E R RR R R R R R R R R R α = −   = −  −  −= − 2 (2) 2 2 2 2 (2) (0) (1) (0) (1) R R Rk R R α −= = − 低速率语音编码算法研究及其实时实现 31 (2) (1) (1) 2 1 2 1 2 2 2 2 2 (1) (2) (0) (1) (1) (0) (0) (1) (0) (1) (0) (1) (2) (0) (1) k R R R R R R R R R R R R R R R α α α= − −= − − −= − (2) 1 1 2 2 (1) (0) (1) (2) (0) (1) R R R R R R α α −= = − 2 (2) 2 2 2 2 (2) (0) (1) (0) (1) R R R R R α α −= = − 实现杜宾(Durbin)递推算法的程序: for (i = 1; i <= p; i++) { k[i] = -r[i]; for (j = 1; j < i; j++) { at[j] = a[j]; k[i] -= a[j] * r[i - j]; } #ifdef SILENCEFIX if (fabs(e) < FLT_EPSILON) { e = 0.0f; break; } #endif k[i] /= e; a[i] = k[i]; for (j = 1; j < i; j++) a[j] = at[j] + k[i] * at[i - j]; e *= 1.0f - k[i] * k[i]; } 第三章 语音信号的线性预测编码(LPC) 32 应当指出,(3.43)式得到的 ( )iE 是 i阶预测器的预测误差。在计算过程中可以通 过(3.43)式求得对应阶数为 i的预测器的预测误差。如果自相关系数用一组归 一化自相关系数 ( ) ( ) / (0)r k R k R= 来表示,矩阵方程的解不变。此时,预测误差 ( )iE 将变成归一化预测误差,用 ( )iV 表示 i阶预测器归一化预测误差,则表示为 ( ) ( ) (0) i i EV R = (3.45) 如果假定 ( ) ( ) / (0)r k R k R= (3.46) 则 ( ) ( ) ( )1 ( ), (0 1; 0) i i k i k k V r k V iα = = − < ≤ ≥∑ (3.47) 利用(3.43)式,对于 i p= ,可以推得 ( )pV 为 ( ) 2 1 (1 ) p p i i V k = = −∏ (3.48) 式中 1 1ik− ≤ ≤ (3.49) (3.49)式表明, ik 的取值范围在 1± 范围内。可以 证明 住所证明下载场所使用证明下载诊断证明下载住所证明下载爱问住所证明下载爱问 ,它是多项式 ( )A z 的根 在单位圆内的充要条件。由此可以保证系统 ( )H z 的稳定性。 3.3.2利用格型法计算线性预测器系数 杜宾(Durbin)递推算法是先求出语音信号的相关矩阵,然后解一组线性方 程求出预测系数 iα 。但是,在语音相关值的计算中,特别是在语音段的端点处, 由于作了与实际情况不同的假设,因而相关植计算误差较大,影响到线性预测系 数计算结果的准确性。 低速率语音编码算法研究及其实时实现 33 格型算法避免了上述问题。它可以直接递推求出线性预测系数。在上一节杜 宾递推算法中,如果计算出第 i阶的线性预测系数为 ( ){ , 1, 2, , }ij j iα = L ,利用这 些系数,可以计算第 i阶逆滤波器(或称为预测误差滤波器)的系统函数为 ( ) ( ) 1 ( ) 1 i i i l l l A z zα − = = −∑ (3.50) 假如滤波器的输入是 ( ) ( ) ( )ns m s n m w m= + ,则滤波器的输出为预测误差 ( ) ( )( ) ( )i ine m e n m= + (3.51) 式中 ( ) ( ) 1 ( ) ( ) ( ) i i i l l e m s m s m lα = = − −∑ (3.52) 上式中为简化起见, ( ) ( )ie m 的下标省略 n。(3.52)式的 z变换可以表示为 ( ) ( )( ) ( ) ( )i iE z A z S z= (3.53) 将(3.42)式 ( ) ( 1) ( 1)i i ij j i i jkα α α− −−= − 代入到(3.50)式,可以从 ( 1) ( )iA z− 递推求解 ( ) ( )iA z , 即 ( ) ( 1) ( 1) 1( ) ( ) ( )i i i iiA z A z k z A z − − − −= − (3.54) 将(3.54)式代入到(3.53)式,可得 ( ) ( 1) ( 1) 1( ) ( ) ( ) ( ) ( )i i i iiE z A z S z k z A z S z − − − −= − (3.55) (3.55)式中的第一项是 ( 1)i − 阶预测器预测误差的 z变换。为了说明第二项,我 们定义 ( ) ( ) 1( ) ( ) ( )i i iB z z A z S z− −= (3.56) 上式的 z逆变换为 ( ) ( ) 1 ( ) ( ) ( ) i i i l l b m s m i s m l iα = = − − + −∑ (3.57) (3.57)式说明,可以用 ( )s m i− 的后面的 i个取样{ }( ), 1, 2, ,s m l i l i+ − = L 来预 第三章 语音信号的线性预测编码(LPC) 34 测 ( )s m i− 。 因此, ( ) ( )ib m 称为后向预测误差。 另外。利用(3.56)式可以求得(3.55)式的 z逆变换如下式所示: ( ) ( 1) ( 1)( ) ( ) ( 1)i i iie m e m k b m − −= − − (3.58) 将(3.54)式代入(3.56)式.可以写出 ( ) ( 1) 1 ( 1)( ) ( ) ( ) ( ) ( )i i i iiB z z A z S z k A z S z − − − −= − (3.59) 由于 ( 1) ( 1) ( 1) 1( ) ( ) ( )i i iB z z A z S z− − − − −= (3.60) 因而,(3.59)式可变为 ( ) 1 ( 1) ( 1)( ) ( ) ( )i i iiB z z B z k E z − − −= − (3.61) (3.61)式进行反变换,可得 ( ) ( 1) ( 1)( ) ( 1) ( )i i iib m b m k e m − −= − − (3.62) 至此,(3.58)式及(3.62)式确定了计算第 i阶预测器的前向与后向预测误 差的递推公式。利用第 ( 1)i − 阶预测器的前向与后向预测误差可以计算第 i阶前后 向预测误差。对于零阶预测器,相当于 (0) (0)( ) ( ) ( )e m b m s m= = 按照(3.58)及(3.62)式进行计算的方框图如图 所示。这种方框图称为格型网 络,故此算法称为格型算法。 显然.将此格型网络扩展到 p,则最后一级的输出就是前向预测误差。因而, 图 3-2所示的网络就是预测误差滤波器。其传递函数为 ( )A z 。 低速率语音编码算法研究及其实时实现 35 图 3-2 格型结构方框图 应当指出,伯格(Burg)提出了一种算法.它是基于使图中的前后向预测误 差的平方和 � ( )iE 为最小, � ( )iE 可表示为 � 1( ) ( ) 2 ( ) 2 0 ( ( )) ( ( )) Ni i i m E e m b m − =  = + ∑ (3.63) 将(3.58)及(3.62)式代入到(3.63)式,可得 � 1( ) ( 1) ( 1) 2 ( 1) ( 1) 2 0 ( ( ) ( 1)) ( ( 1) ( )) Ni i i i i i i m E e m k b m b m k e m − − − − − =  = − − + − − ∑ 令 � ( ) 0 i i E k ∂ =∂ 即 1 ( 1) ( 1) ( 1) 0 1 ( 1) ( 1) ( 1) 0 2 ( ( ) ( 1)) ( 1) 2 ( ( 1) ( )) ( ) 0 N i i i i m N i i i i m e m k b m b m b m k e m e m − − − − = − − − − =  − − − −   − − − =  ∑ ∑ (3.64) 故可求出 ik 为 1 ( 1) ( 1) 0 1 12 2( 1) ( 1) 0 0 2 ( ) ( 1) ( ) ( 1) N i i m i N N i i m m e m b m k e m b m − − − = − −− − = =  − =    + −    ∑ ∑ ∑ (3.65) 上式说明, ik 将前向与后向预测误差联系起来,它表示前向与后向预测误差的相 第三章 语音信号的线性预测编码(LPC) 36 关程度,故称参数 ik 为部分相关系数(PARCOR系数)。的取值范围为 1 1ik− ≤ ≤ (3.66) 应当指出,由(3.65)式求出的 ik 是表示 � ( )i E 最小时的 ik ,与(3.40)式求出的值 不同。 下面,将这一节讨论的格型算法步骤作一个归纳。格型算法基本步骤如下: (1) 确定初始值: (0) (0)( ) ( ) ( )e m s m b m= = (2) 由(3.65)式可以求得 1 (0) (0) (1) 0 1 1 1 12 2(0) (0) 0 0 2 ( ) ( 1) ( ) ( 1) N m N N m m e m b m k e m b m α − = − − = =  − = =    + −    ∑ ∑ ∑ (3) 由(3.58)及(3.62)式计算前向与后向预测误差: ( ) ( 1) ( 1)( ) ( ) ( 1)i i iie m e m k b m − −= − − ( ) ( 1) ( 1)( ) ( 1) ( )i i iib m b m k e m − −= − − (4) 设 2i = (5) 由(3.65)式求 ik 1 ( 1) ( 1) ( )0 1 12 2( 1) ( 1) 0 0 2 ( ) ( 1) ( ) ( 1) N i i im i iN N i i m m e m b m k e m b m α − − − = − −− − = =  − = =    + −    ∑ ∑ ∑ (6) 由(3.42)式决定 ( )ijα ( ) ( 1) ( 1)i i i j j i i jkα α α− −−= − (7) 同(3) (8) 设 1i i= + (9) 若 i p≤ ,重复(5)(6)(7),否则(10) 低速率语音编码算法研究及其实时实现 37 (10)结束 由于格型算法不需要计算自相关函数,可以直接从语音取样中求得预测器系 数,因而避免了语音段端点处具有比较大的相关函数误差的缺点。此外,格型算 法能保证产生一个稳定的滤波器,不要求自选。因此,格型算法成为 LPC 参数 计算的重要算法。 3.3.3 改进的计算线性预测器系数的方法 诚然格型算法具有语音段端点处相关函数误差小,不需要计算自相关函数等 优点。但是如果希望完成语音编解码的实时算法,格型算法中部分相关系数的计 算式(3.65)中的除法运算是我们不希望的。为了简化部分相关系数的计算,同 时保证解的稳定性,我们考虑使用杜宾算法来近似代替格型算法。利用(3.39) 至(3.43)式可以求得 PARCOR系数 ik 。为保证编码算法的稳定性,这里编码的 滤波器参数用 PARCOR系数表示。由(3.58)及(3.62)式我们可以推出及初始 条件 (0) (0)( ) ( ) ( )e m b m s m= = 这样该算法不仅保证了参数的稳定性而且减小了格型算法运算的复杂性。 3.4 短时基音周期估计 基音周期是语音信号最重要的参数之一。根据加富的短时语音帧来估计基音 同期,在语音编译码器、语音识别(对于汉语来说;四声识别就是以基音周期估 计为基础的),说话人确认和辨识以及生理缺陷人辅助系统等许多领域中都是重 要的一环。基音周期估计的方法很多,在这里将介绍基于求短时自关函数和基于 求短的 AMDF 的两种算法。基于同态信号处理和线性预测编码的算法将在第四 章中讨论。 3.4.1基于求短时自关函数的基音周期估计 第三章 语音信号的线性预测编码(LPC) 38 短时自关函数 ( )nR l 在基音周期的各个整数倍点上有很大的峰值。看来只要 找到第一最大峰值点的位置并计算它与 0l = 点的间隔,便能估计出基音周期,实 际上并不是这样简单,第一最大峰值点的位置有时不能与基音周期相吻合。产生 这种情况的原因有以下两个方面。首先与窗的长度有关。图 3-3给出了一段周期 语音的短时自关函数 ( )nR l 随窗长 N 的变化(窗形为方窗),图(a)(b)(c)分 别给出了窗长为 400、250、125 时的 ( )nR l 图形。可以看到对于(a)和(b)两 种情况第一最大峰值点与基音周期是吻合的,而对于情况(c)由于窗长过短, 第一最大峰与基音周期不一致。一般认为窗长至少应大于两个基音周期才可能有 较好效果,语音中最长基音周期值约为 20ms(这相当于基音频率为 50Hz),因 而在估计基音周期时窗长应选得大于 40ms (a)N=400 (b)N=250 低速率语音编码算法研究及其实时实现 39 (c)N=125 图 3-3 窗长对语音信号短时自相关函数的影响 为宜。其次与声道特性的影响有关。有的情况下即使窗长已选得足够长,第一最 大峰值由与基音周期仍不一致,这就是声道的共振峰特性造成的“干扰”。为了 克服这个困难,可以从两条途径来着手解决。第一条是减少共振峰的影响。最简 单的方法是用一个带宽为 60~900Hz 的带通滤波器对语音信号进行滤波并利用 滤波信号的自关函数来进行基音估计。这个滤波器可以放在对语音信号采样前 (模拟滤波)也可以放在采样后(数字滤波)。之所以将此滤波器的高端截频置 为 900Hz,是因为既可以去除大部分共振峰的影响,又可以当基音频率为最高 450Hz 时仍能保留其一二次谐波。低端截频置为 60Hz 是为了抑制 50Hz 电源干 扰。另一种更有效的方法是让语音信号通过一个线性预测(LPC)逆滤波器,并 通过求其残差信号的自关函数来估计基音周期,有关的内容将在 3.4.3 中讨论。 第二条途径是对语音信号进行非线性变换后再求自关函数。一种有效的非线性变 换是“中心削波”。若输入语音信号为 ( )x n ,中心削波的输出则为 ( ) [ ( )]y n C x n= 。 函数 [ ]C x 如图 3-4(a)所示,一段语音信号 ( )x n 及通过中心削波后得到的 ( )y n 示 例分别如图 3-4(b)和(c)所示,其中削波电平 LC 之值取为该段语音最大采样 值 68%。 ( )x n 和 ( )y n 的自关函数也并列展示于图中。可以看到,在基音周期点 上后者的峰起远比前者尖锐突出,因此用它来进行基音周期估计的效果可以好得 多。 第三章 语音信号的线性预测编码(LPC) 40 (a) (b) (c) 图 3-4 语音信号经过中心削波后的自相关函数 3.4.2 基于短时 AMDF的基音周期估计 低速率语音编码算法研究及其实时实现 41 用短时自关函数进行基音周期估计时是寻找它的最大峰值点的位置,而用短 时 AMDF 进行基音周期估计则是寻找它的最深谷值点的位置。事实上, ( )R l 和 ( )lγ 有密切的关系。业已证明,二者之间的关系可以由下式表达(其中 是随 做 平缓变化的固定函数): ( ) ( ) 2[ (0) ( )l B l R R lγ = − (3.67) 和短时自关函数的情况相同,用 AMDF ( )lγ 进行基音周期估计时如果能去 除输入语音中声道特性或共振峰的影响以及采用中心削波变换,都能改善估计的 效果。下面介绍一种基于 AMDF 的基音周期估计算法。设有一段语音,采样率 为 8kHz,帧长 150,采用方窗,在 N=18~120 范围内算出的 ( )lγ 如图 3-5 所 示。首先,要找到 ( )lγ 最小值点,它显然是基音周期的第一侯选者,假设 ( )lγ 这 一最小值为 minγ 。 图 3-5 用 AMDF进行基音周期估计算法的示例 其次搜寻 ( )lγ 的若干局部最小值点作为基音周期的其它候选者。这些局部最 小点必须满足两个条件。第一,其取值应在 min min~ thγ γ γ− 的范围内, thγ 是一个 恰当选取的阈值。第二,各个局部最小点之间以及它们与全局最小点之间的间隔 不得小于 thl , thl 是一适当选取的间隔值。在此算法中 thl 取为 17,在实际应用中 thl 值需根据实验确定。第三,对各个局部最小点和全局最小点进行“清晰度”检查, 第三章 语音信号的线性预测编码(LPC) 42 其算法是在某个最小点左右各 8个点的范围内对 ( )lγ 取平均,若该最小点与此平 均值的差距大于某个阈值,那么该最小点称为清晰点,反之则否。第四,在所有 清晰最小点中找出最左边的那个点将其定为该帧语音的基音周期估值。 对于用 AMDF 进行基音周期估计可以进行几点评价:(1)在基音周期点它 的谷点锐度较之短时自相关函数的顶点锐度更尖锐,因此估值精度更高、更稳健。 (2)由于计算 AMDF时无需乘法,因此其计算量较短时自相关函数小。(3)如 果对语音信号进行谱平滑(去除共振峰影响)和中心削波变换等处理,同样可以 明显改善基音周期估计的效果。(4)AMDF 对于语音信号幅度的快速变化比较 敏感,它影响估计的精度。 3.4.3 利用 LPC参数进行基音检测 利用线性预测中产生的误差信号可以进行基音检测 1 ( ) ( ) ( ) ( ) p l l e n s n s n l Gu nα = = − − =∑ (3.68) 这是由于一个 p阶的变线性预测器与实际语音信号系统越接近,则 ( )e n 也就越接 近信号 ( )Gu n 。而当浊音时,在每一基音周期起始处,预测误差较大。因此,检 测 ( )e n 取样出现起峰的地方,找出一对超过一定门限的 ( )e n 取样值,测定它们之 间的间隔即为基音周期.如果对 ( )e n 作相关分析并检测其最大的峰值也可进行基 音检测。 ( )e n 为预测误差,可以看出 ( )e n 为具有如下系统转移函数的输出: 1 ( ) 1 p l l l A z zα − = = −∑ ( )A z 即为系统的逆滤波器。由 LPC分析可以得到预测系数 lα ,从而可求得 ( )A z 。 让信号 ( )x n 经过 ( )A z 可得到 ( )y n ,这一滤波器使 ( )x n 谱平坦化,然后计算短时 自相关函数,即可进行基音检测。这种方法称为简单逆滤波器跟踪(SIFT)算法, 低速率语音编码算法研究及其实时实现 43 如图 3-6所示。 图 3-6 SIFT基音检测方框图 在我们的 LPC 编码中,一段 240 个取样(8kHz 取样时为 30ms)经过一截 止频率为 900Hz的低通滤波器后,进行 5:1的抽选,即在低通滤波器输出后,每 5 个取样抽选 l 个取样,为了保证 5:1 的抽选的信号能够反映原来语音信号的性 质,这里将 5个取样值取平均。使取样频率由 8kHz降低到 1.6kHz,然后用 4阶 LPC自相关法得到一个 4阶逆滤波器。分频输出的 1.6kHz语音信号 ( )x n 经滤波 后产生一个频谱平坦信号 ( )y n ,这种 LPC分析的目的是使输入信号的谱平坦化, 这相当于 3.4.1所讨论的中心削波法。然后,对逆滤波器的输出信号 ( )y n 计算短 时自相关函数。为了获得基音检测的更高分辨率,这里在自相关函数峰值附近利 用二次函数进行内插,在适当范围内选出峰值,根据自相关函数的峰值可以进行 浊音清音判别。当自关函数的峰值电平(经过适当归一化)低于给定门限时则判 为清音根据高出给定门限的峰值可以确定基音周期。根据实验,将门限定为 0.4。 但是考虑到如果连续两帧都是浊音的情况,可以允许门限降低到 0.3,这样就更 能反映实际情况。 SIFT算法利用 LPC分析提供一个谱平坦的信号进行基音检测。谱越平坦, 则基音检测效果越好。但对于儿童说话者,由于基音高,因而谱平坦常常不成功 此时需要采用其他的基音检测 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 3.4.4 对于基音周期轨迹的平滑 无论采用哪一种算法求得的基音周期轨迹与真实的基音周期轨迹不可能完 全吻合。实际情况是大部分段落是吻合的,而在一些局部段落或区域中有一个或 第三章 语音信号的线性预测编码(LPC) 44 几个基音周期估值偏离了正常轨迹(通常是偏离到正常值的 2倍或 1/2),此情况 称为基音轨迹产生了若干“野点”。 为了去除这些野点,可以采用各种平滑算法,其中最常用的是中值平滑算法, 线性平滑算法和动态规划技术。 (1)中值平滑 中值平滑是在被平滑点的左右谷取 L个样点,连同被平滑点共同构成一组信 号采样值(共 2L+1个样值),然后将这(2L+1)个样值按大小次序排成一队, 取此队列中间者作为平滑器的输出。L 一般取为 l 或 2,即中值平滑窗一般套住 3或 5个样值。中值平滑的优点是既可以有效地去除少量的野点,又不会破环基 音周期轨迹中两个平滑段之间的阶跃性变化。 (2)线性平滑 线性平滑让基音轨迹序列 通过一个低通 FIR滤波器。由于基音轨迹中的野 点都是一些突发跳动点,它们具有很高的频率分量,采用低通滤波即可以将其去 除。可以采用线性相位 FIR滤波器。FIR滤波器的长度加大可以增强平滑的效果, 但是也导致两个平滑段之间阶跃的模糊程度更加严重,所以增加长度是不可取 的。 (3)组合平滑 为了使平滑的基音轨迹与真实基音轨迹更贴切,可以将两个中值平滑串接, 图 3-7(a)所示是将一个 5点中值平滑和一个 3点中值平滑相串接。另一种方法 是将中值平滑和线性平滑组合。为了使平滑的基音轨迹与真实基音轨迹更贴近还 可以采用二次平滑的算法。设所要平滑信号为 ( )pT n ,经过一次组合平滑得到的 信号为 ( )pt n 。那么首先应求出二者的差值信号 ( ) ( ) ( )p p pT n T n t n∆ = − ,再对 ( )pT n∆ 进行组合平滑,得到 ( )pt n∆ ,令输出等于 ( ) ( )p pt n t n+ ∆ ,就可以得到更好的基音 低速率语音编码算法研究及其实时实现 45 周期估计轨迹。全部算法的框图如图 3-7(b)所示。由于中值平滑和线性平滑都 会引入延时。所以在实现上述方案时应考虑到它的影响。图 3-7(c)是一个采用 补偿延时的可实现二次平滑方案。其中的延时大小可由中值平滑的点数和线性平 滑的点数来决定。例如:一个 5点中值平滑将引入 2点延时,一个 3点线性平滑 将引入 1点延时,那么采用此二者完成组合平滑时,补偿延时的点数应等于 3。 (a) (b) (c) 图 3-7 各种组合平滑算法的框图 (1) 动态规划技术 动态规划技术不是孤立的估计基音,而是考虑到了相邻帧。这种基音跟踪方 法主要利用全局最小路径误差来估计基音周期,这里路径误差指的是许多帧的积 累误差。这种方法的主要缺陷是延迟大,至少要用到将来一帧的数据。到目前为 止,动态规划技术还是一种最为有效的基音跟踪方法。但是动态规划技术的复杂 第三章 语音信号的线性预测编码(LPC) 46 性比较高,不太适合于在定点 TMS5402 DSP上面实现。下面讨论一种新的基音 平滑方法。
本文档为【DSP 语音信号的线性预测编码(lpc)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_217606
暂无简介~
格式:pdf
大小:290KB
软件:PDF阅读器
页数:37
分类:互联网
上传时间:2011-09-12
浏览量:68