线性预测编码

维基百科,自由的百科全书
跳转至: 导航搜索

线性预测编码(LPC)是主要用于音频信号处理语音处理中根据线性预测模型的信息用压缩形式表示数字语音信号谱包络en:spectral envelope)的工具。它是最有效的语音分析技术之一,也是低位速下编码方法高质量语音最有用的方法之一,它能够提供非常精确的语音参数预测。

综述[编辑]

线性预测编码的基本思想是:一个语音取样的现在值可以用若干个语音取样过去值的加权线性组合来逼近。在线性组合中的加权系数称为预测器系数。通过使实际语音抽样和线性预测抽样之间差值的平方和达到最小值,能够决定唯一的一组预测器系数。

线性预测编码通过估计共振峰、剔除它们在语音信号中的作用、估计保留的蜂鸣音强度与频率来分析语音信号。剔除共振峰的过程称为逆滤波,经过这个过程剩余的信号称为残余信号(residue)。

描述峰鸣强度与频率、共鸣峰、残余信号的数字可以保存、发送到其它地方。线性预测编码通过逆向的过程合成语音信号:使用蜂鸣参数与残余信号生成源信号、使用共振峰生成表示声道的滤波器,源信号经过滤波器的处理就得到语音信号。

由于语音信号是一种非平稳的时变信号又同时具有短时平稳性,这个过程是在一段段的语音信号帧上进行处理的。通常每秒30到50帧的速度就能对可理解的信号进行很好的压缩。

线性预测编码的早期历史[编辑]

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

1972年ARPABob 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阶的线性预测编码预测器。

参考文献[编辑]

参见[编辑]