LPCmatlab的编程实现

LPCmatlab的编程实现
LPCmatlab的编程实现

摘要

线性预测编码作为一种基于全极点模型假定和均方预测误差最小准则下的波形逼近技术,是语音编码中的一种重要技术,运用这种编码方式通过对音频信号的时域和频域分析,线性预测编解码,滤波等处理,能够在尽量保持原音质的基础上合成出高质量的语音。

本文通过对波形编码,参量编码,混合编码,中低速率编码的介绍,重点研究了线性预测(LPC)的原理、Levinson-Durbin算法及MATLAB在处理语音信号时的应用。最后以MATLAB为开发工具,编写了线性预测编码的程序,对语音信号进行了线性预测编码处理,并对阶数的选取做了比较分析。

关键词语音信号LPC 莱文森-杜宾算法MATLAB仿真

Abstract

LPC all-pole model as based on assumptions and the smallest mean squared prediction error criterion of waveform approximation technique,is an important speech coding techniques,By using this encoding audio signals in time domain and frequency domain analysis, linear prediction coding and decoding, filtering processing, able to keep the original sound quality on the basis of high-quality voice synthesis.

In this paper,based on the introduction of the waveform coding,parametric coding, hybrid coding, low rate coding, focuses on the linear prediction (LPC) principle,Levinson-Durbin algorithm and MATLAB in the application of speech signal processing. Finally, with MATLAB as the development tool,write a linear predictive coding procedures,voice signal processing of linear predictive coding.,and the number of orders to do a comparative analysis.

Keywords voice signal LPC Levinson - Durbin algorithm MATLAB simulation

目录

第1章绪论 (1)

1.1 语音信号LPC分析技术的基本概念 (1)

1.2 语音信号LPC分析技术的发展 (2)

1.3 语音信号LPC分析技术的应用 (2)

1.4 基本设计要求及设计思路 (3)

第2章线性预测编码的基本原理 (4)

2.1 语音信号的数字模型 (4)

2.1.1 激励模型 (4)

2.1.2 辐射模型 (5)

2.1.3 声道模型 (5)

2.2 线性预测的概念与原理 (6)

2.2.1 线性预测分析的概念 (6)

2.2.2 自相关法 (7)

2.2.3 协方差法 (8)

2.2.4 全极点声道模型 (8)

2.3 解线性预测参数方程组的算法 (9)

2.3.1 利用乔里斯基分解计算协方差法的方程组 (9)

2.3.2 利用杜宾递推算法计算自相关法的方程组 (11)

2.3.3 利用格型法求解线性预测系数 (12)

2.4 各种算法的比较 (16)

第3章编程实现LPC分析 (19)

3.1 MATLAB的简介 (19)

3.2 基于MATLAB的编程实现 (20)

3.2.1 程序设计流程图 (21)

3.2.2 主函数及其功能 (21)

3.2.3 程序分析 (22)

3.2.4 实验结果与分析 (24)

3.3 基于C的编程实现 (24)

结束语 (26)

谢辞 .......................................................................................... 错误!未定义书签。

参考文献 (27)

附录 (28)

第1章绪论

1.1 语音信号LPC分析技术的基本概念

语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。处理的目的就是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求,例如人工合成出语音、辨识出说话者、识别出讲话的内容等。

人类社会愈来愈显示出信息社会的特点。不但在人与人之间,而且在人与机器之间每时每刻都需要进行大量的信息交换。通信或信息交换已经成为人类社会存在的必要条件,正如衣食住行对于人类是必要的一样。

虽然,嗅觉、触觉等也是人类固有的感觉,人们也可以从中得到某些外界信息,但是可以指出,最重要的、最精细的信息源只有图像和语言两种。而且,语言是人类最重要、最有效、最常用和最方便的通讯形式。

语音是人们交流思想和进行社会活动的最基本手段, 我们要对语音信号进行测定并将其转变为另一种形式, 以提高我们的通信能力。

LPC:Linear Predictive Coding,线性预测编码。

线性预测(Linear Prediction)这一术语是维纳1947年首次提出的,此后,线性预测应用于许多领域中。1967年,板仓等人最先将线性预测技术直接应用到语音分析和合成中。

线性预测作为一种工具,几乎普遍地应用于语音信号处理的各个方面。这种方法是最有效和最流行的语音分析技术之一。在各种语音分析技术中,它是第一个真正得到实际应用的技术。线性预测技术产生至今,语音处理又有许多突破,但这种技术目前仍然是唯一的最重要的分析技术基础。

在估计基本的语音参数(例如基音、共振蜂、谱、声道面积函数,以及用低速率传输或储存语音等)方面,线性预测是一种主要的技术。其重要性在于它能够极为精确地估计语音参数,用极少的参数有效而又正确地表现语音波形及其频谱的性质,而且可以用比较简单的计算和比较快的速度求得参数。

参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输。译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号。具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的差别。

线性预测分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音处理领域中得到了广泛的应用。语音线性预测的基本思想是:一个语音信号的

抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。

采用线性预测分析不仅能够得到语音信号的预测波形,而且能够提供一个非常好的声道模型。如果将语音模型看作激励源通过一个线性时不变系统产生的输出,那么可以利用LPC 分析对声道参数进行估值,以少量低信息率的时变参数精确地描述语音波形及其频谱的性质。此外,LPC分析还能够对共振峰、功率谱等语音参数进行精确估计,LPC分析得到的参数可以作为语音识别的重要参数之一。

由于语音是一种短时平稳信号,因此只能利用一段语音来估计模型参数。此时有两种方案:一种是将长的语音序列加窗,然后对加窗语音进行LPC分析,只要限定窗的长度就可以保证分析的短时性,这种方案称为自相关法;另一种方案不对语音加窗,而是在计算均方预测误差时限制其取和区间,这样可以导出LPC分析的自协方差法。

1.2 语音信号LPC分析技术的发展

线性预测编码(LPC)在近代电子技术中得到广泛地使用,如窄带通信、语言识别和扬声器鉴定等。

根据斯坦福大学Robert M. Gray 的说法,线性预测编码起源于1966 年,当时NTT 的S. Saito 和F. Itakura 描述了一种自动音素识别的方法,这种方法第一次使用了针对语音编码的最大似然估计实现。1967 年,John Burg 略述了最大熵的实现方法。1969 年Itakura 与Saito 提出了部分相关(en:partial correlation)的概念, May Glen Culler 提议进行实时语音压缩,B. S. Atal 在美国声学协会年会上展示了一个LPC 语音编码器。1971 年Philco-Ford 展示了使用16 位LPC 硬件的实时LPC 并且卖出了四个。

1972 年ARPA 的Bob Kahn 与Jim Forgie (en:Lincoln Laboratory, LL) 以及Dave Walden (BBN Technologies) 开始了语音信息包的第一次开发,这最终带来了V oice over IP 技术。根据Lincoln Laboratory 的非正式历史资料记载,1973 年Ed Hofstetter 实现了第一个2400 位/秒的实时LPC。1974 年,第一个双向实时LPC 语音包通信在Culler-Harrison 与Lincoln Laboratories 之间通过ARPANET 以3500 位/秒的速度实现。1976 年,第一次LPC 会议通过ARPANET 使用Network V oice Protocol 在Culler-Harrison、ISI、SRI 与LL 之间以3500 位/秒的速度实现。最后在1978 年,BBN 的Vishwanath et al. 开发了第一个变速LPC 算法。

1.3 语音信号LPC分析技术的应用

线性预测编码通常用于语音的重新合成,它是电话公司使用的声音压缩格式,如GSM 标准就在使用这种格式。它还用作安全无线通信中的格式,在安全的无线通信中,声音必须进行数字化、加密然后通过狭窄的语音信道传输。

线性预测编码合成也可以用于构建声音合成器,乐器用作从歌手声音预测得到的时变滤波器的激励信号,这在电子音乐中有一定的流行。

1976年,美国确定用LPC-10作为在2.4kb/s速率上语音通信的标准基数,1981年,这个算法被官方接受,作为联邦政府标准FS-1015颁布。LPC-10是一个10阶线性预测声码器,它所采用的算法简单明了。为了得到质量好的合成语音,它对每个参数的提取和编码都是很考究的。利用这个算法可以合成清晰、可懂的语音,但是抗噪声能力和自然度尚有欠缺。自1986年以来,美国第三代保密电话装置(STU-III)采用了速率为2.4kb/s的LPC-10e(LPC-10的增强型)作为话音终端。目前,STU-III的话音质量被评为“良好”。

1980年流行的Speak & Spell 教育玩具中使用了一个10 阶的线性预测编码。在FLAC 音频编解码器中使用了0 到 4 阶的线性预测编码预测器。

1.4 基本设计要求及设计思路

根据语音信号的产生模型,语音信号S(z)是一个线性非因果稳定系统V(Z)受到信号E(Z)激励所产生的输出。在时域中,语音s(n)信号是单位取样响应v(n)和激励信号e(n)的卷积。在语音信号数字处理所涉及的各个领域需要根据s(n)来求v(n)和e(n)。在实现各种语音编码、识别、合成等算法时需要用到卷积运算。解卷积算法因可减少计算代价,其研究也是十分重要的。

设计方法是为线性系统V(Z)建立一个线性模型,然后对模型参数按某种最佳准则进行估计,并采用最小均方准则(LMS)对全极点AR模型参数进行估计的LPC算法。考虑到语音信号只有在一个短时段中才可以认为是平稳的,因此对语音信号的线性预测编码的分析和其它语音信号分析相同,必须是一个短时分析。为了进行短时分析可以采取对一个长的语音序列s(n)用窗函数w(n)相乘,形成加窗语音s(n)。然后对s(n)进行LPC分析,只要限定窗的长度便可以保证分析的短时性。由此导出的方法称为自相关法。

第2章 线性预测编码的基本原理

LPC 是通过分析语音波形来产生声道激励和转移函数的参数,对声音波形的编码实际就转化为对这些参数的编码,这就使声音的数据量大大减少。在接收端使用LPC 分析得到的参数,通过语音合成器重构语音。合成器实际上是一个离散的随时间变化的时变线性滤波器,它代表人的语音生成系统模型。时变线性滤波器既当作预测器使用,又当作合成器使用。分析语音波形时,主要是当作预测器使用,合成语音时当作语音生成模型使用。随着语音波形的变化,周期性地使模型的参数和激励条件适合新的要求。

2.1 语音信号的数字模型

完整的语音信号的数字模型可表示为三个子模型:激励模型、声道模型和辐射模型的串联。

2.1.1 激励模型

发浊音时,由于声带不断的张开和关闭,将产生间歇的脉冲波。它类似于斜三角形的脉冲。这时的激励波是一个以音调周期为周期的斜三角脉冲串,单个三角波形的数学表达式如下。

????

???????????-??????-=02)(cos )cos(1)21()(211N N n N n n g ππ 其他2111

0N N n N N n +≤≤≤≤ (2.1.1) 式中,N1为斜三角波上升部分的时间,N2为其下降部分的时间。通常,更希望将它表示成Z 变换的全极模型的形式:

2

10)

1(1

)(---=

z e z G T

(2.1.2)

上式表示斜三角波形可描述为一个二极点的模型。因此,斜三角波串科士威加权了单位

脉冲串激励上述单个斜三角波模型的结果。而该单位脉冲串及幅值因子则可表示成下面的Z 变换形式:

1

1)(--=

z

A z E u

(2.1.3) 所以整个激励模型可表示为:

2

101)1(1

1)(-----

-=

z e z A z U T u (2.1.4)

2.1.2 辐射模型

从声道模型输入的是速度波()L u n ,而语音信号是声压波()L p n ,二者之倒比称为辐射阻抗L z 。它表征口唇的辐射效应,也包括圆形的头部的绕射效应等。当然,从理论上推导这个阻抗是有困难的。但是,如果认为口唇张开的面积远小于头部的表面积,则可近似地看成平板槽辐射的情况。此时,可推导出辐射阻抗的公式如下:

r

r r

r L L j R R L j z Ω+Ω=

Ω)( (2.1.5)

式中,2

9128π

=

r R ,c a

L r π38=,这里,a 是口唇张开时的半径,C 是声波传播速度。 由辐射引起的能量的损耗正比于辐射阻抗的实部,所以辐射模型是一阶类高通滤波器。由于除了冲击脉冲串模型E(Z)之外,斜三角波模型是二阶低通而辐射模型是一阶高通,所以,在实际信号分析时,常用所谓“预加重技术”。即:在取样之后,插入一个一阶的高通滤波器。

常用的预加重因子为???

???--1)0()1(1z R R ,这里,R(n)是信号s(n)的自相关函数。通常对于浊音,

R(1)/R(0)≈1;而对于清音,则该值可取得很小。

2.1.3 声道模型

语音的产生可以用N 级无损声管来模拟,其传输函数式(2.1.6)和(2.1.7)表示为

)

()1()1(5.0)(1

2

z D z

T z V N

m N m u =-

++=

? (2.1.6)

∑=--=N m m m z a z D 1

1)( (2.1.7)

声道系统可以用一组面积函数A(x)或一组反射系数rm 来表示。在一个音帧(10~20ms )内,A(x)或r(m)近似不变,另外,如果有一数字系统,其系统函数表示为

∑=--=

N

m m

m z a G z V 11)( (2.1.8)

可以看出式(2.1.8)中G 取决于式(2.1.6)中的rG 与rm ,此处把固定延迟2

N

_

Z 省略了,

而分母形式相同。事实上,上述系统函数V(z)仅有极点而没有零点称为全极点模型。

因此,整个系统的系统函数为

H(z)=G(z)V(z)R(z) (2.1.9)

2.2 线性预测的概念与原理

2.2.1 线性预测分析的概念

一个语音取样的现在值,可以用若干个语音取样的过去值的加权线性组合来逼近,在线性组合中的加权系数就称为线性预测系数(LPC:Linear Predictive Coding)

线性预测的基本原理是建立在语音数字模型的基础上的,我们可以用准周期脉冲或随机噪声去激励一个线性时变系统,产生浊音语音或清音语音。为了估计这些线性时变系统的参数,线性预测法提供了一种可靠精确而有效地方法。

到目前为止,已经形成了许多不同的线性预测分析方法,这些方法在处理具体问题时所作的假设不同,因而形成了各自不同的算法,这些方法有:

(1) 自相关方法; (2) 协方差法; (3) 格型滤波器法; (4) 逆滤波器法; (5) 谱估值法; (6) 最大似然法; (7) 内积法;

LPC 分析方法一般采用个性滤波器来提取一组对量化敏感性较低的偏相关(PARCOR )系数,这种个性滤波器是在自相关定义下得到的。近年来,随着自适应滤波技术的发展,得到了前置窗(Pro-Window )和协方差等定义下的格型滤波器形式,利用这些方法能获得比自相关方法更精确地参数估计值。本文只对前三种基本方法进行讨论。因为其他方法都等效于前三种方法的一种。

LPC 分析为线性时不变因果稳定系统V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计。

如果利用P 个取样值来进行预测,则称为P 阶线性预测。假

P 个取样值

()()(){}1,2,S n S n S n p --- 的加权之和来预测信号当前取样值()S n ,则预测信号()S n ∧

为:

()()

1

p

k k S n a n k ∧

==-∑ (2.2.1)

其中加权系数用k a 表示,称为预测系数,则预测误差为:

()()()()()

1

p

k k e n s n S n s n a n k ∧

==-=--∑ (2.2.2)

要使预测最佳,则要使短时平均预测误差最小有:

()2

min E e n ε??==?? (2.2.3)

()20,(1)

k

e n k p a ?????

=≤≤? (2.2.4)

()()(),,i k E s n i S n k φ=--????

(2.2.5)

最小的ε可表示成:

()()

min 10,00,p

k k a k εφφ==-∑ (2.2.6)

显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。

通过LPC 分析,由若干帧语音可以得到若干组LPC 参数,每组参数形成一个描绘该帧语音特征的矢量,即LPC 特征矢量。由LPC 特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值。

2.2.2 自相关法

在最佳线性预测中,若用下式定义的时间平均最小均方准则代替(2.1.3)式的集合平均最小均方准则,即令

()120

1min

N p n e n N

ε+-==

=∑

(2.2.7)

事实上就是短时自相关函数,因而

()()

,R i k i k φ-= (2.2.8)

()()(),R k E S n S n k =-????

(2.2.9)

根据平稳随机信号的自相关性质,可得

()(),,1,2;0,1i k R i k i p k p

φ=-== (2.2.10)

由(2.1.6)式,可得:

()()

min 10p

k k R a R k ε==-∑ (2.2.11)

综上所述,可以得到如下矩阵形式:

(2.2.12)

()

()()()()()()()()011102120R R R P R R R P R P R P R -?? ?- ? ? ? ?-- ? ???

()()()()123123n R a R a a R a R p ??

?? ?

? ? ? ?

?= ? ? ? ? ? ? ?????

值得注意的是,自相关法在计算预测误差时,数据段()()(){}

0,1,1S S S n - 的两端都需要加

P 个零取样值,因而可造成谱估计失真。特别是在短数据段的情况下,这一现实更为严重。另

外,当预测系数量化时,有可能造成实际系统的不稳定。

自相关解法主要有杜宾算法、格型算法和舒尔算法等几种高效递推算法。

2.2.3 协方差法

如果在最佳线性预测中,用下式定义的时间平均最小均方准则代替(2.1.3)式的集合平均最小均方准则,则可得到类似的方程:

()121

min

N n p

e n N

ε-==

=∑ (2.2.13)

可以看出,这里的数据段两端不需要添加零取样值。在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 (当然这种方法也有量化效应可能引起不稳定的缺点)。

协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在N 和P 相差不大时,其参数估值比自相关法要精确的多。但是在语音信号处理时,往往取N 在200左右。此时,自相关法具有较大误差的段落在整个语音段中所占的比例很小,参数估值也是比较准确的。在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了制约因素。所以,在语音信号处理中往往使用高效的自相关法。

2.2.4 全极点声道模型

将线性预测分析应用于语音信号处理,不仅是为了利用其预测功能,更因为它提供了一个非常好的声道模型。

将式(2.1.2)所示的方程看成是滤波器在语音信号激励下的输入输出方程,则该滤波器称为预测误差滤波器,其e(n)是输出误差。变换到z 域,P 阶预测误差滤波器的系统函数为

()1

1p

i i i H z a z

-==+∑ (2.2.14)

可以看出,如果将预测误差e(n)作为激励信号,使其通过预测误差滤波器的逆滤波器H(Z),

()()

11

11p

i

i i H z A Z a z -==

=+∑ (2.2.15)

则H(Z)的输出为语音信号s(n),也就是说,H(Z)在预测误差e(n)的激励下可以合成语音。因此,H(Z)被称为语音信号的全极点模型,也称为语音合成器。该模型的参数就是P 阶线性预

测的预测系数()1,2,...,i a i p =。

因为预测误差含有语音信号的基音信息,所以对于浊音,模型的激励信号源是以基音周期重复的单位脉冲;对于清音,激励信号源e(n)是自噪声。语音信号的全极点模型是一种很重要的声道模型,是许多应用和研究的基础。

2.3 解线性预测参数方程组的算法

在前面我们推得了线性预测参数方程组,自相关法如(2.2.10)和(2.2.12)式所示,协方差法如(2.3.1)及(2.3.2)式所示。解线性预测参数方程组的算法有许多种,虽然都能从P 个方程中解出P 个未知数,但是各种算法的效率是不同的,利用方程组的系数矩阵的对称性可以使运算效率提高。

2.3.1 利用乔里斯基分解计算协方差法的方程组

协方差法的线性预测方程组如(2.3.1)式所示

1

(,)(,0),(1,2,...,)

p

j n

n

j a i j i i p φφ===∑ (2.3.1)

或用矩阵形式表示为

ψφa= (2.3.2)

式中φ是正定对称矩阵,它的第(i,j )项元素为φ(i,j),而a 和ψ是列矩阵,其元素分别是a i 和φ(i,0)。因为φ是一个对称正定矩阵,因此可以利用乔里斯基分解算法。按次算法,矩阵φ可分解成如下形式:

φ=VDVT (2.3.3)

式中,V 是一个下三角矩阵,其主对角元素为1,D 是一个对角矩阵。上标T 表示矩阵转置。只要令(2.3.3)式两边的对应元素相等,就可以从(2.3.2)式中解出矩阵V 和D 的元素。即

1

(,),(11)

j

n ik k jk k i j V d V j i φ==≤≤-∑ (2.3.4)

由于对角元素V ij =1,故(2.3.4)式可表示为

1

1

(,)(,),(11)

j n j n ik k jk k i j d i j V d V j i φφ-==-≤≤-∑ (2.3.5)

而对于对角元素,利用(2.3.5)式可以得到

1

(,)i

n ik k ik

k i i V d V φ==∑ (2.3.6)

由于对角元素V ij =1,故(2.3.6)式可以写成

1

1(,),(2)i i n i k k k d i i V d i φ-==-≥

∑ (2.3.7)

同时

1(1,1)n d φ= (2.3.8)

综上可得其矩阵形式:

(2.3.9)

矩阵φ分解为V 和D 完成后,就可以求解a 了。利用(2.3.2)和(2.3.3)式,可以写出

VDV T a=ψ (2.3.10)

DV T a=Y , (2.3.11)

VY=ψ (2.3.12)

由(2.3.8)式,可以写出

V T a=D -1Y , (2.3.13)

利用(2.3.9)式可以得到求解矢量Y 的递归关系式,如下式所示:

1

1

,(2)

i i i ij j j Y V Y p i ψ-==-≥≥∑ (2.3.14)

初始条件为

11Y ψ= (2.3.15)

利用(2.3.10)式可以推得求解a 的递推关系式为

1

/,(11)

n

i i i ij

j

j i a Y d V a i p =+=-

≤≤-∑ (2.3.16)

初始条件为

/p p p

a Y d = (2.3.17)

应当指出,(2.3.13)式的递推过程是从i=p-1到i=1 。

至此,协方差法的求解过程结束。利用乔旦斯基分解算法可以将最小预测误差表示成简单形式、协方差法可以将预测误差表示为

1(0,0)(0,)

p

n n i n i E a i φφ==-∑ (2.3.18)

或利用矩阵形式表示为

(0,0)T n n E a φψ=- (2.3.19)

???????

?????????ΦΦΦΦ=????????????????????????????????ΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦΦ M M

L M M M M M L L L p a a a a p p p p p p p p p

根据(2.3.13)式,VTa=D-1Y ,可得

11T T a Y D V ψ--=, (2.3.20) 将(2.3.20)式代入到(2.3.19)式,即可写出

11(0,0)T n n E Y D V φψ--=- (2.3.21) 由(2.3.12)式,VY=ψ,可得

1V Y ψ-= (2.3.22) 将(2.3.22)式代入到(2.3.21)式,可以写出

1(0,0)T n n E Y D Y φ-=- (2.3.23) 最后可得

21(0,0)/p

n n i i

i E Y d φ==-∑ (2.3.24)

上式表示,根据列矢量Y 和矩阵D 可以求得均方预测误差n E ,并可求得n E 随p 的变化情况,从而决定p 的选择。

2.3.2 利用杜宾递推算法计算自相关法的方程组

如2.2节所述,对于自相关法,主要是解(2.3.25)式,求得预测器系数i a 。

1

()(),(1)

p

i n

n

l a R i l R i i p =-=≤≤∑ (2.3.25)

上述方程的系数矩阵如(2.1.12)式所示,是一个托伯利兹矩阵.解上述方程有许多算法,如列文逊(Levinson )算法,罗宾逊(Robi-nson)算法等,然而比较有效的方法是杜宾(Durbin )递推算法.下面列出这个算法的主要公式:

(0)(0),E R = (2.3.26)

1(1)

(1)1()()/,(1)

i i i i n j j k R i a R i j E i p ---=??=--≤≤????∑ (2.3.27)

()i j i

a k = (2.3.28)

()(1)(1)

,(11

)i i i j j i i j a a k a j i ---=-≤≤- (2.3.29)

()21(1)i i i E k E -=- (2.3.30)

由(2.3.26)式至(2.3.30)式,可以对i =1,2,···,P 进行递推求解,而最终解为

(),(1)

p j j a a j p =≤≤ (2.3.31)

在上面的表达式中,上述括号内的值表示预测器阶数,即()i j a 表示i 阶预测器的第j 个预测系数。应当指出,对于一个p 阶预测器,在上述求解预测器系数的过程中,阶数低于p 的各阶预测器系数也得到了。

应当指出,(2.3.30)式得到的()

i E 是i 阶预测器的预测误差。计算过程中可以通过(2.3.30)式求得对应阶数为i 的预测器的预测误差.如果自相关系数用一组归一化自相关系数r(k)=R(k)/R(0)来表示,短阵方程的解不变。此时,预测误差()

i E 将变成归一化预测误差,用()

i V 表

示i 阶预测器归一化预测误差,则表示为

()

()

(0)i i E V

R =

(2.3.32)

如果假定

()()/(0)r k R k R = (2.3.33)

()

()

()11(),(01;0)

i

i k i k k V

a r k V i ==-<≤≥∑ (2.3.34)

式中

(11)i k -≤≤ (2.3.35)

(2.3.35)式表明,i k 的取恒范围在土l 范围内。可以证明,它是多项式A(z)的根在单位圆内的充要条件。由此可以保证系统H(z)的稳定性。

2.3.3 利用格型法求解线性预测系数

从前面讨论的方法来看,不论是自相关法还是协方差法,都是分为两步: ①计算语音相关值的矩阵;

②解一组线性方程求出预测系数i a 。

但是,在语音相关值的计算中,特别是在语音段的端点处,由于作了与实际情况不同的假设,因而相关值计算误差较大,影响到线性预测系数汁算结果的准确性。所以,导致了另一类算法的发展,这就是格型法。七十年代初,日本学者板仓(Itakura )在美国从事研究时,在分析自相关法的基础上,引入了“正向预测”和“反向预测”的概念,阐述了参数i k 的物理意义,首先提出了逆滤波器A(z)的格型结构形式。由下面的讨论可知,这种格型法不需要用窗口函数对信号进行加权,同时又保认解的稳定性,因而较好地解决了精度和稳定性之间的矛盾。特别是.由于引入了正向预测和反向预测的概念,使均方误差最小逼近难则的运用增加了很大的灵活性,派生出了一系列基于格型结构的新的线性预测算法。

在Levinson-Durbin 递推算法中,如果计算出第i 阶的线性预测系数为(()i j a ,j =l ,2,…,i),利用这些系数可以计算第i 阶逆滤波器(或称为预测误差滤波器)的系统函数为

()

()1

1

()1i

i i j j A z a z -==-∑ (2.3.36)

这个滤波器的输人信号是s(n),输出信号为预测误差()()i e n ,它们之间的关系为

()

()1

()()()

i

i i j j e n s n a s n j ==--∑ (2.3.37)

经过推导,可知第i 阶线性预测逆滤波器输出可分解为两个部分,第一部分足(i —1)阶滤波器的输出()()i e n ;第二部分是与(i —1)阶有关的输出信号(1)()i b n -,经过单位移序和i k 加权后的信号。下面讨论这两部分信号的物理意义。将这两部分信号定义为正向预测误差信号()()i e n 和反向预测误差信号()()i b n

()

()1

()()()

i

i i j j e n s n a s n j ==--∑ (2.3.38)

()

()1

()()()

i

i i j j b n s n i a s n i j ==---+∑ (2.3.39)

式(2.3.38)中的()()i e n 即是通常的线性预测误差,它是用i 个过去的样本值:s(n —1)、s(n —2)、...、s(n-i)来预测s(n)时的误差;而式(2.3.39)中的()()i b n 可看成是用时间上延迟时刻的样本值s(n-i+1),s(n-i+2),…,s(n)预测s(n-i)样本的误差,所以整个误差称为反向预测误差。这个预测过程称为反向预测过程。在建立了正向预测和反向预测的概念后.就可以推出线性预测分析用的格型滤波器结构。

根据式(2.3.38)和(2.3.39),当i=0时,有

(0)(0)()()()e n b n s n == (2.3.40)

而i=p 时

()()()p e n e n = (2.3.41)

这里()e n 是P 价线性预测逆滤波器所输出的预测误差信号,如果改用符号()

()i f n 表示正向预测误差

()

()p e n ,则可写成如下递推形式 ()

(1)

(1)

21

()(1)(1)

(0)(0)()()(1)()()(1)()()()()n

i i i i i i i i i i f

n f

n k b

n X X b n b n k f n f n b n s n --=--?

=---?

??=--?

?

==?

??∑ (2.3.42)

)

(1n f )

(2n f 1n -)

(n

这个滤波器输入为s(n),输出为正向预测误差()

()p f n ,亦即预测误差e(n)。另一方面,

在图6—2所示语音信号模型化的框图中,模型即合成波器的H (z )亦可采用格型结构。如果将模型中的增益因子G 考虑到输入信号中,则该滤波器输入是Gu(n),输出是合成的语音s(n)。通过线性预测分析求得的A (z )是H (z )的逆滤波器,Gu(n)则由e(n)来逼近,因此合成滤波器H(z)的结构形式应该满足输入e(n)时输出语音信号s(n)。将式(2.3.42)进行整理,可得

(1)()(1)()(1)(1)()()(1)()(1)()i i i i i i i i f n f n k b n b n b n k f n ----?=+-?

?

=--?? (2.3.43)

)

)(n u

反射系数是语音处理中至关重要的参数,它的计算是一个重要问题。在自相关法和协方差法中,用预测误差最小为条件求出线性预测系数。格型法的特点之一是能够在格型的每一级进行合适的本级反射系数计算。

显然,格型法的结构与前面讨论的自相关法和协方差法的结构之间存在若干差异。格型滤波器的优点为:

①反射系数可被直接用于计算预测系数,格型滤波器的级数等于预测系数的个数。 ②格型滤波器的稳定性可由其反射系数的值来判定。可以证明,格型滤波器稳定的充要条件是:

i

k <1。

下面,我们进行格型法的求解 式(2.3.38)的Z 变换可以表示为

()()()()()i i E z A z S z = (2.3.44)

将(2.3.29)式

()(1)(1)

,(

11)i i i j j i i j a a k a j i ---=-≤≤-代入到(2.3.36)式,可以从

(1)

()i A z -递推求解()()i A z ,将式()(1)(1)1()()()i i i i i A z A z k z A z ----=-代人到(2.3.44)式可得

()(1)(1)1()()()()()i i i i i E z A z S z k z A z S z ----=- (2.3.45)

取(2.3.39)式的Z 变换得

()()1()()()i i i B z z A z S z --= (2.3.46)

利用(2.3.46)式球得(2.3.45)式的Z 反变换形式为

()(1)(1)()()(1)i i i i e n e n k b n --=-- (2.3.47)

同理可推得

()(1)(1)()(1)()i i i i b n b n k e n --=-- (2.3.48)

伯格(Burg )提出了一种算法,它是基于使正反向预测误差的平方和()

i E ∧

为最小,()

i E ∧可以表示为

1

()

()2()2

0(())(())N i i i n E

e n b n ∧

-=??=+??∑ (2.3.49) 将(2.3.47)式和(2.3.48)式代入(2.3.49)式,可得

1

()

(1)(1)2(1)(1)2

0(()(1))((1)())N i i i i i i i n E

e n k b n b n k e n ∧-----=??=--+--??∑ (2.3.50) 令

()

0i i

E

k ∧

?=? (2.3.51)

可求出i k 为

1

(1)(1)

()0

1

1

2

2

(1)(1)

2()(1)()(1)N i i i n i i N N i i n n e n b n k a e n b n ---=----==??-??=

=????+-????∑∑∑ (2.3.52)

上式说明,i k 将正向与反向预测误差联系起来了,它表示正向与反向预测误差的相关度,故称参数i k 为部分相关系数(PARCOR 系数)。i k 的取值范围为

11i k -≤≤ (2.3.53)

格型算法的步骤可以归纳如下:

(1) 确定初始值:

(0)(0)

()()()e n b n s n == (2) 由(2.3.52)式可以求得

1

(0)(0)

(1)0

111

1

2

2

(0)

(0)

2()(1)()(1)N n N N n n e n b n k a e

n b n -=--==??-??==

????+-????

∑∑∑

(3) 由(2.3.47)式和(2.3.48)式计算正向和反向预测误差:

()(1)(1)()()(1)i i i i e n e n k b n --=-- ()(1)(1)()(1)()i i i i b n b n k e n --=--

(4) 设i=2。

(5) 由(2.3.52)式求k i

1

(1)(1)

()

1

1

2

2

(1)(1)0

2()(1)()(1)N i i i n i i N N i i n n e n b n k a e n b n ---=----==??-??=

=????+-????∑∑∑

(6) 由(2.3.29)式决定()i j a ,(j=1,2,…,i-1),

()(1)(1),(11

)i i i j j i i j a a k a j i ---=-≤≤-

(7) 同(3)。

(8) 设i=i+1。

(9) 若i ≤p ,重复(5)(6)(7),否则(10)。 (10)结束。

由于格型算法不需要计算自相关函数,可以直接从语音取样中求得预测系数,因而避免了语音端点处具有比较大的相关函数误差的缺点。此外,格型算法能保证产生一个稳定的滤波器,不要求窗选。上述的这些特性,格型法对于构成线性预测分析系统已成为一种重要的极有生命力的方法。

2.4 各种算法的比较

前面我们已经讨论了线性预测方程组的协方差算法,自相关算法和格型算法。在这一节中,我们将对这些算法在计算效率与存储要求,以及解的稳定性、选择极点个数和分析段长度等方面进行比较。

首先,在存储量方面,若1N 是协方差法分析取样点的数目,则协方差法要求的存储量为1

N 个数据和数量级为正比于2/2p 的相关矩阵元素储存位置。若2N 是自相关法分析取样点的点数,则自相关法需要2N 个位置来存储数据和窗函数,需要数量级正比于p 的位置来存储自相关矩阵元素。若N3为格型法分析取样点的点数,则格型法需要3 3N 个位置来存储数据和正反向预测误差。综上所述,协方差法和自相关法所需的存储量比格型法少。

在运算量方面,对于协方差法,相关矩阵的计算需要的乘法次数正比于1N P ,而用乔里斯基方法解矩阵方程需要的乘法次数正比于3p 。对于自相关法,自相关矩阵的计算需要的乘法次数正比于2N p ,而矩阵方程的解需要的乘法次数正比于2p 。因此,如果1N 和2N 近似相等,且1N ≥P ,2N ≥P ,则自相关方法所要求的运算量略少于协方差法。由于计算相关函数的运其量大大超过解矩阵方程的乘法次数。因比,自相关法的运算次数和协方差法是非常接近的。对于格型法,计算部分相关系数需要5 3N p 次乘法。因而格型法的运算量较大。表2.1列出了解线性预测方程的各种解法在存储量和运算量方面的比较。

表2.1 LPC 各种解法的比较

在解的稳定性方面,也就是所得到的系统

()()G

H z A z =

(2.4.1)

是否稳定,若()H z 的所有极点位于单位圆内,则系统稳定,亦即要求

1

1

()1p

j j A z a z -==-∑ (2.4.2)

的所有零点位于单位圆内。对于自相关法,A(s)的所有根位于单位圆内,因而其解是稳定的。但是应当指出,如果计算自相关函数的精度不够,那么解的稳定性就不能保证。实验结果表明,如果对语音进行预加重,使其谱尽可能平滑,则可以使不稳定性尽可能避免。杜宾算法中利用下式作为检验稳定性的方法,即部分相关系数i k 满足

11i k -≤≤ (2.4.3)

满足上述条件就满足了解的稳定的充要条件。对于协方差法,测器解的稳定性是不能保证的。然而,当每个分析帧的取样点数足够大,协方差法和自相关法所得的结果相同,则协

相关主题
相关文档
最新文档