首页  :: 新随笔  :: 管理

G711(G711a+g711u)编码原理及代码

Posted on 2021-01-20 09:13  季枫  阅读(3763)  评论(0编辑  收藏  举报

G711编码的声音清晰度好,语音自然度高,但压缩效率低,数据量大常在32Kbps以上。常用于电话语音(推荐使用64Kbps),sampling rate为8K,压缩率为2,即把S16格式的数据压缩为8bit,分为a-law和u-law。

a-law也叫g711a,输入的是13位(其实是S16的高13位),使用在欧洲和其他地区,这种格式是经过特别设计的,便于数字设备进行快速运算。

运算过程如下:

(1)      取符号位并取反得到s,

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

(3)      获取高位样本位wxyz

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

示例:

输入pcm数据为3210,二进制对应为(0000 1100 1000 1010)

二进制变换下排列组合方式(0 0001 1001 0001010)

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

(2)      获取强度位0001,查表,编码制应该是eee=100

(3)      获取高位样本wxyz=1001

(4)      组合为11001001,逢偶数为取反为10011100

编码完毕。

 

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

pcm=2345

(1)取得范围值

+4062 to +2015 in 16 intervals of 128

  

(2)得到基础值0x90,

(3)间隔数128,

(4)区间基本值4062,

(5)当前值2345和区间基本值差异4062-2345=1717,

(6)偏移值=1717/间隔数=1717/128,取整得到13,

(7)输出为0x90+13=0x9D

参考https://blog.csdn.net/szfhy/article/details/52448906

智读 | 成都会领科技有限公司官网 | 智读App下载 | 每天听本书的博客 | |