基于线性预测的语音编码原理解析
- 技术文章
早期的音频系统都是基于声音的模拟信号实现的,在声音的录制、编辑和播放过程中很容易引入各种噪声,从而导致信号的失真。随着信息技术的发展,数字信号处理技术在越来越多领域得到了应用,数字信号更是具备了易于存储和远距离传输、没有累积失真、抗干扰能力强等等,信号和信号处理都往数字化发展。为了使得数字音频可以被高效地压缩存储并高品质地还原,数字音频的编码技术就变成至关重要的一个部分了。本篇文章会介绍当今的音频的编码器(传统算法非深度学习)的两大主流阵营之一的基于线性预测的语音编码器的原理。
#01
音频的编码器分类及简介
比较流行基于传统算法的音频的编码器基本可以分成两个大的类别:
Audio Codec(音频编码器): aac, mp3, ogg, celt(inside of opus) ...
Speech Codec(语音编码器): ilbc, isac, silk(inside of opus) ...
因为应用领域的需求完全不一样。Audio Codec的应用领域更多和音乐有关,研究的是在保证尽量小的感知失真的前提下,对声音进行压缩编码。早期mp3想要实现高品质所需要的编码码率还是比较高的,压缩比并不高。而早期的数字电信系统的带宽有限,如何可以用尽量小的带宽实现可以还原出清晰的语音则成了Speech Codec的任务。更多在8kHz和16kHz采样率下实现较低码率的编码。
#02
1. 人的发声模型

由肺和气管产生生气源
喉和声带组成声门
咽腔,口腔,鼻腔等组成声道
2. 语音信号的一般分类
浊音:空气流经过声带时,声带呈紧绷状态,并产生张弛振动,即声带进行周期性的开启和闭合,空气流经过声带后形成一个一个脉冲,然后再经过各种声道的共鸣作用,最后形成浊音。浊音典型波形如下图:
非常的周期性
轻音:空气流经过声带时,声带呈放松状态,之后在进入声道时,如果声道收缩,则气流被迫高速通过,最终产生摩擦音或者清音,如果声道某个部位完全闭合,气流经过这里则受到阻塞,气压增大,然后闭合点突然开启则最终产生爆破音。清音典型波形如下图:
无明显周期性
浊音的语音激励近似为:脉冲信号
清音的语音激励近似为:白噪声
所以整个语音产生可以描述为一个系统,叫Speech Source-Filter Model,如下图所示:
从这个模型我们可以看出来,语音的激励本身不是脉冲信号就是白噪声,基本上频谱都是比较平的,且基本不包含实际信息。而语音本身所包含的复杂信息主要是由变化的声道的处理形成的。而语音信号本身又符合短时平稳的特性。那么语音信号编码器的一个朴素的编码思想就在这里形成了:
是不是可以针对每个短时语音序列分析,由于语音的复杂性基本由声道处理形成,尝试对于这个短时语音信号的声道进行建模,然后再把简单的语音激励信号和声道模型进行编码,解码的时候就可以利用语音的激励信号,再次通过声道模型,从而让这个语音再次“说”一遍。
#03
线性预测编码(LPC, Linear predictive coding)是主要用于音频信号处理与语音处理中根据线性预测模型的信息用压缩形式表示数字语音信号谱包络(spectral envelope)的工具。它是最有效的语音分析技术之一,也是低码率下编码高质量语音最有用的方法之一,它能够提供非常精确的语音参数预测。
其系统函数为:
此时线性预测的问题就变成求出一组预测系数{

另外增益模型也可以利用激励信号的为白噪声的均方误差为1且自相关函数为0的特性得出:
PS: 即使在浊音的情况下,由于一串脉冲信号在大部分时间也是非常小的,所以使用最小的预测误差e(n)逼近u(n)和u(n)能量很小不矛盾。
#04
全极点模型的参数在可以计算的前提下,实际应用特别是对编码传输来说还是有很大痛点:
解方程需要求矩阵的逆,非常的消耗计算量;
AR的模型里面使用的是FIR滤波器,直接型FIR特别是高阶的对于滤波系数的量化误差异常敏感。
1. Levinson-Durbin算法

2. 格型滤波器
那么既然反射系数
原本FIR滤波器的时域差分方程为:
再将公式(10)带入并推导,最后得到的时域解释为:
这里
前向和后向表达里的预测系数
那么根据(13)(14)递推公式,已知我们知道s[n]求

而语音的发声的全极点建模如下图:

缺点:输出每个样本所经历的计算量是普通直接型滤波器的两倍。
优点:只要保证反射系数
,就不会使得系统不稳定。
#05

有图可见,降低LPC的全极点模型的阶数和原信号的频谱的对比表明了,其重建信号在阶数越低的情况下其频谱包络越平滑(如图:p=12),而越高的阶数(p=40)则能表现更多的细节。所以基于LPC的编码器的码率肯定会影响模型的阶数和量化的精度,由此也能看出重建声音在低码率下的音质并不能表现更多细节了。
#06