全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。
一、分类
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,用户可主观感受到话音比以前更加自然、舒适和易于分辨。
与之作比较,现在GSM用的EFR(Enhenced Full Rate,增强型全速率编码)采样频率为8kHz,语音带宽为200~3400Hz。
AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。在这种应用中,AMR-WB抗扰 度优于AMR-NB。
AMR-WB应用于EDGE、3G可充分体现其优势。足够的传输带宽保证AMR-WB可采用从6.6kb/s到23.85kb/s共九种编码,语音质量超越PSTN固定电话。
 
二、编码方式
1. AMR-NB:
AMR 一共有16种编码方式, 0-7对应8种不同的编码方式, 8-15 用于噪音或者保留用。
Frame Type
Mode Indication
Mode Request
Frame content (AMR mode, comfort noise, or other)
0
0
0
AMR 4,75 kbit/s
1
1
1
AMR 5,15 kbit/s
2
2
2
AMR 5,90 kbit/s
3
3
3
AMR 6,70 kbit/s (PDC-EFR)
4
4
4
AMR 7,40 kbit/s (TDMA-EFR)
5
5
5
AMR 7,95 kbit/s
6
6
6
AMR 10,2 kbit/s
7
7
7
AMR 12,2 kbit/s (GSM-EFR)
8
-
-
AMR SID
9
-
-
GSM-EFR SID
10
-
-
TDMA-EFR SID
11
-
-
PDC-EFR SID
12-14
-
-
For future use
15
-
-
No Data (No transmission/No reception)
 
2. AMR-WB:
Frame Type Index
Mode Indication
Mode Request
Frame content (AMR-WB mode, comfort noise, or other)
0
0
0
AMR-WB 6.60 kbit/s
1
1
1
AMR-WB 8.85 kbit/s
2
2
2
AMR-WB 12.65 kbit/s
3
3
3
AMR-WB 14.25 kbit/s
4
4
4
AMR-WB 15.85 kbit/s
5
5
5
AMR-WB 18.25 kbit/s
6
6
6
AMR-WB 19.85 kbit/s
7
7
7
AMR-WB 23.05 kbit/s
8
8
8
AMR-WB 23.85 kbit/s
9
-
-
AMR-WB SID (Comfort Noise Frame)
10-13
-
-
For future use
14
-
-
speech lost
15
-
-
No Data (No transmission/No reception)
 
-
-
 
 
二、AMR 帧格式:
AMR 有两种类型的帧格式:AMR IF1 和 AMR IF2
1. AMR IF1:
 IF1 的帧格式如下图所示:
FrameType, Mode Indication, Mode Request 对应上面两个表格里的数。从上面的表格里我们可以看出,这三个域的值是相同的。所以在IF2中省略了Mode Indication, Mode Request 两个域。
Frame Quality Indicator: 0表示bad frame 或者corrupted frame; 1表示 good frame
每一帧的数据有分为三个部分:Class A/B/C
Class A:一帧中最敏感、最重要的数据。一旦这一部份数据有损坏,整个帧就无法解码,就损坏了。所以,一般在无线传输的时候要使用各种冗余的方式对这部分数据加以保护。
Class B:相对于Class A不那么重要的数据。
Class C:比Class B还不重要的数据。
 
2. AMR IF2:
 IF2的帧格式如下图所示:
相对于IF1, IF2 省去了Frame Quality Indicator, Mode Indication, Mode Request 和CRC 校验。但是增加了bit 填充。因为AMR帧中数据的长度并不是字节(8bit)的整数倍,所以在有些帧的末尾需要增加bit填充,以使整个帧的长度达到字节的整数倍。
有关IF2帧中各个域的信息请参考下面的帧大小节的表格。
 
三、帧大小
1. AMR-NB
Frame Type Index
Frame content
Number of bits in Frame Type
Number of Bits in AMR Core Frame

Number of Bits in
Bit Stuffing

Number of octets (N)
0
AMR 4,75 
4
95
5
13
1
AMR 5,15
4
103
5
14
2
AMR 5,90
4
118
6
16
3
AMR 6,70
4
134
6
18
4
AMR 7,40
4
148
0
19
5
AMR 7,95
4
159
5
21
6
AMR 10,2
4
204
0
26
7
AMR 12,2
4
244
0
31
8
AMR SID
4
39
5
6
9
GSM-EFR SID
4
43
1
6
10
TDMA-EFR SID
4
38
6
6
11
PDC-EFR SID
4
37
7
6
12-14
For future use
-
-
-
-
15
No Data
4
0
4
1
Number of bits in Classes A, B, and C for each AMR codec mode
Frame Type

AMR
codec mode

Total number of bits
Class A
Class B
Class C
0
4,75
95
42
53
0
1
5,15
103
49
54
0
2
5,90
118
55
63
0
3
6,70
134
58
76
0
4
7,40
148
61
87
0
5
7,95
159
75
84
0
6
10,2
204
65
99
40
7
12,2
244
81
103
60
2. AMR-WB:
Composition of AMR-WB IF2 Frames for all Frame Types
Frame Type Index
Frame content
Number of bits in Frame Type
Number of bits in Frame Quality Indicator
Number of Bits in AMR-WB Core Frame
Number of Bits in Bit Stuffing
Number of octets (N)
0
AMR-WB 6.60 kbit/s
4
1
132
7
18
1
AMR-WB 8.85 kbit/s
4
1
177
2
23
2
AMR-WB 12.65 kbit/s
4
1
253
6
33
3
AMR-WB 14.25 kbit/s
4
1
285
6
37
4
AMR-WB 15.85 kbit/s
4
1
317
6
41
5
AMR-WB 18.25 kbit/s
4
1
365
6
47
6
AMR-WB 19.85 kbit/s
4
1
397
6
51
7
AMR-WB 23.05 kbit/s
4
1
461
6
59
8
AMR-WB 23.85 kbit/s
4
1
477
6
61
9
AMR-WB SID (Comfort Noise Frame)
4
1
40
3
6
10-13
For future use
-
-
-
-
-
14
speech lost
4
1
0
3
1
15
No Data (No transmission/No reception)
4
1
0
3
1
 
Frame Type

AMR-WB
codec mode

Total number of bits
Class A
Class B
Class C
0
6.60
132
54
78
0
1
8.85
177
64
113
0
2
12.65
253
72
181
0
3
14.25
285
72
213
0
4
15.85
317
72
245
0
5
18.25
365
72
293
0
6
19.85
397
72
325
0
7
23.05
461
72
389
0
8
23.85
477
72
405
0
四、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 文件的存储格式(RFC 3267):
AMR IF1, IF2定义了 AMR的帧格式, 用于无线传输用。 RFC 3267定义了把AMR数据存成文件的文件格式。
AMR的文件格式如下图1所示:
它包含一个文件头,然后就是一帧一帧的AMR数据了。
 
<!--[if !supportLists]-->1.
       <!--[endif]-->文件头格式:
 AMR 文件支持单声道和多声道。单声道和多声道的文件头是不同的。
 单声道:
 AMR-NB文件头: "#!AMR\n" (or 0x2321414d520a in hexadecimal)(引号内的部分)
 AMR-WB 文件头:"#!AMR-WB\n" (or 0x2321414d522d57420a in hexadecimal).(引号内)
多声道:
多声道的文件头包含一个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:表示当前文件中含有几个声道。
 
帧头的格式:
帧头的格式如图2 所示, 它占1个字节(8个bit)
P为填充为设置为0

FT为编码模式, 即上面提到的16中编码模式。
Q为帧质量指示器,如果为0表明帧被损坏。

 
图3 列举了AMR-NB 5.9Kbit的一个帧的格式,
对于5.9kbit一帧的有118bit的数据,15*8=120=118+2, 所以在最后有2个bit的填充位。
 

AMR音频编码器概述及文件格式分析的更多相关文章

  1. AMR音频文件格式分析

    AMR音频文件格式分析 1 概要 如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate, ...

  2. JPEG概述和头分析(C源码)

    原创文章,转载请注明:JPEG概述和头分析(C源码)  By Lucio.Yang 部分内容来自:w285868925,JPEG压缩标准 1.JPEG概述 JPEG是一个压缩标准,又可分为标准 JPE ...

  3. linux第三次实践:ELF文件格式分析

    linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...

  4. Linux及安全实践四——ELF文件格式分析

    Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...

  5. MP4文件格式分析及分割实现(附源码)

    MP4文件格式分析                   MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的 ...

  6. 多媒体(2):WAVE文件格式分析

    目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析

  7. 实践2.4 ELF文件格式分析

    实践2.4 ELF文件格式分析 1.ELF文件头 查看/usr/include/elf.h文件: #define EI_NIDENT (16) typedef struct { unsigned ch ...

  8. wav文件格式分析详解

    wav文件格式分析详解 文章转载自:http://blog.csdn.net/BlueSoal/article/details/932395 一.综述    WAVE文件作为多媒体中使用的声波文件格式 ...

  9. 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)

    http://blog.csdn.net/leixiaohua1020/article/details/25430449 本文介绍一个最简单的基于FFMPEG的音频编码器.该编码器实现了PCM音频采样 ...

随机推荐

  1. Jquery学习笔记:利用find和children方法获取后代元素

    在很多场景下,需要根据一个已知的jquery对象,去查找其满足条件的后代节点. 这时可以利用 find函数和children来处理. find和children函数都可有一个参数,常见的是一个字符串, ...

  2. 基于visual Studio2013解决C语言竞赛题之0701排队输出

     题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void swap(int *a,int *b) { *a = *a ...

  3. GTest交流与经验总结

    GTest交流与经验总结 原文见:   http://starsourcingsolutions.com/myblog/?p=159

  4. UF访问,一些对用友最新的旗舰级产品U9一些引进(图像)

    昨天,北京用友公司的本地UF马平之和几个同事总和.并且e创客网站访问者创始人江.双方进行了友好的交流.首先,我们公司的历史.销售.或产品介绍. 然后.用友分公司的总水平介绍了用友的情况下,,马总介绍了 ...

  5. poj 2891 Strange Way to Express Integers(中国剩余定理)

    http://poj.org/problem?id=2891 题意:求解一个数x使得 x%8 = 7,x%11 = 9; 若x存在,输出最小整数解.否则输出-1: ps: 思路:这不是简单的中国剩余定 ...

  6. jQuery 查询 xml

    加载xml:(注:这个方法在Chrome是用不了的,Chrome是禁止访问本地的xml文件,在ie11里面用不了,ie11的xmlDom文档没有load方法) function loadXML(fil ...

  7. 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox

    原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...

  8. 通过demo搞懂encode_utf8和decode_utf8

    perl 编码问题: use utf8表示代码使用UTF-8写的 [root@wx03 0710]# cat a1.pl #use utf8; my $str='测试utf8字符集'; print $ ...

  9. 组件接口(API)设计指南[4]-通知(Notifications)

    *返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 通知(Notifications) 通知是托付协议的还有一半 ...

  10. android源码地址及下载介绍

      git clone https://android.googlesource.com/device/common.git  git clone https://android.googlesour ...