A律编码

来自testwiki
跳转到导航 跳转到搜索

Template:NoteTA

A律编码(蓝线)、μ律编码(红线)和普通编码方式(绿线)下的信噪比,横轴为输入信号强度,图为对数坐标系。

A律编码Template:Lang-en),也称作A律压缩A律压扩,是一种非均匀编码算法。该编码算法通过为小信号提供更高的量化精度,以优化语音等模拟信号量化为数字信号后的动态范围

A律编码被广泛用于欧洲中国大陆等地区的8位PCM数字通信系统[1],也是国际标准ITU-T G.711中规定的两种压缩扩展算法之一,另一种与之类似的算法是主要在北美日本等地区使用的μ律编码[2]

原理

由于语音信号的幅度通常并非均匀分布,而小信号的占比通常较大,故通常的线性编码方式并不适合使用。针对语音信号的这一特点,通常会采用A律编码这类非均匀编码,以提高小信号时的量化精度,从而提高编码效率,使编码后信号的信噪比相较于同样编码位数下线性编码所能获得的信噪比更高。

具体原理是,利用对数函数在输入数值越小时,输出值的灵敏度也越高的特点,将给定的信号从线性值映射到对数值。即满足如下函数:[3]

F(x)=sgn(x){A|x|1+ln(A),|x|<1A,1+ln(A|x|)1+ln(A),1A|x|1,

其中x,y分别表示输入和输出信号,A为压缩参数。在中国和欧洲的通信系统中,通常使用A=87.6[2]

近似算法

A律13折线法编码的输入输出特性曲线

为便于计算,实际应用中使用A律编码的通信系统通常采用其近似算法——A律13折线法。该近似算法在上述函数的正负区间,即[1,0][0,1]两个区间内,各取7段折线,因0点附近的正负两段折线斜率相同,总共为141=13段折线,故称之为“13折线法”。

A律13折线法的近似曲线如图所示。当输入信号处于[0,1]区间内时,除最靠近原点的两个区间长度相同外,其余区间的长度均为前一区间长度的两倍,而每个区间对应的输出y的变化值均为1/8,从而近似实现对数函数的特性。类似的,当输入处于[1,0]区间内时,其输入输出特性曲线与[0,1]区间内的曲线呈原点对称分布。

使用该方法编解码时,输入为线性编码的13位有符号数,经转换后得到8位编码值,再还原为线性的13位有符号数。其格式如下表:[4]

线性输入 编码值 线性输出
s0000000abcdx s000abcd s0000000abcd1
s0000001abcdx s001abcd s0000001abcd1
s000001abcdxx s010abcd s000001abcd10
s00001abcdxxx s011abcd s00001abcd100
s0001abcdxxxx s100abcd s0001abcd1000
s001abcdxxxxx s101abcd s001abcd10000
s01abcdxxxxxx s110abcd s01abcd100000
s1abcdxxxxxxx s111abcd s1abcd1000000

上表中,线性输入和线性输出的编码方式与原码类似,但符号位相反,即负数时s=0,正数时s=1;编码后的首位为极性码,与输入输出类似,其在负数时取值为0,正数时取值为1;第2至4位为段落码,其含义为右图中从原点向两侧以0开始数起的段落编号;第5至8位为段内码,表示在相应段落内近似按照线性编码方式获得的编码值。

需要注意的是,经解码后的输出值与编码前的输入区间中值并非相同,而是相差所处段落的二分之一个区间长度。

此外,在G.711标准中还规定传输时应将编码值的偶数位取反,这一规定是为了使传输时的信号包含更多的0/1对,从而便于PCM接收器进行时钟同步[5]

参见

参考文献

外部链接