​G.711是一种窄带音频编解码器,最初设计用于提供 64 kbit/s 的长途质量音频的电话。G.711 传递 300–3400 Hz 范围内的音频信号,并以每秒 8,000 个样本的速率对其进行采样,该速率的容差为百万分之 50 (ppm)。使用 8 位的非均匀(对数)量化来表示每个样本,从而产生 64 kbit/s 的比特率。有两个略有不同的版本:主要用于北美和日本的μ-law和在北美以外的大多数其他国家/地区使用的A-law。 G.711 是用于音频压扩的ITU-T标准(推荐),标题为 1972 年发布的语音频率脉冲编码调制 (PCM)。它是许多技术的必需标准,例如H.320和H. .323标准。它也可用于IP 网络上的传真通信(如T.38规范中所定义)。 已发布 G.711 的两项增强功能:G.711.0利用无损数据压缩来减少带宽使用,而G.711.1通过增加带宽来提高音频质量。 ​

特点

8 kHz 采样频率
64 kbit/s 比特率(8 kHz 采样频率 × 8 比特/样本)
典型的算法延迟为 0.125 ms,无前瞻延迟
G.711是一种波形语音编码器
G.711 附录 I 定义了分组丢失隐藏(PLC) 算法,以帮助隐藏分组网络中的传输丢失
G.711 附录 II 定义了一种不连续传输(DTX) 算法,该算法使用语音活动检测(VAD) 和舒适噪声生成(CNG) 来减少静音期间的带宽使用
理想条件下的PSQM测试产生 G.711 μ-law 的平均意见分数为 4.45,G.711 A-law 的平均意见分数为 4.45
网络压力下的 PSQM 测试对 G.711 μ-law 产生的平均意见得分为 4.13,对于 G.711 A-law 产生 4.11 

类型

​G.711 定义了两种主要的压扩算法,μ-law 算法和A-law 算法。两者都是对数的,但 A-law 专门设计用于更简单的计算机处理。该标准还定义了一系列重复代码值,定义了 0 dB的功率电平。 μ-law 和 A-law 算法将 14 位和 13 位有符号线性 PCM 样本(分别)编码为对数 8 位样本。因此,G.711编码器将为以 8 kHz 采样的信号创建 64 kbit/s 比特流。 G.711 μ-law 倾向于为较高范围的信号提供更高的分辨率,而 G.711 A-law 在较低的信号电平下提供更多的量化电平。 使用术语 PCMU、G711u 或 G711MU 表示 G711 μ-law,使用 PCMA 或 G711A 表示 G711 A-law。 ​

A-law

A-law 编码将 13 位有符号线性音频样本作为输入,并将其转换为 8 位值,如下所示:

线性输入码 压缩码
异或 01010101
线性输出代码
s0000000abcdx s000abcd s0000000abcd1
s0000001abcdx s001abcd s0000001abcd1
s000001abcdxx s010abcd s000001abcd10
s00001abcdxxx s011abcd s00001abcd100
s0001abcdxxxx s100abcd s0001abcd1000
s001abcdxxxxx s101abcd s001abcd10000
s01abcdxxxxxx s110abcd s01abcd100000
s1abcdxxxxxxx s111abcd s1abcd1000000

1.该值是通过取输入值的二进制补码表示形式产生的,如果值为负数,则将符号位之后的所有位取反。
2.^ 有符号的幅度表示

​s符号位在哪里,s是它的倒数(即正值用MSB = s = 1 编码),标记的位x被丢弃。请注意,表的第一列使用与第三列不同的负值表示。因此,例如,输入的十进制值 -21 在位反转后以二进制表示为 1000000010100,它映射到 00001010(根据表的第一行)。解码时,这映射回 1000000010101,它被解释为十进制的输出值 -21。输入值 +52(二进制的 0000000110100)映射到 10011010(根据第二行),它映射回 0000000110101(十进制的 +53)。 这可以看作是一个浮点数,具有 4 位尾数 m(相当于 5 位精度)、3 位指数 e和 1 个符号位s,其格式与公式给出 seeemmmm的解码线性值y一样 这是一个 13 位有符号整数,范围为 ±1 到 ±(2 12 − 2 6 )。请注意,由于添加了 0.5(量化步长的一半),因此没有压缩代码解码为零。 此外,该标准规定在传输八位字节之前将所有结果偶数位(LSB为偶数)反转。这是为了提供大量的 0/1 转换,以促进 PCM 接收器中的时钟恢复过程。因此,无声 A 律编码的 PCM 通道的 8 位样本在八位字节中编码为 0xD5 而不是 0x80。 当通过 E0 ( G.703 ) 发送数据时,首先发送 MSB(符号),最后发送 LSB。 ITU-T STL [3]将解码算法定义如下(它将解码值放在 16 位输出数据类型的 13 个最高有效位中)。 ​

void            alaw_expand(lseg, logbuf, linbuf)long            lseg;short          *linbuf;short          *logbuf;
{short           ix, mant, iexp;long            n;for (n = 0; n < lseg; n++){ix = logbuf[n] ^ (0x0055);  /* re-toggle toggled bits */ix &= (0x007F);     /* remove sign bit */iexp = ix >> 4;      /* extract exponent */mant = ix & (0x000F); /* now get mantissa */if (iexp > 0)mant = mant + 16;     /* add leading '1', if exponent > 0 */mant = (mant << 4) + (0x0008);   /* now mantissa left justified and *//* 1/2 quantization step added */if (iexp > 1)      /* now left shift according exponent */mant = mant << (iexp - 1);linbuf[n] = logbuf[n] > 127   /* invert, if negative sample */? mant: -mant;}
}

μ-law

μ-law(有时称为 ulaw、G.711Mu 或 G.711μ)编码采用二进制补码表示的 14 位有符号线性音频样本作为输入,如果值为负,则反转符号位之后的所有位,添加 33(二进制 100001)并将其转换为 8 位值,如下所示:

线性输入值 压缩代码
XOR 11111111
线性输出值
s00000001abcdx s000abcd s00000001abcd1
s0000001abcdxx s001abcd s0000001abcd10
s000001abcdxxx s010abcd s000001abcd100
s00001abcdxxxx s011abcd s00001abcd1000
s0001abcdxxxxx s100abcd s0001abcd10000
s001abcdxxxxxx s101abcd s001abcd100000
s01abcdxxxxxxx s110abcd s01abcd1000000
s1abcdxxxxxxxx s111abcd s1abcd10000000

1.此值是通过取输入值的二进制补码表示,如果值为负数则反转符号位之后的所有位,然后加上 33。
2.^ 有符号的幅度表示。最终结果是通过将该值的大小减少 33 来产生的。

s符号位在哪里,标记的位x被丢弃。 此外,该标准规定在传输八位字节之前将编码位反转。因此,无声 μ 律编码的 PCM 通道具有 8 位样本传输的 0xFF 而不是八位字节中的 0x00。 添加 33 是​​必要的,以便所有值都落入一个压缩组,并在解码时将其减去。 将格式化为 as 的编码值seeemmmm分解为 4 位尾数m、3 位指数e和 1 位符号位s,解码后的线性值y由公式给出 这是一个 14 位有符号整数,范围为 ±0 到 ±8031。 请注意,0 以 0xFF 传输,-1 以 0x7F 传输,但在两种情况下接收到的结果都是 0。

G.711.0

G.711.0,也称为 G.711 LLC,利用无损数据压缩将带宽使用量减少多达 50%。 G.711脉冲编码调制标准的无损压缩于2009年9月获得ITU-T批准。

G.711.1

​G.711.1 是 G.711 的扩展,于 2008 年 3 月作为 ITU-T Recommendation G.711.1 发布。其正式名称为Wideband Embedded extension for G.711 脉冲编码调制。 G.711.1,允许添加窄带和/或宽带(16000 个样本/秒)增强功能,每个增强功能都以(包含的)基本 G.711 比特流比特率的 25%,导致数据速率为 64、80 或 96 kbit /秒。 G.711.1 在 64 kbit/s 下与 G.711 兼容,因此可以预见在现有的基于 G.711 的 IP 语音 ( VoIP ) 基础设施中的有效部署。G.711.1 编码器可以在 80 和 96 kbit/s 下以 50-7000 Hz 的带宽对 16 kHz 的信号进行编码,对于 8-kHz 采样,输出可以产生带宽从 50 到 4000 Hz 的信号,运行64 和 80 kbit/s。 G.711.1 编码器创建一个嵌入式比特流,其结构分为三层,对应于三种可用比特率:64、80 和 96 kbit/s。比特流不包含关于包含哪些层的任何信息,实现将需要关于哪些层可用的带外信令。G.711.1 的三个层是:低频段的对数压扩脉冲编码调制 (PCM),包括噪声反馈、具有自适应比特分配的嵌入式 PCM 扩展,用于提高低频段基础层的质量,以及加权矢量量化编码基于修正离散余弦变换(MDCT) 的较高频带。 2010 年计划对 G.711.1 进行两项扩展:超宽带扩展(带宽至 14000 Hz)和无损比特流压缩。 ​

许可

1972 年发布的 G.711 专利已过期,因此无需许可证即可使用。

音频编码-G.711相关推荐

  1. G.711 音频编码

    目录 参考 概述 G.711原理 总结 1. 参考 [1] wikipedia/A-law_algorithm [2] github.com/quatanium/foscam-ios-sdk [3] ...

  2. G.711是一种由国际电信联盟(ITU-T)制定的音频编码方式

    http://zh.wikipedia.org/zh-cn/G.711 ITU-T G.711 page ITU-T G.191 software tools for speech and audio ...

  3. G.7xx的音频编码方式与带宽计算

    本文转之"weixin_30527551"作者的[WebRTC]术语 G.711  G.722 G.711  G.722是G系列的语音编码中宽带的编码方式. G.711 由国际电信 ...

  4. 音频编解码标准G.711与G.729

    G.711和G.729协议是两对用于语音压缩的编码方案,两者具有一些相似之处,但不同于完全自由使用的G.711,使用G.729是需要付费的,而且,对于使用G.729的情况,CPU占有时间大约为G.71 ...

  5. Android G.711音频编解码

    需求背景: 博主目前所在的公司是一家做视频通讯的公司,所以对音频,视频这一块对编码方式都有一定的要求,由于之前一直没有接触JNI这一块,突然让我去做音频的转码还是有一定的苦难的.一开始对于JNI编程我 ...

  6. 音频编解码G.711 G.729 G.723带宽问题

    1.分包发送,G.711每20ms打包一次,G.729每20ms,G.723每30ms 2.每个包由包头和有效载荷组成,有效载荷即音频数据 3.包头由以下组成,共66 Byte,528 bit Eth ...

  7. 音频编码标准发展现状

    一.概述 音频信号数字化之后所面临的一个问题是巨大的数据量,这为存储和传输带来了压力.例如,对于CD音质的数字音频,所用的采样频率为44.1 kHz,量化精度为16bit:采用双声道立体声时,其数码率 ...

  8. 音频编码(三)——音频编解码标准

    PCMU(G.711U) 类型:Audio 制定者:ITU-T 所需频宽:64Kbps(90.4) 特性:PCMU和PCMA都能提供较好的语音质量,但是它们占用的带宽较高,需要64kbps. 优点:语 ...

  9. 常用的ITU Speech Codec大全(G.711,G.722.1,G.722.2,G.723.1,G.726,G.728,G.729,G.729.1)

    转自 http://blog.csdn.net/wanggp_2007/archive/2009/12/24/5070517.aspx 总结了常用的ITU Speech Codec,谨供大家学习参考: ...

最新文章

  1. Jupyter 在线python编辑器
  2. linux虚拟网桥配置nat,使用NAT在Proxmox VE 6上创建专用网桥的方法
  3. python的socks5全局代理_Python写的Socks5协议代理服务器
  4. 重叠面积_重叠面积——动点产生的重叠面积问题
  5. 华为手机短息没有声音解决方案
  6. 基于JAVA+Servlet+JSP+MYSQL的保险管理系统
  7. vue中使用ts后,父组件获取执行子组件方法报错问题
  8. C语言——指针详解(必收藏)
  9. 制作U盘DOS启动盘详细教程及工具,及DOS下升级BIOS方法,传统BIOS升级为UEFI
  10. linux设备开发详解宋宝华,[Linux设备驱动开发详解(第2版)].宋宝华.pdf
  11. python低通滤波器设计(FIR, IIR)
  12. 幼儿python编程书籍_少儿Python编程入门书籍分享
  13. 网页链接如何做成html,html网页的超链接怎么添加?
  14. 顺丰控股2019财报解读
  15. Centos MySQL5.7开机自启动
  16. 前端开发:Vue项目中解决Emitted value instead of an instance of Error问题
  17. 一个 SAP 开发工程师在 SAP 德国总部出差的见闻系列 1:出差 ≠ 公费旅游
  18. 计算机组成原理笔记(7)---定、浮点运算、算术逻辑单元
  19. excel文件如何取消打开密码
  20. 这恐怕是学习Frida最详细的笔记了

热门文章

  1. 张良(?—前189年)
  2. 常用传输术语OC/STM_SDH/SONET
  3. 成长型思维和固定型思维
  4. 深度学习:GCN(图卷积神经网络)理论学习总结
  5. 【Github上有趣的项目】Deep-Flow-Guided-Video-Inpainting 从视频中抹去一个人(或消除马赛克)
  6. 计算机公式加法A C,概率公式c怎么计算
  7. 《矩阵理论与方法》lambda矩阵及Jordan标准形
  8. java文本框双击可编辑_JS实现双击内容变为可编辑状态
  9. 超详细!!vue、vue-cli脚手架项目使用prerender-spa-plugin,解决SEO并为其添加title,keyWords,descript
  10. AutoCAD.NET实现CAD截图