语音编码原理
在音频编码中存在着三种编码思路:
(1)波形编码:与其他音频信号一样,语音编码也是音频信号的一种,可以和其他信号一样采用波形编码。通过超过奈奎斯特频率的采样,然后量化、利用波形的相关性编码。这样的编码对应编码速率要求高,压缩率也小。
(2)参量编码:这种编码的思路是解构人发出语音的发声过程,将人发出的不同的声音抽象成相同的白噪声或者是周期性信号通过不同参数的滤波器而产生的随机信号。因此在传输过程中,仅仅需要传几个滤波器参数即可。而滤波器的阶数越高,则所需要传输的参数越多,信号的质量也越好。
(3)混合编码:既然是混合,就是在波形编码和参量编码做出了折中,在中低速率的基础上,利用复杂的算法,尽可能来获取高质量语音。
而下面所讲的语音编码,就属于参量编码。
参量编码的三种模型
人的声道被建模成上图的模型,当噪声信号输入是,输出为一个随机信号。
MA模型
MA 模型用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。
q表示系统阶数,系统函数只有零点,没有极点,所以该系统一定是稳定的系统,也称为全零点模型,用 MA(q)来表示。
AR模型
仅通过时间序列变量的自身历史观测值来反映有关因素对预测目标的影响和作用,不受模型变量相互独立的假设条件约束。p 是系统阶数,系统函数中只有极点,无零点,也称为全极点模型,系统由于极点的原因,要考虑到系统的稳定性,因而要注意极点的分布位置,用 AR( p )来表示。
ARMA模型
它既有零点又有极点,所以也称极零点模型,要考虑极零点的分布位置,保证系统的稳定, 用 ARMR( p ,q)表示。
在随机信号时域分析中,提出了许多数学模型用来由已知在最大不确定原则下预测将来值,其优点是只需要很少的已知值。但是它不能用在信号是确定性的场合,在确定信号的情况下,信号是由确定的数学方程预测的。这点要特别注意。例如,如果我们用心电的 R 波升枝作已知数据进行随机预测,则预测值即为与 R 波上升枝有关的数据,决不可能预测出整个 P- QRS-T 复合波来。
AR模型的求解
语音编码大多使用的是AR模型
AR模型参数与信号的自相关函数存在如下关系:
利用将AR模型的输入输出等式两边同乘x(n-m)后求均值,经过化简以及自相关函数公式可得:
将上式化作矩阵形式
由于自相关函数是偶对称函数,因而自相关矩阵是对称矩阵,与主对角线平行的斜对角线的元素都是相同的。根据输入信号的自相关函数求解参数可用Levinson-Durbin(L-D)算法。
对于上述算法,可用matlab中自带函数:[a E] = aryule(x,p)实现,其中x为输入数据,p为阶数。输出a为估计的模型参数,E为噪声信号的方差估计。
实验
得到结果为:
3阶滤波器的噪声信号方差估计e3=0.4678
12阶滤波器的噪声信号方差估计e12=0.3783
三阶的参数与真实 AR 模型参数误差为:e1 =0.1151,e2 =0.1002, e3=0.0498,原因在于我们只有一部分序列得出的预测值。
对于方差的预测误差很大,原因在于虽然信号的输入方差为1,但是只有32点序列不可能方差为1。
求解模型算法改进与最优阶数
为了克服 L-D 算法导致的误差,1968 年 Burg 提出了 Burg 算法,其基本思想是对观测的数据进行前向和后向预测,然后让两者的均方误差之和为最小作为估计的准则估计处反射系数,进而通过 L-D 算法的递推公式求出 AR 模型参数。Burg 算法的优点是,求得的 AR模型是稳定的,较高的计算效率,但递推还是用的 L-D 算法,因此仍然存在明显的缺点。
为了确定最优的阶数,提出了最终预测误差准则(fpe):给定观测长度为 N,从某个过程的一次观测数据中估计到了预测系数,然后用该预测系数构成的系统处理另一次观察数据,则有预测均方误差,该误差在某个阶数p时为最小,其表达式为:
上式中估计的方差随着阶数的增加而减小,而括号内的值随着p的增加而增加,因而能找到一最佳的p,使得 FPE 最小。