前言
????上一篇的時(shí)候,已經(jīng)簡(jiǎn)單介紹過一些音頻的基礎(chǔ)知識(shí)。我們說到,通常采用脈沖代碼調(diào)制編碼,即PCM(Pulse Code Modulation)編碼,通過抽樣、量化、編碼三個(gè)步驟將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字編碼。但是這和市場(chǎng)上常見的編解碼有什么區(qū)別呢?
????市場(chǎng)上存在多種類型的編碼,我們?cè)撊绾芜x擇呢?
編碼分類
????根據(jù)編碼方式的不同,音頻編碼技術(shù)分為三種:波形編碼、參數(shù)編碼和混合編碼。一般來說,波形編碼的話音質(zhì)量高,但編碼速率也很高;參數(shù)編碼的編碼速率很低,產(chǎn)生的合成語音的音質(zhì)不高;混合編碼使用參數(shù)編碼技術(shù)和波形編碼技術(shù),編碼速率和音質(zhì)介于它們之間。
波形編碼
????波形編碼是指不利用生成音頻信號(hào)的任何參數(shù),直接將時(shí)間域信號(hào)變換為數(shù)字代碼,使重構(gòu)的語音波形盡可能地與原始語音信號(hào)的波形形狀保持一致。波形編碼的基本原理是在時(shí)間軸上對(duì)模擬語音信號(hào)按一定的速率抽樣,然后將幅度樣本分層量化,并用代碼表示。
????波形編碼方法簡(jiǎn)單、易于實(shí)現(xiàn)、適應(yīng)能力強(qiáng)并且語音質(zhì)量好。不過因?yàn)閴嚎s方法簡(jiǎn)單也帶來了一些問題:壓縮比相對(duì)較低,需要較高的編碼速率。一般來說,波形編碼的復(fù)雜程度比較低,編碼速率較高、通常在16 kbit/s以上,質(zhì)量相當(dāng)高。但編碼速率低于16 kbit/s時(shí),音質(zhì)會(huì)急劇下降。
????最簡(jiǎn)單的波形編碼方法是PCM(Pulse Code Modulation,脈沖編碼調(diào)制),它只對(duì)語音信號(hào)進(jìn)行采樣和量化處理。優(yōu)點(diǎn)是編碼方法簡(jiǎn)單,延遲時(shí)間短,音質(zhì)高,重構(gòu)的語音信號(hào)與原始語音信號(hào)幾乎沒有差別。不足之處是編碼速率比較高(64 kbit/s),對(duì)傳輸通道的錯(cuò)誤比較敏感。
參數(shù)編碼
????參數(shù)編碼是從語音波形信號(hào)中提取生成語音的參數(shù),使用這些參數(shù)通過語音生成模型重構(gòu)出語音,使重構(gòu)的語音信號(hào)盡可能地保持原始語音信號(hào)的語意。也就是說,參數(shù)編碼是把語音信號(hào)產(chǎn)生的數(shù)字模型作為基礎(chǔ),然后求出數(shù)字模型的模型參數(shù),再按照這些參數(shù)還原數(shù)字模型,進(jìn)而合成語音。
????參數(shù)編碼的編碼速率較低,可以達(dá)到2.4 kbit/s,產(chǎn)生的語音信號(hào)是通過建立的數(shù)字模型還原出來的,因此重構(gòu)的語音信號(hào)波形與原始語音信號(hào)的波形可能會(huì)存在較大的區(qū)別、失真會(huì)比較大。而且因?yàn)槭艿秸Z音生成模型的限制,增加數(shù)據(jù)速率也無法提高合成語音的質(zhì)量。不過,雖然參數(shù)編碼的音質(zhì)比較低,但是保密性很好,一直被應(yīng)用在軍事上。典型的參數(shù)編碼方法為L(zhǎng)PC(Linear Predictive Coding,線性預(yù)測(cè)編碼)。
混合編碼
????混合編碼是指同時(shí)使用兩種或兩種以上的編碼方法進(jìn)行編碼。這種編碼方法克服了波形編碼和參數(shù)編碼的弱點(diǎn),并結(jié)合了波形編碼高質(zhì)量和參數(shù)編碼的低編碼速率,能夠取得比較好的效果。
編碼格式
PCM編碼
????PCM是Pulse Code Modulation的縮寫。上一篇我們提到了PCM大致的工作流程,我們現(xiàn)在不需要關(guān)心PCM最終編碼采用的是什么計(jì)算方式,我們只需要知道PCM編碼的音頻流的優(yōu)點(diǎn)和缺點(diǎn)就可以了。PCM編碼的最大的優(yōu)點(diǎn)就是音質(zhì)好,最大的缺點(diǎn)就是體積大。
????PCM被約定俗成為無損編碼,是相對(duì)于mp3,aac編碼的。相對(duì)自然界的信號(hào),音頻編碼最多只能做到無限接近(至少目前的技術(shù)只能這樣),任何數(shù)字音頻編碼方案都是有損的,因?yàn)闊o法完全還原。在計(jì)算機(jī)應(yīng)用中,能夠達(dá)到最高保真水平的就是PCM編碼,被廣泛用于素材保存及音樂欣賞,CD、DVD以及我們常見的WAV文件中均有應(yīng)用。PCM代表了數(shù)字音頻中最佳的保真水準(zhǔn),但是并不意味著PCM就能夠確保信號(hào)絕對(duì)保真,PCM也只能做到最大程度的無限接近。
Opus編碼
????Opus是一個(gè)有損聲音編碼的格式,Opus的前身是celt編碼器。是由IETF開發(fā),適用于網(wǎng)絡(luò)上的實(shí)時(shí)聲音傳輸,標(biāo)準(zhǔn)格式為RFC6716。使用上沒有任何專利或限制。
????在當(dāng)今的有損音頻格式爭(zhēng)奪上,擁有眾多不同編碼器的AAC格式打敗了同樣頗有潛力的Musepack、Vorbis等格式,而在Opus格式誕生后,情況似乎不同了。通過諸多的對(duì)比測(cè)試,低碼率下Opus完勝曾經(jīng)優(yōu)勢(shì)明顯的HE AAC,中碼率就已經(jīng)可以媲敵碼率高出30%左右的AAC格式,而高碼率下更接近原始音頻。
????簡(jiǎn)單來說,opus是一個(gè)高保真的適合在網(wǎng)絡(luò)中傳輸?shù)拈_源的語音編碼格式,相對(duì)于其他編碼格式來講,保真性更好,但體積會(huì)稍微大一些。
Opus官網(wǎng)地址:http://www.opus-codec.org/
OGG編碼
????OGG全稱是OGG Vorbis,是一種新的音頻壓縮格式。OGG是一個(gè)龐大的多媒體開發(fā)計(jì)劃的項(xiàng)目名稱,將涉及視頻音頻等方面的編碼開發(fā)。整個(gè)OGG項(xiàng)目計(jì)劃的目的就是向任何人提供完全免費(fèi)多媒體編碼方案!OGG的信念就是:OPEN!FREE!Vorbis這個(gè)詞匯是特里·普拉特柴特的幻想小說《Small Gods》中的一個(gè)"花花公子"人物名。這個(gè)詞匯成為了OGG項(xiàng)目中音頻編碼的正式命名。目前Vorbis已經(jīng)開發(fā)成功,并且開發(fā)出了編碼器。
????和MP3一樣,Ogg Vorbis是一種靈活開放的音頻編碼,能夠在編碼方案已經(jīng)固定下來后還能對(duì)音質(zhì)進(jìn)行明顯的調(diào)節(jié)和新算法的改良。因此,它的聲音質(zhì)量將會(huì)越來越好,和MP3相似,Ogg Vorbis更像一個(gè)音頻編碼框架,可以不斷導(dǎo)入新技術(shù)逐步完善。和MP3一樣,OGG也支持VBR。
AAC編碼
????AAC,全稱Advanced Audio Coding,是一種專為聲音數(shù)據(jù)設(shè)計(jì)的文件壓縮格式。與MP3不同,它采用了全新的算法進(jìn)行編碼,更加高效,具有更高的“性價(jià)比”。利用AAC格式,可使人感覺聲音質(zhì)量沒有明顯降低的前提下,更加小巧。
????AAC本身編解碼器質(zhì)量非常高。作為一種高壓縮比的音頻壓縮算法,AAC通常壓縮比為18:1??(也有資料說為20:1),但是還能保存較好的音質(zhì)。在后面的文章《Android 音視頻之音頻錄制》中,我用demo驗(yàn)證過,1分鐘錄制的音頻文件只有101KB的大小,想比較pcm數(shù)據(jù),的確被壓縮很多。
編碼比較
????之前文章中介紹過。目前市場(chǎng)編解碼器性能比較Opus > Vorbis > AAC 。我們先來看一張音頻編碼器的性能對(duì)比圖:
????注意,圖中綠色線條是免費(fèi)的,開源的;藍(lán)色線條是免費(fèi)的,但是不開源的;紅色線條是收費(fèi)的,不開源的
????圖中我們可以很直觀的看到,Opus編碼從低碼率到高碼率上都是支持的,并且在高碼率上也是略強(qiáng)于AAC和Vorbis編碼的。而且相比較在64kb/s上的G.711編碼,Opus的質(zhì)量是遠(yuǎn)遠(yuǎn)高于他的。
????AAC編碼在2000年之后也新添加了一些技術(shù)算法,使他在低碼率上也能較好的支持。之后我會(huì)在《Android 音視頻之AAC編碼》中著重介紹AAC,有興趣的伙伴可以關(guān)注一下。
有問題的地方請(qǐng)大家?guī)兔χ赋觯x謝。
持續(xù)更新中...