语音编码
第一章 音频
1.1 音频和语音的定义
声音是携带信息的重要媒体,是通过空气传播的一种连续的波,叫声波。对声音信号的分析表明,声音信号有许多频率不同的信号组成,这类信号称为复合信号。而单一频率的信号称为分量信号。声音信号的两个基本参数频率和幅度。
1.1.1 声音信号的数字化
声音数字化包括采样和量化。采样频率由采样定理给出。
1.1.2 声音质量划分
根据声音频带,声音质量分5个等级,依次为:电话、调幅广播、调频广播、光盘、数字录音带DAT(digital audio tape)的声音。
第二章 语音编码技术的发展和分类
现有的语音编码器大体可以分三种类型:波形编码器、音源编码器和混合编码器。一般来说,波形编码器的话音质量高,但数据率也很高。音源编码器的数据率很低,产生的合成话音音质有待提高。混合编码器使用音源编码器和波形编码器技术,数据率和音质介于二者之间。语音编码性能指标主要有比特速率、时延、复杂性和还原质量。
其中语音编码的三种最常用的技术是脉冲编码调制(PCM)、差分PCM(DPCM)和增量调制(DM)。通常,公共交换电话网中的数字电话都采用这三种技术。第二类语音数字化方法主要与用于窄带传输系统或有限容量的数字设备的语音编码器有关。采用该数字化技术的设备一般被称为声码器,声码器技术现在开始展开应用,特别是用于帧中继和IP上的语音。
在具体的编码实现(如VoIP)中除压缩编码技术外,人们还应用许多其它节省带宽的技术来减少语音所占带宽,优化网络资源。静音抑制技术可将连接中的静音数据消除。语音活动检测(SAD)技术可以用来动态跟踪噪音电平,并将噪音可听度抑制到最小,并确保话路两端的语音质量和自然声音的连接。回声消除技术监听回声信号,并将它从听话人的语音信号中清除。处理话音抖动的技术则将能导致通话音质下降的信道延时与信道抖动平滑掉。
2.1波形编码
波形编解码器的思想是,编码前根据采样定理对模拟语音信号进行采样,然后进行幅度量化与二进制编码。它不利用生成语音信号的任何知识而企图产生重构信号,其波形与原始话音尽可能一致。
最简单的脉冲编码调制(PCM),即线性PCM,对语音作数/模变换后再由低通滤波器恢复出现原始的模拟语音波形。在数据率为64Kbps的时候,重构话音质量几乎与原始的话音信号没有什么差别。该量化器在20世纪80年代标准化,在美洲的压扩标准是μ律(μ-Law),在欧洲的压扩标准是A律(A-Law)。它们的优点是编解码器简单,延迟时间短,音质高。不足之处是数据速率比较高,对传输通道的错误比较敏感。
线性PCM编码还可以通过非线性量化、前后样值的差分、自适应预测等方法实现数据压缩。比如差分脉冲编码调制DPCM使用预测技术,认为话音样本之间存在相关性,因此它试图从过去的样本来预测下一个样本的值。但是这种方法对幅度急剧变化的输入信号会产生大的噪声。改进方法之一是使用自适应的预测器和量化器。如自适应差分脉冲编码调制ADPCM。
另外一种频域波形编码技术叫自适应变换编码ATC。这种方法使用快速变换(如DCT)把话音信号分解成多频带,用来表示每个变换系数的位数取决于话音谱的性质,数据率可低到16Kbps。
波形编码的方法简单,数码率较高,在64Kbps至32Kbps之间音质优良,当数码率低于32Kbps的时候音质明显降低,16 Kbps时音质非常差。
2.2信源编码
信源编码器又称为声码器,是根据人的发声机理,在编码端对语音信号进行分析,从话音波形信号中提取出话音参数,并使用这些参数通过话音生成模型重构话音。声码器每隔一定时间分析一次语音,传送分析获得的有/无声和滤波参数。在解码端根据接收的参数再合成声音。声码器编码码率很低,可以达到1.2K---2.4Kbps,但复杂度比较高,合成语音质量较差。尽管其音质较差,但因保密性能好,一般用于军事领域。
2.3混合编码
混合编码是将波形编码和信源编码的原理结合起来,数码率约在4Kbps—16Kbps之间,音质比较好,性能较好的算法所取得的音质甚至可与波形编码相当,该类算法复杂程度介于波形编码和信源编码之间。
上述的三类语音编码方案还可以分成许多不同的编码方案。
第三章 G.729编码原理与实现
1995年,国际电联批准了一个被称为G.729的新的话音压缩建议。该建议的全称为:8Kbps速率下使用共轭结构算术编码激励的线性预测编码(CS_ACELP)。该建议的算法采用8Kbps的带宽传输话音,话音质量与32KbpsADPCM(差分脉冲编码调制)相同。此后,这一压缩话音标准又得到了进一步的优化改进。
3.1介绍
G.729建议包含使用共轭结构算术编码激励的线性预测编码(CS_ACELP)的算法描述。
G.729编码器的输入是对模拟输入信号先用电话带宽滤波并按8000Hz频率采样、然后转换为16比特线性PCM的数字信号。解码器的输出则采用类似的方法转换回模拟信号。
本章主要给出一个关于CS_ACELP的概述,并简要讨论CS_ACELP编码器和解码器原理。
3.2 概述
CS_ACELP编码器是基于编码激励线性预测编码模型的。编码器针对在8KHz采样频率下长度为10毫秒的语音帧进行编码,每帧包含80个采样。对于每个10毫秒的帧,编码器对语音信号进行分析,抽取CELP模型(线性预测滤波器系数,自适应/固定码本索引和增益)。这些参数经过编码并被传输。编码器参数的比特分配如表1中所示。在解码端,这些参数被用来提取激励和合成滤波器系数。这些激励通过短期合成滤波器滤波后,语音获得重建,如图1所示。短期合成滤波器基于10次线性(LP)滤波器。长期合成滤波器(音节合成滤波器)由使用被称作适应码本的方法实现。语音重建计算完成后,还要继续经过后处理滤波器增强。
表1
参数 |
码字 |
子帧1 |
子帧2 |
每帧合计 |
线性谱对 |
L0,L1,L2,L3 |
|
|
18 |
适应码本延迟 |
P1,P2 |
8 |
5 |
13 |
音节延迟奇偶 |
P0 |
1 |
|
1 |
固定码本索引 |
C1,C2 |
13 |
13 |
26 |
固定码本符号 |
S1,S2 |
4 |
4 |
8 |
码本增益(阶段1) |
GA1,GA2 |
3 |
3 |
6 |
码本增益(阶段2) |
GB1,GB2 |
4 |
4 |
8 |
总计 |
|
|
|
80 |
图1 CELP模型框图
该建议的语音编码算法的描述是以位相关的定点数学运算进行的。编码器和解码器的数学描述也可以用几种其它的方法实现,但可能会导致编解码器的具体实现与该建议不完全一致。
3.3 标注习惯
在本文中都保持如下的标注习惯:
。码本用斜体字母标注(如C)
。时域信号用它们的符号和用括号括住的采样下标表示[如s(n)]。符号n用作采样下标。
。括号中的上标(如g(m) )用来指示时域相关的变量。根据上下文,变量m指示一帧或一子帧的序号,变量n用于指示采样序号。
。递归序号用方括号中的上标表示(如E[k])
。下标序号指示一个系数数组中的某个元素。
。符号^指示一个量化版本的参数(如g^c)
。参数范围用方括号括住,并包含边界(如[0.6,0.9])
。函数log表示以10为底的对数
。函数int表示取整
。使用的十进制浮点数是16比特定点ANSI C实现的一个近似版本
表2列出了建议中最密切相关的符号。表3总结了建议中的字母缩写。
表 2相关符号描述
|
|
表 3 词汇缩写
3.3 编码器原理
编码原理如图2所示。输入信号在预处理模块中经过高通滤波并缩放。预处理信号作为所有后续分析的输入信号。在每个10毫秒帧中都要进行LP分析,计算出LP滤波器系数。这些系数转换为线性谱对(LSP),并使用有两个阶段的预测向量量化器(VQ)进行18比特量化。然后编码器通过使用分析-合成搜索过程选择激励信号,在该搜索过程中,原始语音和重建语音间基于感知加权失真方法的误差会降低到最低。感知加权是自适应的,可以提高具有平缓频谱响应的输入信号的性能。
激励参数(固定与自适应码本参数)在每个5毫秒的子帧(40个采样)中决定。量化的和未量化的LP滤波器系数用于第二个子帧,而第一个子帧中使用内插LP滤波器系数(包括量化的与未量化的)。开环音节延迟根据感知权重的语音信号每10毫秒帧估计一次。然后下面的操作对每个子帧都要重复进行。LP残差经过加权滤波器W(z)/A(z) 滤波计算出目标信号x(n)。这些滤波器的初始状态在对LP残差和激励的误差率波后更新。这等价于普通的方法从加权语音信号中消除加权合成滤波器的零输入响应。加权合成滤波器脉冲响应h(n)被计算,利用目标信号x(n)和脉冲响应h(n),通过搜索开环音节延迟,进行闭环音节分析(主要用于得到自适应码本延迟和增益),这里使用了1/3分辨率的音节延迟。在第一个子帧中音节延迟用8比特编码,但在第二个子帧中采用5比特编码。通过消除(滤波后的)自适应码本分量,目标信号x(n)得到更新,新的目标x’(n)在固定码本搜索中用来寻找最优激励。一个17比特的算术码本用于固定码本激励。自适应与固定码本增益采用7比特向量量化(对固定码本增益采用MA预测)。滤波器存储空间用最后得到的激励信号更新。
3.4解码器原理
解码器原理如图3中表示。首先,参数的索引从获得的码流中提取出来。这些参数(LP滤波器系数,自适应码本向量,定码本向量与增益)被解码,获得对应于10毫秒语音帧的编码器参数。这些参数即LSP系数、两个音节延迟、两组自适应和固定码本增益。LSP系数经过内插,并转换为每个子帧的LP滤波器系数。然后,对每个5毫秒的子帧进行如下步骤:
。增加经各自增益缩放的自适应和固定码本向量,重建激励
。激励通过LP合成滤波器,语音重建
。重建的语音信号经过后处理阶段,在这个阶段中包含基于长期/短期合成滤波器的自适应后滤波,并需要高通滤波和放大操作。
3.4 延迟
编码器采用长为10毫秒的帧编码语音和其他音频信号。此外,编码器还有5毫秒的前瞻,因此算法的总延迟为15毫秒。在实际的编码器实现中所有附加延迟有:
。编解码操作所需要的处理时间
。通信链路上的传输时间
。将音频数据与其它数据绑定的复用延迟
图2 编码器原理图
图3 解码器原理图
3.5 G .729扩展建议(附件D)
1998年在爱立信等机构的推动下推出了G.729建议的附件D。该附件提供了较G .729 码 率更低(6.4Kbps)的算法扩展,目的是增强G.729建议的灵活性,如过载处理。该附件不能提供与G.729建议主体算法相同的音质,但是在绝大多数情况下,它可以提供明显优于G.728建议(24Kbps)的音质。本小节仅仅介绍该附件与G.729建议不同的地方。
3.5.1 概述
下面总结了附件D的算法与G.729建议的主体算法仅有的几处差别。
1) ACELP码本被替换为新的码本
2) 增益共轭码本替换为新的6比特共轭码本
3) 第二子帧中使用了新的音节延迟编码,比特数降低为4比特
4) 增加了一项后滤波技术来减少稀疏算术码本的影响
5) 剔除了音节延迟奇偶位
新的编码器采用6.4Kbps(每帧64比特)来代替原建议中的8.0Kbps(每帧80比特)速率。
3.5.2 比特分配
表 4 6.4 Kbps G.729算法的比特分配
参数 |
每帧比特数 |
LP 参数 |
18 |
自适应码本 |
8 + 4 |
固定码本 |
2 * 11 |
增益量化 |
2 * 6 |
总计 |
64 |
注:加重数字表示与原G.729建议不同之处 |
表 5
传输参数索引的描述—表中的顺序与位流顺序相同—每个参数都先传输最高位(MSB)
|
附录:有关语音编码的一组名词
1.PCM 脉冲编码调制 是Pulse Code Modulation的缩写。PCM编码的方法是对语音信号进行采样,然后对每个样值进行量化编码。CCITT(现ITU-T)的64Kbps语音编码标准G.711采用PCM编码方式,采样速率为8KHz,每个样值用8比特非线性的μ律或A律进行编码,总速率为64Kbps。
2.ΔM 增量调制 是Delta Modulation的缩写。增量调制编码的方法是比较当前采样值和前一个采样值的大小,若当前采样值大于前一个采样值,则编码为1,否则编码为0。
3.CVSD 连续可变斜率增量调制 是Continuously Variable Slope Delta modulation的缩写,是增量调制的一种改进方法。
4.ADPCM 自适应差分脉冲编码调制 是Adaptive Differential Pulse Code Modulation的编写。ADPCM编码方法是对输入样值进行自适应预测,然后对预测误差进行量化编码。CCITT的32Kbps语音编码标准G.721采用ADPCM编码方式,每个语音样值相当于用4比特进行编码。
5.DCME-ADPCM 数字电路倍增设备-自适应差分脉冲编码调制 是Digital Circuit Multiplication Equipment Adaptive Differential Pulse Code Modulation的缩写。DCME-ADPCM是CCITT G.723语音编码标准算法,这种算法可以在40Kbps、32Kbps和24Kbps三种速率中动态调整,以达到在给定的信道中增加容量的目的。
6.E-ADPCM 嵌入式自适应差分脉冲编码调制 是Embedded Adaptive Differential Pulse Code Modulation的缩写。E-ADPCM是CCITT G.727语音编码标准算法。这种算法具有16Kbps、24Kbps、32Kbps、40Kbps四种速率,适用于在分组网络中传输语音,当网络节点的瞬时负荷过重时,这种算法允许丢失样值的次要比特,保留核心比特,以避免语音分组的丢失。
7.LPC 线性预测编码 是Linear Predictive Coding的缩写。LPC语音编码是最基本的低速率语音编码方法,LPC语音编码的基础是语音产生模型,在这个模型中,语音是由激励信号激励一个自适应滤波器(即LPC滤波器)而产生。LPC滤波器的参数是通过线性预测的方法,即用过去的样值预测当前样值提取的。美国联邦标准FS1015的2.4Kbps LPC-10和LPC-10e就是LPC语音编码的典型例子,主要用于电话线上的窄带语音保密通信。
8.RELP 残差激励线性预测编码 是Residual Excited Linear Prediction的缩写。RELP语音编码方法对线性预测得到的预测残差作进一步的量化,可在中速率上获得较好的合成语音。
9.CELP 码激励线性预测编码 是Code Excited Linear Prediction的缩写。CELP是近10年来最成功的语音编码算法。CELP语音编码算法用线性预测提取声道参数,用一个包含许多典型的激励矢量的码本作为激励参数,每次编码时都在这个码本中搜索一个最佳的激励矢量,这个激励矢量的编码值就是这个序列的码本中的序号。CELP已经被许多语音编码标准所采用,美国联邦标准FS1016就是采用CELP的编码方法,主要用于高质量的窄带语音保密通信。
10.LD-CELP 低时延码激励线性预测编码 是Low Delay-Code Excited Linear Prediction的缩写。16Kbps LDCELP是CCITT G.728语音编码标准算法,这种方法在CELP算法的基础上,采用后向自适应线性预测、50阶合成滤波、短激励矢量(5个样值)等改进方法,从而达到高质量和低时延的目的,总的编码时延小于2ms。
11.VSELP 矢量和激励线性预测编码 是Vector Sum Excited Linear Prediction的缩写。这种算法采用三个码本作为激励信号,其中两个是随机码本,一个是自适应码本,最终的激励信号是三个激励矢量的和。美国电信工业协会(TIA)选择8Kbps VSELP算法作为北美第一代数字蜂窝移动电话的编码标准(IS54)。日本的全速率数字移动电话也采用VSELP算法作为语音编码标准(JDC),速率为6.7Kbps。
12.ACELP 代数码本激励线性预测编码 是Algebraic Code Excited Linear Prediction的缩写。代数激励码本是CELP激励码本的一种简化形式,采用+1或-1作为激励矢量中的激励样值。极低速率可视电话标准H.324中语音编码标准是G.723.1,采用5.27Kbps和6.3Kbps两种速率,其中5.27Kbps速率就是以ACELP算法为基础。
13.CS-ACELP 共扼结构-代数码激励线性预测编码 是Conjugate Structure-Algebraic Code Excited Linear Prediction的缩写。ITU-T的8Kbps语音编码标准G.729采用这种算法。
14.PSI-CELP 基音同步更新-码激励线性预测编码 是Pitch Synchronous Innovation-Code Excited Linear Prediction的缩写。PSI-CELP在传统CELP的基础上对激励作进一步的改进,使随机激励矢量以基音为间隔作重复,从而提高语音质量。日本的半速率数字移动电话标准基于这种算法。
15.QCELP Qualcomm 码激励线性预测编码 是Qualcomm Code Excited Linear Prediction的缩写。美国Qualcomm通信公司的专利语音编码算法,是北美第二代数字移动电话(CDMA)的语音编码标准(IS95)。这种算法不仅可工作于4/4. 8/8/9 .6Kbps等固定速率上,而且可变速率地工作于800Kbps~9600Kbps之间。Q4401、Q4413单片语音编码器就是基于这种编码算法。
16.MBE 多带激励编码 是Multi-Band Excitation的缩写。这种编码方式在频域中以基音频率为间隔将语音划分为多个频带,对每个频带作清音和浊音判决,分别用白噪声和正弦信号进行合成。MBE算法可以在低速率下获得较高自然度的合成语音。
17.IMBE 改进的多带激励编码 是Improved Multi-Band Excitation的缩写。IMBE是MBE的改进算法,INMARSAT-M系统中的6.4Kbps语音编码标准采用IMBE算法,其中语音编码的净速率为4.15Kbps,其余用于纠错编码。
18.MPE-LPC 多脉冲线性预测编码 是Multi-Pulse Excited LPC的缩写。这种算法在一帧语音中选择几十个典型脉冲作为激励信号。INMARSAT的9.6Kbps语音编码航空标准采用这种算法。
19.RPE-LTP-LPC 规则脉冲激励-长时预测-线性预测编码 是Regular Pulse Excited-Long Term Predition-Linear Predictive Coding的缩写。这种算法是MPE-LPC的改进算法,除了增加长时预测功能外,激励脉冲的位置具有一定的规律。这种算法是欧洲900MHz数字蜂窝移动电话的语音编码标准(GSM),也为数字蜂窝系统DCS1800所采用。
20.SBC 子带编码 是Sub-Band Coding的缩写。这种方法首先将语音信号划分为多个频带,然后对每个频带的参数进行编码。
21.STC 正弦变换编码 是Sine Transform Coding的缩写。这种方法对语音进行傅里叶分析,提取最能表示语音信号的几个频率成分,并用这几个频率的正弦波合成语音。
22.MOS 主观平均得分 是Mean Opinion Score的缩写。是一种评价中、低速率语音编码质量的主观评价方法。采用5分制评价,其中5分为很好(Excellent),4分为好(Good),3分为中(Fair),2分为差(Poor),1分为不可接收(Unsatisfactory)。
Page: 7
[AM1]A: CELP Code-Excited Linear-Prediction
Page: 7
[AM2]A: CS-ACELP Conjugate-Structure Algebraic CELP
Page: 7
[AM3]A: MSB Most Significant Bit
Page: 7
[AM4]A: MSE Mean-Squared Erro
Page: 7
[AM5]A: LP Linear Prediction
Page: 7
[AM6]A: LSP Line Spectral Pair
Page: 7
[AM7]A: LSF Line Spectral Frequency
Page: 7
[AM8]A: VQ Vector quantization