手机对话中的语音处理(一)
本系列文章由 @YhL_Leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50311869
尽管大多数人认为手机是传统有线电话服务的延伸,事实上,手机技术是极其复杂而且堪称神奇的技术。很少有人意识到这些小型设备为了维持一个电话谈话需要每秒执行数百万次的计算,如果我们细看将语音电子信号转换为比特序列的模块,就会发现每20毫秒的输入语音就会被计算出一组语音参数然后传输到接收端,之后接收端再将这组参数转换为语音。本文将介绍手机语音传输中的核心——线性预测分析合成技术 (linear predictive (LP) analysis-synthesis)。
世界首款商用移动手机 Motorola DynaTAC 8000x
1 语音的线性预测处理背景
语音是由我们喉咙产生的一种激励信号,通过声带、鼻、咽部等共振调整出每个人所具有的不同的形式。这种激励信号,可以通过我们周期性地开启和关闭声带产生(例如语音中的元音),也可以仅仅是一些肺部推动的连续气流(例如语音中末尾的语气音),或者是两种结合在一起的方式等。
图 1 一段30毫秒的声音信号
如图 1所示,一段30毫秒的声音信号(底部)和它对应的波谱(这里显示的是其FFT的大小)。其中
1.1 语音的线性预测处理模型
早在1960年,Fant就提出一种语音的线性处理模型,称之为source-filter
模型。它基于这样的假设:声门和声道是完全分离的。这个模型最终由Rabiner and Shafer(1978)发展成为有名的线性预测模型(linear predictive,LP)或者称为自我回归模型(autoregressive,AR),后来又被逐渐被广泛应用在语音编码中,所以也被称为语音线性预测编码模型(linear predictive coding,LPC):
其中,
图 2 语音生成的LP模型
在这一模型中,LP模型的激励被认为是一串定期间隔的脉冲(其周期
公式
1.2 LP估值算法
给定一个固定的短暂语音信号,实际处理中的常常遇到的问题是如何获得一组最佳的预测系数,使得模型的误差最小化,即使原始信号和经过图 2过程处理后的信号之间可以听出的差异最小化。因此,需要估算的LP模型参数:Pitch周期
Pitch和V/UV决策是比较难的问题,虽然语音虽然看起来像是周期性的,但是真实的情况绝不是这样的。声门的周期振幅在不同周期间具有差异性,而周期内也不是常数。而且显示出的语音波形仅仅是经过过滤的声门脉冲(如采样)而不是原始脉冲本身,这就使得实际测量
值得庆幸的是,估算
由此,我们可以得到公式
图 2 语音逆滤波过程
而LP估值算法的核心思想就是,选择一组最优的
事实上,一组固定的语音信号
根据公式
在上述方程中,
需要注意的是,可以看出公式
1.3 LP处理的实际应用
如果语音是非固定的(比如一系列连续的对话,对整体直接分析,基本不可能),LP模型一般被依次作用在每个语音帧上(类似于视频的图像帧,这里由于语音信号是离散的数字序列,一般的做法是每次取出30毫秒的语音作为一个信号帧,帧和帧之间有20毫秒的重叠,很像图像处理中的滑动窗口,见图 3),由于时间间隔很短,假设发音的肌肉具有惯性,相邻语音帧之间是相互关联的,而且每个语音帧都可以适用1.2小节中所假设的固定语音信号的处理方法。
图 3 语音帧和采样示意图
语音采样通常使用加权窗(典型的方法如30毫秒长的Hamming 窗,见图 4)。这样可以抑制每个语音帧的前
图 4 Hamming 窗及其DTFT变换
至于自相关系数
关于方程levinson
,详情可见Levinson-Durbin recursion。根据上面的解算,对于每一语音帧,都可以解算出其对应的预测系数
因此,完整的LPC语音分析-合成算法系统,可以表示为图 5:
图 5 LPC语音分析-合成示意图