音频学习之-g711

什么是g711

g711是一种由国际电信联盟制定的一套语音压缩标准,主要用于电话语音通信,而人声最大频率一般在3.4kHz,所以只要以8k的采样频率对人声进行采样,就可以保证完全还原原始声音。

g711的起压缩率为1:2,即把16位 数据压缩成8位所以g711相比pcm数据,数据量会小一半

g711的内容是将一个13bit或14bit的样本编码成一个8bit的样本。

g711的分类

g711标准主要分两种压缩方法:a-law和mu-law

G711的内容是将14bit(uLaw)或者13bit(aLaw)采样的PCM数据编码成8bit的数据流,播放的时候在将此8bit的数据还原成14bit或者13bit进行播放,不同于MPEG这种对于整体或者一段数据进行考虑再进行编解码的做法,G711是波形编解码算法,就是一个sample对应一个编码,所以压缩比固定为:

8/14 = 57%  (uLaw)

8/13 = 62%  (aLaw)

G.711就是语音模拟信号的一种非线性量化, bitrate 是64kbps. 详细的资料可以在ITU 上下到相关的spec,下面主要列出一些性能参数:

G.711(PCM方式)

• 采样率:8kHz(其他采样率的g711都是非标准的,实际开发需要确认是否支持除8k外的采样率)

• 信息量:64kbps/channel

• 理论延迟:0.125msec

• 品质:MOS值4.10 

算法原理

A-law的公式如下,一般采用A=87.6

画出图来则是如下图,用x表示输入的采样值,F(x)表示通过A-law变换后的采样值,y是对F(x)进行量化后的采样值。

由此可见在输入的x为高值的时候,F(x)的变化是缓慢的,有较大范围的x对应的F(x)最终被量化为同一个y,精度较低。相反在低声强区域,也就是x为低值的时候,F(x)的变化很剧烈,有较少的不同x对应的F(x)被量化为同一个y。意思就是说在声音比较小的区域,精度较高,便于区分,而声音比较大的区域,精度不是那么高。

对应解码公式(即上面函数的反函数):

G711A(A-LAW)压缩十三折线法

g711a输入的是13位(S16的高13位),这种格式是经过特别设计的,便于数字设备进行快速运算。

1、取符号位并取反得到s

2、获取强度位eee,获取方法如图所示

3、获取高位样本位wxyz

4、组合为seeewxyz,将seeewxyz逢偶数为取补数,编码完毕

A-law如下表计算,第一列是采样点,共13bit,最高位为符号位。对于前两行,折线斜率均为1/2,跟负半段的相应区域位于同一段折线上,对于3到8行,斜率分别是1/4到1/128,共6段折线,加上负半段对应的6段折线,总共13段折线,这就是所谓的A-law十三段折线法。

示例:

输入pcm数据为1234,二进制对应为(0000 0100 1101 0010)

      二进制变换下排列组合方式(0 00001 0011 010010)

    1、获取符号位最高位为0,取反,s=1

    2、获取强度位00001,查表,编码制应该是eee=011

 

    3、获取高位样本wxyz=0011

    4、组合为10110011,逢偶数位取反为11100110,得到E62+23

u-law也叫g711u,使用在北美和日本,输入的是14位,编码算法就是查表,计算出:基础值+平均偏移值 没啥复杂算法,就是基础值+平均偏移值,

μ-law的公式如下,μ取值一般为255

相应的μ-law的计算方法如下表

 

示例:

输入pcm数据为1234

    1、取得范围值,查表得 +2014 to +991 in 16 intervals of 64

    2、得到基础值为0xA0

    3、得到间隔数为64

    4、得到区间基本值2014

    5、当前值1234和区间基本值差异2014-1234=780

    6、偏移值=780/间隔数=780/64,取整得到12

    7、输出为0xA0+12=0xAC

和A-law画在同一个坐标轴中就能发现A-law在低强度信号下,精度要稍微高一些。

以上是两种算法的连续条件下的计算公式,实际应用中,我们确实可以用浮点数计算的方式把F(x)结果计算出来,然后进行量化,但是这样一来计算量会比较大,实际上对于A-law(A=87.6时),是采用13折线近似的方式来计算的,而μ-law(μ=255时)则是15段折线近似的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值