一.AAC概述
AAC是高級音頻編碼(Advanced Audio Coding)的縮寫,出現(xiàn)于1997年,最初是基于MPEG-2的音頻編碼技術(shù)。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同開發(fā),目的是取代MP3格式。2000年,MPEG-4標準出臺,AAC重新集成了其它技術(shù)(PS,SBR),為區(qū)別于傳統(tǒng)的MPEG-2 AAC,故含有SBR或PS特性的AAC又稱為MPEG-4 AAC。
AAC是新一代的音頻有損壓縮技術(shù),它通過一些附加的編碼技術(shù)(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三種主要的編碼,LC-AAC就是比較傳統(tǒng)的AAC,相對而言,主要用于中高碼率(>=80Kbps),HE-AAC(相當于AAC+SBR)主要用于中低碼(<=80Kbps),而新近推出的HE-AACv2(相當于AAC+SBR+PS)主要用于低碼率(<=48Kbps),事實上大部分編碼器設(shè)成<=48Kbps自動啟用PS技術(shù),而>48Kbps就不加PS,就相當于普通的HE-AAC。
優(yōu)點:相對于mp3,AAC格式的音質(zhì)更佳,文件更小。
不足:AAC屬于有損壓縮的格式,與時下流行的APE、FLAC等無損格式相比音質(zhì)存在“本質(zhì)上”的差距。加之,傳輸速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC頭上“小巧”的光環(huán)不復(fù)存在。
二、AAC規(guī)格簡述
AAC共有9種規(guī)格,以適應(yīng)不同的場合的需要:
MPEG-2 AAC LC 低復(fù)雜度規(guī)格(Low Complexity)--比較簡單,沒有增益控制,但提高了
編碼效率,在中等碼率的編碼效率以及音質(zhì)方面,都能找到平衡點
MPEG-2 AAC Main 主規(guī)格
MPEG-2 AAC SSR 可變采樣率規(guī)格(Scaleable Sample Rate)
MPEG-4 AAC LC 低復(fù)雜度規(guī)格(Low Complexity)------現(xiàn)在的手機比較常見的MP4文件中
的音頻部份就包括了該規(guī)格音頻文件
MPEG-4 AAC Main 主規(guī)格 ------包含了除增益控制之外的全部功能,其音質(zhì)最好
MPEG-4 AAC SSR 可變采樣率規(guī)格(Scaleable Sample Rate)
MPEG-4 AAC LTP 長時期預(yù)測規(guī)格(Long Term Predicition)
MPEG-4 AAC LD 低延遲規(guī)格(Low Delay)
MPEG-4 AAC HE 高效率規(guī)格(High Efficiency)-----這種規(guī)格適合用于低碼率編碼,有
Nero ACC 編碼器支持
目前使用最多的是LC和HE(適合低碼率)。流行的Nero AAC編碼程序只支持LC,HE,HEv2這三種規(guī)格,編碼后的AAC音頻,規(guī)格顯示都是LC。HE其實就是AAC(LC)+SBR技術(shù),HEv2就是AAC(LC)+SBR+PS技術(shù);
Hev1和HEv2用此圖簡單表示:
(圖中AAC即指的是原來的AAC-LC)
HE:“High Efficiency”(高效性)。HE-AAC v1(又稱AACPlusV1,SBR),用容器的方法實現(xiàn)了AAC(LC)+SBR技術(shù)。SBR其實代表的是Spectral Band Replication(頻段復(fù)制)。簡要敘述一下,音樂的主要頻譜集中在低頻段,高頻段幅度很小,但很重要,決定了音質(zhì)。如果對整個頻段編碼,若是為了保護高頻就會造成低頻段編碼過細以致文件巨大;若是保存了低頻的主要成分而失去高頻成分就會喪失音質(zhì)。SBR把頻譜切割開來,低頻單獨編碼保存主要成分,高頻單獨放大編碼保存音質(zhì),“統(tǒng)籌兼顧”了,在減少文件大小的情況下還保存了音質(zhì),完美的化解這一矛盾。
HEv2:用容器的方法包含了HE-AAC v1和PS技術(shù)。PS指“parametric stereo”(參數(shù)立體聲)。原來的立體聲文件文件大小是一個聲道的兩倍。但是兩個聲道的聲音存在某種相似性,根據(jù)香農(nóng)信息熵編碼定理,相關(guān)性應(yīng)該被去掉才能減小文件大小。所以PS技術(shù)存儲了一個聲道的全部信息,然后,花很少的字節(jié)用參數(shù)描述另一個聲道和它不同的地方。
三、AAC特點
(1)AAC是一種高壓縮比的音頻壓縮算法,但它的壓縮比要遠超過較老的音頻壓縮算法,
如AC-3、MP3等。并且其質(zhì)量可以同未壓縮的CD音質(zhì)相媲美。
(2)同其他類似的音頻編碼算法一樣,AAC也是采用了變換編碼算法,但AAC使用了分辨率
更高的濾波器組,因此它可以達到更高的壓縮比。
(3)AAC使用了臨時噪聲重整、后向自適應(yīng)線性預(yù)測、聯(lián)合立體聲技術(shù)和量化哈夫曼編碼等最新技術(shù),這些新技術(shù)的使用都使壓縮比得到進一步的提高。
(4)AAC支持更多種采樣率和比特率、支持1個到48個音軌、支持多達15個低頻音軌、具有
多種語言的兼容能力、還有多達15個內(nèi)嵌數(shù)據(jù)流。
(5)AAC支持更寬的聲音頻率范圍,最高可達到96kHz,最低可達8KHz,遠寬于MP3的16KHz-48kHz的范圍。
(6)不同于MP3及WMA,AAC幾乎不損失聲音頻率中的甚高、甚低頻率成分,并且比WMA在頻譜結(jié)構(gòu)上更接近于原始音頻,因而聲音的保真度更好。專業(yè)評測中表明,AAC比WMA聲音更清晰,而且更接近原音。
(7)AAC采用優(yōu)化的算法達到了更高的解碼效率,解碼時只需較少的處理能力。
四、AAC音頻文件格式
1. AAC的音頻文件格式有ADIF & ADTS:
ADIF:Audio Data Interchange Format 音頻數(shù)據(jù)交換格式。這種格式的特征是可以確定的找到這個音頻數(shù)據(jù)的開始,不需進行在音頻數(shù)據(jù)流中間開始的解碼,即它的解碼必須在明確定義的開始處進行。故這種格式常用在磁盤文件中。
ADTS:Audio Data Transport Stream 音頻數(shù)據(jù)傳輸流。這種格式的特征是它是一個有同步字的比特流,解碼可以在這個流中任何位置開始。它的特征類似于mp3數(shù)據(jù)流格式。
簡單說,ADTS可以在任意幀解碼,也就是說它每一幀都有頭信息。ADIF只有一個統(tǒng)一的頭,所以必須得到所有的數(shù)據(jù)后解碼。且這兩種的header的格式也是不同的,目前一般編碼后的和抽取出的都是ADTS格式的音頻流。兩者具體的組織結(jié)構(gòu)如下所示:
AAC的ADIF格式見下圖:
AAC的ADTS的一般格式見下圖:
圖中表示出了ADTS一幀的簡明結(jié)構(gòu),其兩邊的空白矩形表示一幀前后的數(shù)據(jù)。
2. ADIF和ADTS的header
ADIF 的頭信息:
ADIF頭信息位于AAC文件的起始處,接下來就是連續(xù)的 raw data blocks。
組成ADIF頭信息的各個域如下所示:
ADTS 的固定頭信息:
ADTS的可變頭信息:
(1)幀同步目的在于找出幀頭在比特流中的位置,13818-7規(guī)定,aac ADTS格式的幀頭
同步字為12比特的“1111 1111 1111”.
(2)ADTS的頭信息為兩部分組成,其一為固定頭信息,緊接著是可變頭信息。固定頭信息中
的數(shù)據(jù)每一幀都相同,而可變頭信息則在幀與幀之間可變。
3.AAC元素信息
在AAC中,原始數(shù)據(jù)塊的組成可能有六種不同的元素:
SCE: Single Channel Element單通道元素。單通道元素基本上只由一個ICS組成。一個
原始數(shù)據(jù)塊最可能由16個SCE組成。
CPE: Channel Pair Element 雙通道元素,由兩個可能共享邊信息的ICS和一些聯(lián)合立體
聲編碼信息組成。一個原始數(shù)據(jù)塊最多可能由16個SCE組成。
CCE: Coupling Channel Element 藕合通道元素。代表一個塊的多通道聯(lián)合立體聲信息
或者多語種程序的對話信息。
LFE: Low Frequency Element 低頻元素。包含了一個加強低采樣頻率的通道。
DSE: Data Stream Element 數(shù)據(jù)流元素,包含了一些并不屬于音頻的附加信息。
PCE: Program Config Element 程序配置元素。包含了聲道的配置信息。它可能出現(xiàn)在
ADIF 頭部信息中。
FIL: Fill Element 填充元素。包含了一些擴展信息。如SBR,動態(tài)范圍控制信息等。
4.AAC文件處理流程
(1) 判斷文件格式,確定為ADIF或ADTS
(2) 若為ADIF,解ADIF頭信息,跳至第6步。
(3) 若為ADTS,尋找同步頭。
(4)解ADTS幀頭信息。
(5)若有錯誤檢測,進行錯誤檢測。
(6)解塊信息。
(7)解元素信息。
五、AAC解碼流程
(AAC解碼流程圖)
在主控模塊開始運行后,主控模塊將AAC比特流的一部分放入輸入緩沖區(qū),通過查找同步字
得到一幀的起始,找到后,根據(jù)ISO/IEC 13818-7所述的語法開始進行Noisless Decoding(無
噪解碼),無噪解碼實際上就是哈夫曼解碼,通過反量化(Dequantize)、聯(lián)合立體聲(Joint
Stereo),知覺噪聲替換(PNS),瞬時噪聲整形(TNS),反離散余弦變換(IMDCT),頻段復(fù)制
(SBR)這幾個模塊之后,得出左右聲道的PCM碼流,再由主控模塊將其放入輸出緩沖區(qū)輸出到
聲音播放設(shè)備。
技術(shù)解析:
1.主控模塊:
所謂的主控模塊,它的主要任務(wù)是操作輸入輸出緩沖區(qū),調(diào)用其它各模塊協(xié)同工作。
其中,輸入輸出緩沖區(qū)均由DSP控制模塊提供接口。輸出緩沖區(qū)中將存放的數(shù)據(jù)為解碼出來的
PCM數(shù)據(jù),代表了聲音的振幅。它由一塊固定長度的緩沖區(qū)構(gòu)成,通過調(diào)用DSP控制模塊的接
口函數(shù),得到頭指針,在完成輸出緩沖區(qū)的填充后,調(diào)用中斷處理輸出至I2S接口所連接的
音頻ADC芯片(立體聲音頻DAC和DirectDrive耳機放大器)輸出模擬聲音。
2.Noisless Decoding(無噪解碼):
無噪編碼就是哈夫曼編碼,它的作用在于進一步減少尺度因子和量化后頻譜的冗余,
即將尺度因子和量化后的頻譜信息進行哈夫曼編碼。全局增益編碼成一個8位的無符號整數(shù),
第一個尺度因子與全局增益值進行差分編碼后再使用尺度因子編碼表進行哈夫曼編碼。后續(xù)
的各尺度因子都與前一個尺度因子進行差分編碼。量化頻譜的無噪編碼有兩個頻譜系數(shù)的劃分。 其一為4元組和2元組的劃分,另一個為節(jié)劃分。對前一個劃分來說,確定了一次哈夫曼表
查找出的數(shù)值是4個還是2個。對后一個劃分來說,確定了應(yīng)該用哪一個哈夫曼表,一節(jié)中
含有若干的尺度因子帶并且每節(jié)只用一個哈夫曼表。
——分段
無噪聲編碼將輸入的1024個量化頻譜系數(shù)分為幾個段(section),段內(nèi)的各點均使用
同一個哈夫曼表,考慮到編碼效率,每一段的邊界最好同尺度因子帶的邊界重合。所以每一段
必段傳送信息應(yīng)該有:段長度,所在的尺度因子帶,使用的哈夫曼表。
——分組和交替
分組是指忽略頻譜系數(shù)所在窗,將連續(xù)的,具有相同尺度因子帶的頻譜系數(shù)分為一組放在
一起,共享一個尺度因子從而得到更好的編碼效率。這樣做必然會引起交替,即本來是以
c[組][窗][尺度因子帶][ 系數(shù)索引]
為順序的系數(shù)排列,變?yōu)閷⒊叨纫蜃訋南禂?shù)放在一起:
c[組][尺度因子帶][窗][ 系數(shù)索引]
這樣就引起了相同窗的系數(shù)的交替。
——大量化值的處理
大量化值在AAC中有兩種處理方法:在哈夫曼編碼表中使用escape標志或使用脈沖
escape方法。前者跟mp3編碼方法相似,在許多大量化值出現(xiàn)時采用專門的哈夫曼表,這個表
暗示了它的使用將會在哈夫曼編碼后面跟跟一對escape值及對值的符號。在用脈沖escape
方法時,大數(shù)值被減去一個差值變?yōu)樾?shù)值,然后使用哈夫曼表編碼,后面會跟一個脈沖結(jié)構(gòu)
來幫助差值的還原.
3.尺度因子解碼及逆量化
在AAC編碼中,逆量化頻譜系數(shù)是由一個非均勻量化器來實現(xiàn)的,在解碼中需進行其逆運算。 即保持符號并進行4/3次冪運算。
在頻域調(diào)整量化噪聲的基本方法就是用尺度因子來進行噪聲整形。尺度因子就是一個用來改
變在一個尺度因子帶的所有的頻譜系數(shù)的振幅增益值。使用尺度因子這種機制是為了使用非
均勻量化器在頻域中改變量化噪聲的比特分配。
——尺度因子帶(scalefactor-band)
頻率線根據(jù)人耳的聽覺特性被分成多個組,每個組對應(yīng)若干個尺度因子,這些組就叫做尺度
因子帶。為了減少信息含有短窗的邊信息,連續(xù)的短窗可能會被分為一組,即將若干個短窗
當成一個窗口一起傳送,然后尺度因子將會作用到所有分組后的窗口去。
4.聯(lián)合立體聲(Joint Stereo)
聯(lián)合立體聲的是對原來的取樣進行的一定的渲染工作,使聲音更”好聽”些。
5.知覺噪聲替換(PNS)
知覺噪聲替換模塊是一種以參數(shù)編碼的方式模擬噪聲的模塊。在判別出音頻值中的噪
聲后,將些噪聲不進行量化編碼,而是采用一些參數(shù)告訴解碼器端這是某種噪聲,然后解
碼器端將會對這些噪聲用一些隨機的編碼來制造出這一類型的噪聲。
在具體操作上,PNS模塊對每個尺度因子帶偵測頻率4kHz以下的信號成分。如果這個
信號既不是音調(diào),在時間上也無強烈的能量變動,就被認為是噪聲信號。其信號的音調(diào)及能
量變化都在心理聲學(xué)模型中算出。
在解碼中,如果發(fā)現(xiàn)使用了哈夫曼表13(NOISE_HCB),則表明使用了PNS。由于M/S立體
聲解碼與PNS解碼互斥,故可以用參數(shù)ms_used來表明是否兩個聲道都用同樣的PNS。如果
ms_used參數(shù)為1,則兩個聲道會用同樣的隨機向量來生成噪聲信號。PNS的能量信號用
noise_nrg來表示,如果使用了PNS,則能量信號將會代替各自的尺度因子來傳送。噪聲能量
編碼同尺度因子一樣,采用差分編碼的方式。第一個值同樣為全局增益值。它同強度立體聲位
置值及尺度因子交替地放在一起,但對差分解碼來說又彼此忽略。即下一個噪聲能量值以上一
個噪聲能量值而不是強度立體聲位置或尺度因子為標準差分解碼。隨機能量將會在一個尺度
因子帶內(nèi)產(chǎn)生noise_nrg所計算出的平均能量分布。此項技術(shù)只有在MPEG-4 AAC中才會使用。
6.瞬時噪聲整形(TNS)
這項神奇的技術(shù)可以通過在頻率域上的預(yù)測,來修整時域上的量化噪音的分布。在一
些特殊的語音和劇烈變化信號的量化上,TNS技術(shù)對音質(zhì)的提高貢獻巨大!
TNS瞬態(tài)噪聲整形用于控制一個轉(zhuǎn)換窗口內(nèi)的瞬時噪聲形態(tài)。它是用一個對單個通道的
濾波過程來實現(xiàn)的。傳統(tǒng)的變換編碼方案常常遇到信號在時域變化非常劇烈的問題,特別是語
音信號,這個問題是因為量化后的噪聲分布雖然在頻率域上得到控制,但在時域上卻以一個常
數(shù)分布在一個轉(zhuǎn)換塊內(nèi)。如果這種塊中信號變化得很劇烈卻又不轉(zhuǎn)向一個短塊去,那這個常數(shù)
分布的噪聲將會被聽到。
TNS的原理利用了時域和頻域的二元性和LPC(線性預(yù)測編碼)的時頻對稱性,即在其中的
任意一個域上做編碼與在另一域上做預(yù)測編碼等效,也就是說,在一個域內(nèi)做預(yù)測編碼可以在
另一域內(nèi)增加其解析度。量化噪聲產(chǎn)生是在頻域產(chǎn)生的,降低了時域的解析度,故在這里是在
頻域上做預(yù)測編碼。在AACplus中,由于基于AAC profile LC,故TNS的濾波器階數(shù)被限制在
12階以內(nèi)。
7.反離散余弦變換(IMDCT)
將音頻數(shù)據(jù)從頻域轉(zhuǎn)換到時域的過程主要是由將頻域數(shù)據(jù)填入一組IMDCT濾波器來實現(xiàn)
的。在進行IMDCT變換后,輸出數(shù)值經(jīng)過加窗,疊加,最后得到時域數(shù)值。
8.頻段復(fù)制(SBR)
簡要敘述,音樂的主要頻譜集中在低頻段,高頻段幅度很小,但很重要,決定了
音質(zhì)。如果對整個頻段編碼,若是為了保護高頻就會造成低頻段編碼過細以致文件巨大;若是
保存了低頻的主要成分而失去高頻成分就會喪失音質(zhì)。SBR把頻譜切割開來,低頻單獨編碼保存
主要成分,高頻單獨放大編碼保存音質(zhì),“統(tǒng)籌兼顧”了,在減少文件大小的情況下還保存了
音質(zhì),完美的化解這一矛盾。
9.參數(shù)立體聲(PS)
對于之前的立體聲文件來說,其文件大小是單聲道的兩倍,但是兩個聲道的聲音存在
某種相似性,根據(jù)香農(nóng)信息熵編碼定理,相關(guān)性應(yīng)該被去掉才能減小文件大小。所以PS技術(shù)
存儲了一個聲道的全部信息,之后,用很少的字節(jié)當作參數(shù)來描述另一個聲道和它不同的地方。
術(shù)語說明:
AAC: Advanced Audio Coding 高級音頻編碼
AAC LC: AAC with Low Complexity AAC的低復(fù)雜度配置
AAC plus: 也叫HE-AAC, AAC+,MPEG4 AAC LC加入SBR模塊后形成的一個AAC版本
MPEG:Motion Picture Expert Group
IMDCT:反離散余弦變換
ADIF:Audio Data Interchange Format 音頻數(shù)據(jù)交換格式
ADTS:Audio Data Transport Stream 音頻數(shù)據(jù)傳輸流
SCE: Single Channel Element單通道元素
CPE: Channel Pair Element 雙通道元素
CCE: Coupling Channel Element 藕合通道元素
DSE: Data Stream Element 數(shù)據(jù)流元素
PCE: Program Config Element 程序配置元素
FIL: Fill Element 填充元素
ICS: Individual Channel Stream 獨立通道流
PNS: Perceptual Noise Substitution 知覺噪聲替換
SBR: Spectral Band Replication 頻段復(fù)制
TNS: Temporal Noise Shaping 瞬時噪聲整形
ch:channel 通道
PS:parametric stereo 參數(shù)立體聲
SBR:Spectral Band Replication 頻段復(fù)制
AAC格式用什么播放器?
在早期除了蘋果之外,支持AAC的還有 Sony Walkman(NWZ-A、NWZ-S、NWZ-E、NWZ-X 系列)、任天堂 NDSi 和魅族等設(shè)備。后來,隨著關(guān)注AAC的音樂愛好者越來越多,它的優(yōu)勢逐漸被用戶認知。支持AAC的硬件設(shè)備無論是數(shù)量還是品類,都得到高速增長。
另一方面,很多流媒體電視和電臺廣播已經(jīng)在普遍使用AAC格式了。知乎上有網(wǎng)友表示
比如目前優(yōu)酷等視頻網(wǎng)站的 flv 格式中,對音頻的封裝都是用AAC。畢竟在視頻廠商來看,AAC比MP3節(jié)省的那點流量是非常有意義的,省流量就是省錢,積少成多。
而現(xiàn)在,MP3的主動退休或許也將給AAC帶來更多的發(fā)展空間。
小旭音樂是一家專攻游戲音樂制作的公司,他們的音頻技術(shù)總監(jiān)張詩語介紹到:
目前我們想客戶提供 WAV 格式,根據(jù)客戶需要大部分會轉(zhuǎn)成MP3或者 Ogg,主要還是看游戲引擎對哪種支持更好?,F(xiàn)在隨著用戶對于音質(zhì)的追求越來越高,對于游戲中音頻格式的需求可能會有很多變化。
MP3退出歷史舞臺對于音樂服務(wù)提供商來說可能會有一定的影響。據(jù)小編了解,大部分的開發(fā)者的曲庫都是MP3的,如果未來趨勢特別明顯的話,可能都需要向用戶提供AAC的格式。
AAC取代MP3可能將成為現(xiàn)實。不過無論如何,在音樂格式的歷史上,MP3所達到的高度和地位,會被這一代聽過MP3的人永遠記住。
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點擊進入論壇