线性预测编码(LPC)是主要用于音频信号处理与语音处理中根据线性预测模型的信息用压缩形式表示数字语音信号谱包络(en:spectral envelope)的工具。它是最有效的语音分析技术之一,也是低位速下编码方法高质量语音最有用的方法之一,它能够提供非常精确的语音参数预测。
综述
线性预测编码的基础是假设声音信号(浊音)是音管末端的蜂鸣器产生的,偶尔伴随有嘶嘶声与爆破声(齿擦音与
爆破音)。尽管这看起来有些原始,但是这种模式实际上非常接近于真实语音产生过程。声带之间的
声门产生不同强度(音量)与频率(音调)的声音,喉咙与嘴组成共鸣声道。嘶嘶声与爆破声通过舌头、嘴唇以及喉咙的作用产生出来。
线性预测编码通过估计共振峰、剔除它们在语音信号中的作用、估计保留的蜂鸣音强度与频率来分析语音信号。剔除共振峰的过程称为逆滤波,经过这个过程剩余的信号称为残余信号(en:residue)。
描述峰鸣强度与频率、共鸣峰、残余信号的数字可以保存、发送到其它地方。线性预测编码通过逆向的过程合成语音信号:使用蜂鸣参数与残余信号生成源信号、使用共振峰生成表示声道的滤波器,源信号经过滤波器的处理就得到语音信号。
由于语音信号随着时间变化,这个过程是在一段段的语音信号帧上进行处理的。通常每秒 30 到 50 帧的速度就能对可理解的信号进行很好的压缩。
原理
一个时间离散线性系统输出的样本可以用其输入样本和过去的输出样本的线性组合,即线性预测值来逼近。通过使实际输出值和线性预测值之间差的均方值最小的方法能够确定唯一的一组预测器系数。这些系数就是线性组合中所用的加权系数。在这一原理中,系统实际上已被模型化了,这一模型就是零极点模型。它有两种特例:①全极点模型,又称自回归模型。这时预测器只根据输出过去的样本进行预测。②全零点模型,又称滑动平均模型。这时预测器只根据输入样本进行预测。迄今为止,最常用的模型还是全极点模型。这有几个原因:―是全极点模型最易计算;二是在多数情况下,不可能知道输入;三是对语音信号,在不考虑鼻音和部分擦音时,声道的传输函数是一个全极点函数。
模型参数的估值在全极点模型下有两种方法,即自关法和协方差法,它们分别适用于平稳信号和非平稳信号。模型参数的基本形式是线性预测系数,但它还有很多等价的表示形式。不同形式的系数在导致的逆滤波器结构,系统稳定性和量化时要求的比特数等方面都有所不同。现在公认的较好形式是反射系数,它所对应的滤波器具有格型结构,稳定性好量化时要求的比特数也少。
线性预测编码的早期历史
根据
斯坦福大学 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) 开始了语音信息包的第一次开发,这最终带来了
Voice over IP 技术。根据 Lincoln Laboratory 的非正式历史资料记载,1973 年 Ed Hofstetter 实现了第一个 2400 位/秒 的实时 LPC。1974 年,第一个双向实时 LPC 语音包通信在 Culler-Harrison 与 Lincoln Laboratories 之间通过 ARPANET 以 3500 位/秒 的速度实现。1976 年,第一次 LPC 会议通过 ARPANET 使用 Network Voice Protocol 在Culler-Harrison、ISI、SRI 与 LL 之间以 3500 位/秒 的速度实现。最后在 1978 年,BBN 的 Vishwanath et al. 开发了第一个变速 LPC 算法。
线性预测编码系数表示
线性预测编码经常用来传输频谱包络信息,这样它就可以容忍传输误差。由于直接传输滤波器系数(参见
线性预测中系数定义)对于误差非常敏感,所以人们不希望直接传输滤波器系数。换句话说,一个小的误差不会扭曲整个频谱或使整个频谱质量下降,但是一个小的误差可能使预测滤波器变得不稳定。
有许多更加高级的表示方法,如对数面积比(en:log area ratio,LAR)、线谱对(en:line spectral pairs,LSP) 分解以及
反射系数等。在这些方法中,LSP 由于它能够保证预测器的稳定性、并且小的系数偏差带来的谱误差也是局部的这些特性,所以得到了广泛应用。
应用
线性预测编码通常用于语音的重新合成,它是电话公司使用的声音压缩格式,如
GSM 标准就在使用这种格式。它还用作
安全无线通信中的格式,在安全的无线通信中,声音必须进行
数字化、
加密然后通过狭窄的语音信道传输。
线性预测编码合成也可以用于构建声音合成器,乐器用作从歌手声音预测得到的时变滤波器的激励信号,这在
电子音乐中有一定的流行。
1980年流行的
Speak & Spell 教育玩具中使用了一个 10 阶的线性预测编码。
在
FLAC 音频编解码器中使用了 0 到 4 阶的线性预测编码预测器。