一 引言<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
本文對AAC(Advanced Audio Coding)音頻編碼演算法進行總結。首先簡要介紹MPEG音頻(包括AAC)的發展曆程及AAC概況,然後結合FAAC(Free AAC)的代碼對AAC編碼演算法的各個模組進行比較詳盡的分析。
二 AAC概況
1 MPEG及其AAC音訊發展曆程
1988年ISO/IEC標準化組織成立了MPEG 格式(MPEG)(正式名稱ISO/IEC JTC1/SC29/WG11)來開發通用的運動映像,相關聲音以及映像聲音的組合的國際標準。從1988年以來,ISO/MPEG承擔了很多的視頻和音頻編碼的標準化工作。它所制定的標準在許多方面得到了廣泛的應用。
1992年末,MPEG完成了MPEG-1視頻編碼通訊協定。最後被採納為ISO/IEC IS 11172標準。與之對應的音頻部分分為三種操作模式(被稱為層:Layer),從Layer-1 到Layer-3編碼,提供逐級增進的音頻品質,當然,與此同時複雜度也逐級增高。Layer-3提供具有最高的複雜度和最好的音頻品質的編碼方法,就是廣泛被人們所知的MP3。
MPEG-2的音頻部分在兩方面對於MPEG-1進行了擴充,同時保持音頻編碼的回溯相容性:對於5.1聲道的支援,適應通常所謂的電影院音響效果;增加了對於16kHz,22.5kHz,24kHz採樣率的支援。這就是MPEG-2 BC(Back-Compatible)。
根據1994年提出的效驗模型發現如果引進新的演算法,放棄相容性可以顯著地提高編碼的效率,MPEG於是便放棄了原有的相容性要求,於是成立了一個新的工作項目,定義為AAC(Advanced Audio Coding),並於1997年形成了國際標準ISO 13818-7。這個標準是不相容MPEG-1的,被稱為MPEG-2 NBC(Non Back Compatible)編碼。
MPEG-4規定了兩種編碼方法來對音頻部分編碼。對於中到高位元速率的音頻是由改進了的AAC編碼實現的,低位元速率的音頻,則採用NTT(日本電信電話公司)等開發的TwinVQ編碼方法。
MPEG-4之後的MPEG-7和MPEG-21的注意力已經不是集中在提高品質降低碼率方面,而是轉而解決多媒體資料的表達檢索等問題。所以AAC是迄今為止MPEG所提出的品質最好的音頻編碼通訊協定。
AAC綜合了許多新的技術,有很多新的特性。它支援從8k到96k的各種採樣率,支援多種聲道配置方案。與MPEG Layer-3相比,AAC提高了頻率解析度,增加了線性預測和時域雜訊整形,改進了聯合立體聲編碼以及哈夫曼碼本,在時-頻變換中使用了自適應的長短窗切換機制,有效地增加了壓縮比,提高了音頻品質。這一切都使AAC擁有較其他編碼通訊協定更加優異的編碼品質和效能。
2 AAC演算法簡介
AAC系統包含了濾波器組、心理聲學模型、量化與編碼、預測、TNS、立體聲處理和增益控制等多種高效的編碼工具。這些模組或過程的有機組合形成了AAC系統的基本編解碼流程。在實際應用中,並不是所有的功能模組都是必需的,下表列出了各模組的可選性:
| 工具(模組)
|
可選性
|
| 碼流打包 |
必需 |
| 無雜訊編碼 |
必需 |
| 量化器 |
必需 |
| 縮放因子處理 |
必需 |
| M/S立體聲處理 |
可選 |
| 預測 |
可選 |
| IS(強度立體聲) / 耦合聲道處理 |
可選 |
| TNS |
可選 |
| 濾波器組 |
必需 |
| 增益控制(預先處理) |
可選 |
| 心理聲學模型(感知模組) |
必需 |
MPEG-2 AAC編碼器各模組的可選性
為了能夠適應於不同的應用場合,在AAC標準中定義了三種不同複雜度的架構(Profile)。分別為:
Main Profile:在這種架構具有最高的複雜度,可以用於儲存量和計算能力都很充足的場合。在這種架構中,利用了除增益控制以外的所有編碼工具來提高壓縮效率。
LC(Low Complexity) Profile:這種架構用於要求在有限的儲存空間和計算能力的條件下進行壓縮場合。在這種架構中,沒有預測和增益控制這兩種工具,TNS的階數比較低。
SSR(Scalable Sample Rate) Profile:在這種架構中,使用了增益控制工具,但是預測和耦合工具是不被允許的,具有較低的頻寬和TNS階數。對於最低的一個PQF子帶不使用增益控制工具。當頻寬降低時,SSR架構的複雜度也可降低,特別適應於網路頻寬變化的場合。
Main和LC架構式變化編碼演算法,採用MDCT作為其時/頻分析模組,SSR架構則採用混合濾波器組,先將訊號等頻寬地分成4個子帶,再作MDCT變換。在三種方案裡,通過選用不同模組在編碼品質和編碼演算法複雜度之間進行折衷。
AAC屬於感知音頻編碼。與所有感知音頻編碼類別似,其原理是利用人耳聽覺的掩蔽效應,對變換域中的譜線進行編碼,去除將被掩蔽的資訊,並控制編碼時的量化雜訊不被分辨。
在編碼過程中,時域訊號先通過濾波器組(進行加窗MDCT變換)分解成頻域譜線,同時時域訊號經過MPEG中II型心理聲學模型獲得信掩比,掩蔽閾值,M/S以及強度立體聲編碼需要的控制資訊,還有濾波器組中應使用長短窗選擇資訊。暫態雜訊整形(TNS)模組將雜訊整形為與能量譜包絡形狀類似,控制雜訊的分布。強度立體聲編碼和預測以及M/S立體聲編碼都能有效降低編碼所需位元數,隨後的量化模組用兩個嵌套迴圈進行了位元分配並控制量化雜訊小於掩蔽閾值,之後就是改進了碼本的哈夫曼編碼。這樣,與前面各模組得到的邊帶資訊一起,就能構成AAC碼流了。
以下將分別對各主要模組的演算法原理和相應的實現代碼進行分析。