G.726音频编解码原理介绍

一、PCM

        脉冲编码调制(Pulse-code modulationPCM)是一种模拟信号的数码化方法。PCM将信号的强度依照同样的间距分成数段,然后用独特的数码记号(通常是二进制)来量化。PCM常被用于数码电信系统上,也是计算机和红皮书(数字音乐光盘(Compact Disc Digital Audio, CDDA)规格由飞利浦和Sony制订,规格文件书由于封面红色而称红皮书)中的标准形式。

       在数码视频中PCM也是标准,例如使用 ITU-R BT.601。但是PCM并不流行于诸如DVD或DVR的消费性商品上,因为它需要相当大的比特率(DVD格式虽然支持PCM,不过很少使用,不过,许多蓝光光盘使用PCM作音频编码)。



G.726音频编解码原理介绍_第1张图片

模拟信号转换至4-bit PCM的取样和量化(来自维基百科)

       关于采样取样细节可通过“调制(analog-to-digital converterADC)”、 “解调(digital-to-analog converters, DAC”相关的基本知识了解,可参照数字电路相关的基础教材,建议先看维基百科

 

信息损害来源:

       在任何PCM系统中,本质上有两种损害的来源:

  •        在量化时,取样必须迫于选择接近哪一个整数值(即量化误差)。
  •        在样本与样本之间没有任何数据,根据取样原理,这代表任何频率大于或等于(fs即采样率)的信号,会产生有损,或者完全消失(aliasing error)。这又称作奈奎斯特频率(Nyquist frequency)。

 

       采样取样限制:

       由于所有样本都依据时间取样,重制时至关重要的便是一个准确的振荡器。如果编码或解码时,任何一方的振荡器不稳定,频率漂移就会使输出设备的质量降低。如果两方的频率具有些微的差异,稳定的误差对于质量而言并非巨大的问题。但一旦振荡器并非稳定的(即脉动的间距不相等),不论是音频或者视频上,都将造成巨大的有损。

 

数字化技术:

       在电话学中,电话的音频编码标准采样频率是8kHz(每秒8000个模拟样本),每个样本8位,比特率为64 kbit/s,即DS0。

       G.7 11国际标准描述的系统提供 A-law(除美国和日本以外的世界其他地方)与 µ-law(美国和日本)压缩编码实现方法,可采用非线性量化把 128kbit/s采样数据(8kHz,每样本16-bit16 kHz,每样本8-bit)压缩为 64kbit/s A-lawµ-law数据,压缩比为2:1。采用G.7 11 标准编码MOS评分较高(参考Annex A),适用于综合业务网和大多数数字电话链路。

 

 

       Differential(差异)或Delta PCM(DPCM)纪录的是目前的值与前一个值的差异值。DPCM对信号的差值进行量化,可以进一步减少量化比特数。与相等的PCM比较,这种编码只需要25%的比特数。

 

       Adaptive DPCM(ADPCM)是DPCM的变形,给定一个信噪比,以节省量化密度的方式,允许更大程度的节省带宽。ADPCM采用自适应量化以及高阶自适应预测技术,可根据信号差值的均方动态调整量化阶。通常,人们把低于64kbps数码率的语音编码方法称为语音压缩编码技术,语音压缩编码方法很多,自适应差值脉冲调制(ADPCM)是语音压缩编码中复杂程度较低的一种方法

 

       G.726 encoder 输入一般都是G.711 encoder的输出:64kbit/s 的A-lawµ-lawG.726算法实质就是一个ADPCM, 自适应量化算法。

 

 

二、G.726

简介

       G.726ITU-T定义的音频编码算法。1990年 CCITTITU前身)在G.721和G.723标准的基础上提出。

 G.726音频编解码原理介绍_第2张图片

                                                                                ADPCM/解码器框图

 

       如上图a)所示,ADPCM编码首先将输入的A率或mu率PCM 信号转换成14位线性PCM码,然后与预测信号相减产生差分信号,再对差分信号进行自适应量化,产生2~5比特ADPCM 码;一方面将产生的ADPCM 码送至解码器,另一方面利用ADPCM 码进行本地解码以获得量化后的差分信号,编码器将量化之后的差分信号与预测信号相加得到本地重建信号。

       G.726语音编码器首先将输入的8PCM码转换成14位线性码,然后同预测信号相减产生差分信号,再对差分信号进行自适应量化,产生25比特ADPCM码;如上图b)所示,一方面要把ADPCM码送至解码器,另一方面利用ADPCM码进行本地解码得到量化后的差分信号,将量化之后的差分信号与预测信号相加得到本地重建信号。

 

       G.726编码算法可以扩展阅读ITU指定的G.726编码标准,也可参考《G.726标准ADPCM编码方法研究与仿真》一文。

工程应用

      G.726编码器通常需要知道

      1. 码率:G726 编码器输出码率(简称编码码率)应与RFC 3551 4.5.4 小节规范一致:

       "The G726 data rates of 40, 32, 24, and 16 kbit/s have codewords of 5, 4, 3, and 2 bits, respectively." 从这里知道,若采用16kbps编码码率, G.726编码后的ADPCM码字应该占2- bit

       G.726编解码器把 128kbit/s 线性数据(64kbit/s PCM数据)压缩为 16kbit/s24kbit/s32kbit/s40kbit/s 数据压缩比分别为8:116:34:116:5,码字分别为2345 bits。采用越高压缩比,码率越小,质量越差。

       2.PCM帧长:


附录

Annex A 音频质量评测标准

l MOS -- Mean Opinion Score 平均意见值

MOS值常以衡量通信系统语音质量的重要指标。常用的MOS分评价方法包括主观MOS分评价和客观MOS分评价。
  主观MOS分采用ITU-T P.800P.830建议书,由不同的人分别对原始语料和经过系统处理后有衰退的语料进行主观感觉对比,得出MOS分,最后求平均值。
  而客观MOS评价则采用ITU-T P.862建议书提供的PESQ(perceptual evaluation of speech quality)方法,由专门的仪器(如AgilentVQT测试仪)或软件进行测试。

 

MOS方法中,0分代表最差的质量,5分为最高分。标准PCM的质量约为4.4G.711的质量约为4.8G.726的质量约为4.2

 

l MSE -- mean square error 均方误差

作为一种客观标准,MSE通过计算原始语音输入波形与解码端语音重构输出波形之间的差别程度,可以量化语音信号波形编码器的质量。 公式如下:

MSE = 

其中x(n)y(n)分别代表原始语言波形样点和重构语音波形样点的电平值

Annex B 编码器选择:

Codec 选择主要考虑以下因素:

    1) 音频的采样率,如语音的一般是8KHz,16KHz,这时往往选G7XX,AMR_NB/WB, QCELP, 或EVRCVoice codec; 音频一般是44.1KHz, 这个往往要用AAC, MP3

2) 对码率的要求也就是带宽你应该对现有的codec,码率是多少应该要用全面的了解。

3) Codec算法复杂度,这个主要考虑CPU loading,如在PC上的应用,这一点可能不需要考虑,但在嵌入式平台上这个就不得不考虑。

 

Annex C 开源软件

 

ffmpeg

开源多媒体应用framework:FAAC

逆向工程:

Tom's lossless Audio Kompressor(TAK)是一种无损音质的优秀音乐解码器,虽然原作者尚未公开源代码(计划未来是要以C++开放源代码),但FFmpeg开发者已通过反向工程实现了一个开源的TAK解码器,并已入到FFmpeg

你可能感兴趣的:(流媒体技术,编程技术)