-
編碼方式
AMR有多種編碼方式,每種編碼方式的採樣頻率不同:
規格
比特率(kbps)
音頻幀大小(字節)
幀頭(字節)
FT
0
AMR 4.75
13
04 00000100
0000
1
AMR 5.15
14
0C 00001100
0001
2
AMR 5.9
16
14 00010100
0010
3
AMR 6.7
18
1C 00011100
0011
4
AMR 7.4
20
24 00100100
0100
5
AMR 7.95
21
2C 00101100
0101
6
AMR 10.2
27
34 00110100
0110
7
AMR 12.2
32
3C 00111100
0111
說明:
l 比特率是指將數字聲音由模擬格式轉化成數字格式的採樣率,採樣率越高,還原後的音質就越好。
l 比特率值與現實音頻對照:
16kbps=電話音質
24kbps=增加電話音質、短波廣播、長波廣播、歐洲制式中波廣播
40kbps=美國製式中波廣播
56kbps=話音
64kbps=增加話音(手機鈴聲最佳比特率設定值、手機單聲道MP3播放器最佳設定值)
112kbps=FM調頻立體聲廣播
128kbps=磁帶(手機立體聲MP3播放器最佳設定值、低檔MP3播放器最佳設定值)
160kbps=HIFI高保真(中高檔MP3播放器最佳設定值)
192kbps=CD(高檔MP3播放器最佳設定值)
256kbps=Studio音樂工作室(音樂發燒友適用)
l 音頻數據幀大小的計算:
amr 一幀對應20ms,那麼一秒有50幀的音頻數據。由於比特率不同,每幀的數據大小也不同。
如果比特率是12.2kbs,那麼每秒採樣的音頻數據位數爲:
12200 / 50 = 244bit = 30.5byte,取整爲31字節。
取整要四捨五入。
再加上一個字節的幀頭,這樣數據幀的大小爲32字節。
-
AMR文件結構
下面是一個AMR文件示範:
從圖中可以看出,所有AMR文件頭標誌是6個字節。(最後一個字節是換行符“/n”)
後面就緊跟的是音頻幀。這個文件是每幀32字節。
文件頭
語音幀 1
語音幀 2
…
-
AMR幀頭格式分析
AMR語音幀格式爲幀頭和語音數據組成。
幀頭
語音數據
AMR語音幀頭佔1個字節,如下圖所示:
0
1
2
3
4
5
6
7
P
FT
Q
P
P
0
0
0
0
其中:
P = 0;
FT:Frame Type,對應不同編碼模式。(參見“2. AMR編碼方式”中表格中的說明)
Q:幀質量指示器,0:表示爲壞幀。
後面的P補0。
-
異常幀分析
下圖是一個出現異常幀的示例:(zbc1217.amr)
從上圖可以看見,本amr音頻幀頭都是0x3C,但是在0x000091e6處,幀頭字節爲0x44。與0x3C不一致。而在0x00009243處,才恢復到0x3C。
對異常幀的簡單處理辦法是,遇到異常幀就跳過異常幀。後面的讀幀算法有描述。
-
參考資料
l rfc3267
http://www.rfc-editor.org/rfc/rfc3267.txt
http://ietfreport.isoc.org/rfc/PDF/rfc3267.pdf
l 3GPP TS 26.104 V 6.1.0 (2004-03)
http://www.3gpp.org/ftp/Specs/html-info/26104-CRs.htm
l 3GPP AMR Floating-point Speech Codec
http://www.3gpp.org/ftp/Specs/html-info/26104.htm
l “amr編程彙總”
http://blog.csdn.net/windcao/archive/2006/01/04/570348.aspx
l 關於AMR文件格式的解釋
http://www.mcublog.com/blog/user1/11409/archives/2006/16832.html
AMR音頻結構
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.