最近工作中遇到了G711a音频编码,之前只用到wav和pcm,特写此文对G711格式了解一番。

文章目录

  • 采样和量化
  • G711简介
  • 二进制文件格式
  • 参考来源

采样和量化

  首先需要明确的两个概念,“采样”和“量化”。对于给定的一个波形,采样是从时间上将连续变成离散的过程,而采样得到的值,可能还是不能够用给定的位宽(比如8bit)来表示,这就需要经过量化,即从我们能够表示的离散值里面找一个跟采样值接近的值,近似地表示它。一般来说,量化是模拟音频到数字音频(PCM)过程中产生误差的唯一一个地方。
  下面我们举个例子来说明,首先用matlab生成一个正弦波:

所以这个波形的周期:


matlab代码为:

x=0:1:300;
y=10*sin(x/10);
plot(x,y,'r')
axis([0,300,-12,12]);
set(gca, 'XTickMode','manual','XTick',[0:20:300]);
set(gca,'YTickMode','manual','YTick',[-10:1:10]);grid
hold on
a=0:20:300;
b=10*sin(a/10);
plot(a,b,'*')

然后以20的采样周期采样得到图上的16个蓝色点。

16个点的坐标为:
[0, 9.092974268, -7.568024953, -2.794154982, 9.893582466, -5.440211109, -5.36572918, 9.906073557, -2.879033167, -7.509872468, 9.129452507, -0.088513093, -9.05578362, 7.625584505, 2.709057883, -9.880316241]

  这些小数存储时要占用大量的空间,因此我们要通过量化,将其舍入到近似的整数,这样采样值就能用一个±16范围的整数来存储(5bit)。
  根据采样定理,用大于信号最高频率两倍的频率,对周期信号进行采样,可以保证完全重构原始信号。由于G711主要用于传递话音,而人声最大频率一般在3.4kHz,所以只要以8k的采样频率对人声进行采样,就可以保证完全还原原始声音。
  而人耳朵能够感知的声音频率在20kHz范围内,所以只要以大于40kHz频率采样,就可以完全重建原始声音。我们常常能见到44.1kHz采样的音乐文件,甚至更高采样频率,也是由于这个道理。之所以会取一个大于40k的采样频率比如44.1k、48k甚至更高的96k,我认为有以下几个原因:
(1)实际音频的频谱不是带宽限制的,在带外还有高频信号。因此我们需要先经过一个低通滤波器将高频信号滤掉。而实际的低通滤波器不是完整的在截止频率将信号截断,而是一个很陡峭的曲线,所以留出了一些余量保证滤除带外信号后不影响带内信号。(这个分析比较靠谱)
(2)采样之后需要经过量化,这带来了一些误差,重建出来的音频和原始的模拟音频有微小区别,通过增加量化深度或者采样频率能减少这种误差。(原作者的这个观点有待商榷,量化误差是幅值精度的问题,而采样率是频谱带宽的问题,不是一个维度上的,怎么能用增加采样率来补偿量化误差呢?)
(3)实际的采样窗口不是无限长的,加窗操作引入了一些大于奈奎斯特频率的信号,导致频率出现了混叠,影响了原始信号的恢复值。(这个分析比较靠谱)
(4)在音频制作过程中采用96k、192k甚至更高,可以满足一些后期处理的需要。而播放端播放96k的音频未必会比44.1k有更好的效果,两者的区别可能更多来自于前3条的原因。

G711简介

  G711编码的声音清晰度好,语音自然度高,但压缩效率低,数据量大常在32Kbps以上。常用于电话语音(推荐使用64Kbps),sampling rate为8K,G.711 标准下主要有两种压缩算法。一种是u-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的。

G.711就是语音模拟信号的一种非线性量化, bitrate 是64kbps. 详细的资料可以在ITU 上下到相关的spec,下面主要列出一些性能参数:
G.711(PCM方式)
• 采样率:8kHz
• 信息量:64kbps/channel
• 理论延迟:0.125msec
• 品质:MOS值4.10

  G711算法采用8kHz采样率,有A-law和μ-law两种压扩方式,分别是将13bit和14bit编码为8bit,因此G711固定码率是8kHz*8bit=64kbps。两者都是对数变换,A-law更加方便计算机处理。μ-law提供了略微高一些的动态范围,但代价是对于弱信号的量化误差相对A-law高一些。两者均采用对数变换的原因也正是由于人耳对于声音的感知不是线性变化而是对数型变化的特性。
下面分别介绍两种算法:
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。意思就是说在声音比较小的区域,精度较高,便于区分,而声音比较大的区域,精度不是那么高。
对应解码公式(即上面函数的反函数):

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


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

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

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

对应的解码公式则是:

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

运算过程如下:
(1) 取符号位并取反得到s
(2) 获取强度位eee,获取方法如下图所示
(3) 获取高位样本位wxyz
(4) 组合为seeewxyz,将seeewxyz逢偶数为取补数,编码完毕

示例1:
输入pcm数据为3210,二进制对应为(0000 1100 1000 1010)
二进制变换下排列组合方式(0 0001 1001 0001010)
(1) 获取符号位最高位为0,取反,s=1
(2) 获取强度位0001,查表,编码制应该是eee=100
(3) 获取高位样本wxyz=1001
(4) 组合为11001001,逢偶数为取反为10011100
编码完毕。

示例2:
输入pcm数据为1234,二进制对应为(0000 0100 1101 0010)
二进制变换下排列组合方式(0 00001 0011 010010)
1、获取符号位最高位为0,取反,s=1
2、获取强度位00001,查表,编码制应该是eee=011
3、获取高位样本wxyz=0011
4、组合为10110011,逢偶数为取反为11100110,得到E6

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



示例1:
输入pcm数据为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

示例2:
输入pcm数据为1234(以16bit的数据计算的,没有进行移位得到14bit的数据)
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

二进制文件格式

  发现忘了这一部分,罪过,后面补上

参考来源

  本文参考来源为如下链接,感谢原作者们的工作,本文作为转载发布,转载的链接来源只能选择其中参考最多(不一定是内容最多,可能是最能说明要点的一篇)的一个作者的博文链接。
https://blog.csdn.net/zz460833359/article/details/82752468
https://blog.csdn.net/oHuiJian1/article/details/100674218

G711音频编码格式相关推荐

  1. EasyPlayer:安卓播放器Android MediaMuxer录像(支持G711音频)支持MP4、音视频同步

    Android平台的MediaMuxer是个非常好的录像库,它能将H.264视频+AAC音频存储成.mp4格式的文件,而且稳定性.同步效果都非常好.MediaMuxer在安卓版的EasyPlayer和 ...

  2. g711音频封装wav文件头格式

    g711音频封装wav文件头格式 之前的客户需求,平台音频不支持g711格式,只支持wav/mp3,wav格式封装比较简单,只需要在原始音频数据上封装一层wav头就可以,在此记录一下该模块接口.参考开 ...

  3. RTP打包G711音频数据发送

    前面博客讲过G711编码,有两种G711A/G711U,主要在安防中应用,是一帧波形编码的音频数据,只是将PCM压缩一半数据量.一般G711,采样率8000,通道数1.所以G711中1B就是一个样本数 ...

  4. 音视频基础知识---音频编码格式

    音视频基础知识汇总: 音视频基础知识---协议相关RTSP RTMP HLS 音视频基础知识---封装格式 音视频基础知识---视频编码格式 音视频基础知识---音频编码格式 音视频基础知识---像素 ...

  5. ffmpeg实现g711音频和H264,H265封装mp4(整理,非原创)

    效果:实现G711和H264,H265存为mp4,录像文件VLC和暴风影音可播放 注:播放mp4音视频没问题,但使用mp4分析工具分析 Sample size有问题(待解决) 修改1: (资料来自:g ...

  6. 常见窄带宽带音频编码格式

    常见音频编码格式,有窄带编码和宽带编码,从传统的PSTN网络,到现在的IP网络,一张表格,一目了然. 常见音频编码格式 宽带语音就是扩大了采样的语音频率范围.比特率小于64Kbps的,有些适用于VOI ...

  7. aac fhg lc哪一个模式_AAC音频编码格式简介

    AAC音频编码格式,完整名称叫做"高级音频编码(Advanced Audio Codec)".这种先进而高级的编码规范,是由Fraunhofer IIS公司(前MP3标准的制定者) ...

  8. 音频 PCM音频编码格式详解

    概念 PCM(Pulse Code Modulation)音频编码格式也被称为脉冲编码调制.就是将声音等模拟信号变成符号化的脉冲列,再进行记录存储. 原理 把一个时间连续,取值连续的模拟信号变换成时间 ...

  9. 海思3536解码G711音频

    海思3536解码G711音频 最近的一个项目,需要增加对G711的解码功能.而HI3536这款芯片是支持对G711进行CPU软件编解码的,所有的解码功能都基于独立封装的海思音频解码库,核心解码器工作在 ...

最新文章

  1. php实现无限分类超牛逼,PHP超牛逼无限极分类生成树方法_php技巧
  2. homebrew的安装和使用
  3. linux用户和文件目录管理
  4. Java Web学习路线
  5. ZDOO全协同管理系统 v6.9
  6. FZU 1692 Key problem
  7. bp神经网络matlab feedfollownet,BP神经网络模型:Matlab
  8. matlab/simulink 永磁直驱海上风电场仿真模型 含集群电流源等效 海上风电场线路结构
  9. 【多目标追踪算法】多目标跟踪评价指标
  10. 根2是无理数的几种证明方法
  11. 淦!为什么到处都是广告!
  12. gst-rtsp-server 编译日志
  13. js 仿微信投诉—引入vue.js,拆分组件为单个js
  14. YOLOV5:不懂代码也能使用YOLOV5跑项目
  15. 治理企业“数据悬河”,阿里云DataWorks全链路数据治理新品发布
  16. 通过大白菜u盘启动工具备份/还原/重装/激活系统/修复引导 实操教程(上)
  17. 世界杯要来了,AI预测冠军哪家强?
  18. SparkMLib决策树和逻辑斯蒂回归的示例
  19. 《C++Primer》学习笔记(11-12章)
  20. 边缘计算是5G应用的核心平台 , 产业空间广阔

热门文章

  1. 未来技术展望(一):混沌工程与ChaosBlade
  2. 恰星V3S投影仪好不好?适合学生党购入么?
  3. 《算法》中的红黑树实现
  4. Mac安装jekyll踩坑
  5. 【大数据计算】(四) Spark的安装和基础编程
  6. 电容笔和触控笔的区别是什么?好用的电容笔测评
  7. Android App 耗电的测试方法
  8. 离散傅里叶变换----解释的最透彻的|包括定义物理意义
  9. 推荐系统之 FNN和DeepFM和NFM
  10. 全国二级计算机考试准考证打印官网