AMR-WB音頻在RTP協議和文件存儲中的格式
1. 什么是AMR-WB
自適應多速率寬帶(AMR-WB)是一項專利寬帶語音音頻編碼標准,該標准基於自適應多速率編碼而開發。 與AMR-NB(NarrowBand)相比,AMR-NB的音頻帶寬通常為300-3400Hz。但是AMR-WB的帶寬達到了50-7000 Hz。從而提高了語音質量。 AMR-WB由諾基亞和VoiceAge開發。並且在 2000 年 12 月,3GPP選擇自適應多速率寬帶語音編碼 AMR-WB算法作為第三代移動通信(3G)系統使用的語音編解碼算法。
2. 什么是RTP
RTP全名是Real-time Transport Protocol(實時傳輸協議)。它是IETF提出的一個標准,對應的RFC文檔為RFC3550(RFC1889為其過期版本)。RFC3550不僅定義了RTP,而且定義了配套的相關協議RTCP(Real-time Transport Control Protocol,即實時傳輸控制協議)。RTP用來為IP網上的語音、圖像、傳真等多種需要實時傳輸的多媒體數據提供端到端的實時傳輸服務。RTP為Internet上端到端的實時傳輸提供時間信息和流同步,但並不保證服務質量,服務質量由RTCP來提供。
3. AMR-WB音頻如何在RTP中存儲
AMR-WB共有兩種模式,分別為節省帶寬模式和字節對齊模式。兩種模式的包結構有所不同。
3.1. 節省帶寬模式
3.1.1. 單通道單幀場景
CMR(codec mode request)占4bits,模式請求字段。CMR=15代表接收方不需要對數據進行編碼保留原樣即可。
The table of contents (ToC)占6bits,內容信息表。具體格式如下:
F為1代表此幀不是包中的最后一幀,后面還有其他幀。F為0代表此幀為最后一幀,單通道單幀場景下只有一個TOC,TOC中的F必定為0。
FT代表幀類型,根據RTP類型的不同,幀類型所對應的表也有所不同。上面的FT=4代表AMR-NB的幀類型為4,根據對應表為7.4kbits/s 。如果此包為20ms,那么可以計算7.4 * 1000 / 50 = 148,正好為SpeechData的長度。
Q代表此幀是否為好幀,1為好幀,0為壞幀。有時需要根據具體場景,決定是否需要保留壞幀。
3.1.2. 單通道多幀場景
此包為AMR-WB的單通道多幀數據包。CMR為1,要求接收方的編碼器需要將編碼模式更改為AMR-WB 8.85 kbps。
此包一共包括4幀。其中第一幀的TOC-FT=0,代表此幀為AMR-WB 6.60kbit/s。第二幀的TOC-FT=9,代表此幀為AMR-WB SID。第三幀的TOC-FT=15,代表此幀為No Data。第四幀的TOC-FT=1,代表此幀為AMR-WB 8.85kbit/s。前三幀的TOC-F均為1,最后一幀的TOC-F為0,代表第四幀為包內的最后一幀。四幀的Q值均為0,證明沒有壞幀。
此包的Speech Data共有四幀四組,其中一組沒有長度:
1. 第一組長度為 6.60 * 1000 / 50 = 132 bit。
2. 第二組的長度根據 3GPP TS 26.201 文檔得知SID長度為40 bit。
3. 第三幀因為FT = 15,代表No Data。故為0。
4. 第四組長度為 8.85 * 1000 / 50 = 177 bit。
3.1. 字節對齊模式
字節對齊模式的整體格式與節省帶寬相同,需要注意的是CMR、TOC、Speech Data各段長度需要按照字節對齊即可。此處舉一個單通道多幀的例子:
可以看到CMR,TOC和Speech Data之后都有按照字節對齊。