关闭

AMR文件格式研究

1539人阅读 评论(0) 收藏 举报
全称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

Number of bits in Classes A, B, and C for each AMR codec mode

Frame Type

AMR

codec mode

Frame

size--帧大小(bit)

Class A

Class B

Class C

0

4,75kbit/s

95

42

53

0

1

5,15kbit/s

103

49

54

0

2

5,90kbit/s

118

55

63

0

3

6,70kbit/s

134

58

76

0

4

7,40kbit/s

148

61

87

0

5

7,95kbit/s

159

75

84

0

6

10,2kbit/s

204

65

99

40

7

12,2kbit/s

244

81

103

60

 

2. AMR-WB:

Composition of AMR-WB IF2 Frames for all Frame Types

 

Frame Type

AMR-WB
codec mode

Frame

size--帧大小(bit)

Class A

Class B

Class C

0

6.60kbit/s

132

54

78

0

1

8.85kbit/s

177

64

113

0

2

12.65kbit/s

253

72

181

0

3

14.25kbit/s

285

72

213

0

4

15.85kbit/s

317

72

245

0

5

18.25kbit/s

365

72

293

0

6

19.85kbit/s

397

72

325

0

7

23.05kbit/s

461

72

389

0

8

23.85kbit/s

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所示:

文件最开始是6个字节的header,[#!AMR/n] 括号间的部分(或者十六进制表示为 0x2321414d520a )。接下来是连续的语音帧,每个帧包含一个帧头+语音数据。

 

1.       文件头格式:

 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的填充位

 

 

参考文献:

RFC3267 RTP Payload Format for AMR and AMR-WB

3GPP TS 26.201 V6.0.0

3GPP TS 26.101 V6.0.0


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:354714次
    • 积分:4069
    • 等级:
    • 排名:第7630名
    • 原创:55篇
    • 转载:81篇
    • 译文:0篇
    • 评论:31条
    文章分类
    最新评论