全稱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的填充位。
參考文獻:
RFC3267 RTP
Payload Format for AMR and AMR-WB
3GPP TS 26.201
V6.0.0
3GPP TS 26.101
V6.0.0
|