音频之AMR-NB、AMR-WB

首先明白什么是Amr-Nb和Amr-wb?

一、什么是AMR、AMR-WB
全称Adaptive Multi-Rate和Adaptive Multi-Rate Wideband,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。

  1. AMR: 又称为AMR-NB,相对于下面的WB而言
    语音带宽范围:300-3400Hz
    8KHz采样率

  2. AMR-WB:AMR WideBand,
    语音带宽范围: 50-7000Hz
    16KHz采样率
    “AMR-WB”全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,采样频率为16kHz,是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称 为G722.2标准。AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自然、舒适和易于分辨。

二、编码方式

下图详细解释了帧头和帧数据大小的关系:
音频之AMR-NB、AMR-WB_第1张图片
1. AMR-NB:
AMR 一共有16种编码方式, 0-7对应8种不同的编码方式, 8-15 用于噪音或者保留用。
音频之AMR-NB、AMR-WB_第2张图片
2. AMR-WB:
音频之AMR-NB、AMR-WB_第3张图片
我们来做一个简单的计算,PCM16和AMR之间的转换
Amr 一帧为20毫秒
AMR 4.75Kbits/s:

每秒产生的声音位数 = 4750bits/s
每20ms帧占用的位数 = 4750bits/s / 50frames/s = 95bits
每20ms帧占用的字节数 = 95bits / 8bits/byte = 11.875bytes - 圆整到12字节,不足的补0
加上一个字节的帧头,所以,20ms一帧的AMR: 12-bytes + 1-byte = 13-bytes

相反,转换回来就成了
13-bytes * 50frames/s * 8bits/byte = 5200bits/s

注意,这里两个数值并不对应,是由于圆整地原因

三、帧格式解析

AMR语音帧格式为:帧头+语音数据组成,并且分为两种类型的帧格式:AMR IF1 和 AMR IF2
在这里插入图片描述
下面将分开讲述AMR IF1和AMR IF2的帧格式

(1)AMR IF1的帧格式如下图
音频之AMR-NB、AMR-WB_第4张图片

a) amr header 其中帧头占1个字节,各个位的含义如下图所示:
音频之AMR-NB、AMR-WB_第5张图片各个字段解释如下:
P: 0 (占1bit)
FT: frame type 对应不同编码模式 (占4bit)
Q: 帧质量指示器 0:表示为坏帧 (占1bit)
后面的2个P补0

b)帧头后面就是辅助信息。
此辅助信息针对自适应模式及差错检测。

c) 辅助信息后面就是语音数据。每一帧的数据有分为三个部分:Class A ,Class B ,Class C;
Class A:是一帧中最敏感、最重要的数据。这部分数据如有损坏,整个帧将无法解码。所以,一般在无线传输的时候要使用各种冗余的方式对这部分数据加以保护。
Class B:相对而言,比Class A不重要的数据。
Class C:比Class B还不重要的数据。

下图描述了AMR IF1帧数据的bit位数及字节数、每帧Class A、Class B、Class C的bit位大小等信息。
音频之AMR-NB、AMR-WB_第6张图片
音频之AMR-NB、AMR-WB_第7张图片

音频之AMR-NB、AMR-WB_第8张图片
音频之AMR-NB、AMR-WB_第9张图片

(2)AMR IF2的帧格式如下图所示

音频之AMR-NB、AMR-WB_第10张图片
相对于IF1格式, IF2 省去了Frame Quality Indicator, Mode Indication, Mode Request 和CRC 校验。但是增加了bit 填充。因为AMR帧中数据的长度并不是字节(8bit)的整数倍,所以在有些帧的末尾需要增加bit填充,以使整个帧的长度达到字节的整数倍

四、ARM文件格式分析

AMR文件格式如下所示:
音频之AMR-NB、AMR-WB_第11张图片
它包含一个文件头,然后就是一帧一帧的AMR数据了。

具体如下:

1)AMR文件头
AMR 文件支持单声道和多声道。单声道和多声道的文件头是不同的。单声道(AMR-NB)只包含一个Magic number;多声道(AMR-WB)包含Magic number和一个32位的Chanel description field,多声道情况下的32位通道描述字符,前28位都是保留字符,必须设置成0,最后4位说明使用的声道个数。多声道文件头长度比单声道文件头长度大4个字节。

1.单声道:
AMR-NB文件头: “#!AMR\n” (or 0x2321414d520a in hexadecimal)(引号内的部分)
AMR-WB 文件头:"#!AMR-WB\n" (or 0x2321414d522d57420a in hexadecimal).(引号内)
2. 多声道:
多声道的文件头包含一个magic number和32bit channle description域。
在这里插入图片描述
AMR-NB 的magic number:"#!AMR_MC1.0\n"
(or 0x2321414d525F4D43312E300a in hexadecimal).

AMR-WB的magic number:"#!AMR-WB_MC1.0\n"
(or 0x2321414d522d57425F4D43312E300a in hexadecimal).

32bit的channel description域的定义如下:
其中 reserved bits必须为0, CHAN:表示当前文件中含有几个声道。

参考:
1、AMR音频编码器概述及文件格式分析
https://www.cnblogs.com/dyllove98/p/3192191.html?utm_source=tuicool

2、AMR音频格式分析
https://blog.csdn.net/wh8_2011/article/details/52862625

你可能感兴趣的:(音频,音视频,语音识别,人工智能)