視頻技術詳解:語音編解碼技術演進和應用選型

圖片描述
本文來自現網易雲音樂音視頻實驗室負責人劉華平在LiveVideoStackCon 2017大會上的分享,並由LiveVideoStack整理而成。分享中劉華平以時間爲主線,講述了語音編解碼技術的演進路線及實際應用中的技術選型。

文 / 劉華平

整理 / LiveVideoStack

大家好,我是劉華平,從畢業到現在我一直在從事音視頻領域相關工作,也有一些自己的創業項目,曾爲早期Google Android SDK多媒體架構的構建作出貢獻。

就音頻而言,無論是算法多樣性,Codec種類還是音頻編解碼複雜程度都遠遠比視頻要高。視頻的Codec目前還主要是以宏塊爲處理單元,預測加變換的混合編碼框架,例如H.264和H.265都是在這一框架下,另外在應用中,某一時間往往單的視頻編碼能主導,當前H.264就佔據了90%以上的市場份額。,而音頻則相當複雜,且不同的場景必須要選擇不同的音頻編解碼器。以下就是本次爲大家分享的主要內容,希望通過此次分享可以使大家對音頻編解碼有一個整體的認識,並在實際應用中有參考的依據。

圖片描述

1、語言/音頻編碼總表

圖片描述

上圖展示的是語言/音頻編碼總表,可以看到其比視頻編碼要複雜得多,單純的算法也遠遠比視頻要更加複雜。

2、數字語言基本要素

圖片描述

數字聲音具有三個要素:採樣率、通道數、量化位數。

3、爲什麼要壓縮

圖片描述

壓縮音頻,主要是爲了在降低帶寬負擔的同時爲視頻騰出更多帶寬空間。

4、編碼器考慮因素

圖片描述

通過一些特定的壓縮算法,可以壓縮音頻文件至原來的1/10,同時人耳也無法分辨壓縮前後的聲音質量差異,需要滿足多種條件才能實現這種效果;而對於編碼器,無論是設計階段還是使用階段,我們都需要考慮最佳壓縮效果、算法的複雜度與算法的延時,結合特殊場景進行特定的設計;而兼容性也是我們不能不考慮的重點。

4.1 語音經典編碼模型——發音模型

圖片描述

我們的很多編解碼器都是基於綜合人的發音模型與一些和聽覺相關的理論支持研究提出的特定編解碼算法。初期我們通過研究人的發音原理來設計音頻編解碼的算法,包括端到端的濾波或輕濁音等,只有充分理解人的發聲原理我們才能在編解碼端做出有價值的優化。

1)LPC

圖片描述
圖片描述

LPC作爲經典語音編碼模式,其本質是一個線性預測的過程。早期的G.7系列編碼模型便是通過此模型對整個語音進行編碼,上圖展示的過程可與之前的人發聲過程進行匹配,每個環節都有一個相應的模塊用來支撐人發聲的過程。其中使用了AR數學模型進行線性預測,此算法也是現在很多語音編碼的重要組成模塊。

2)G.729

圖片描述

G.729同樣是經典的語音編碼模型之一,也是我們學習語音編碼的一個入門級Codec。G.729的文檔十分完善,包括每個模塊的源代碼在內都可直接下載。G.729可以說是在早期發聲模型基礎上的改進,需要關注的性能指標是幀長與算法上的延時,包括語音質量的MOS分。G.729也有很多變種,由於語音需要考慮系統兼容性,不同的系統指定攜帶的Codec也不同,音頻編碼的複雜程度要遠高於視頻編碼。

4.2 語音經典編碼模型——聽覺模型

圖片描述

除了研究人發聲的原理,我們還需要研究人聽聲的原理,從而更好實現聲音的收集與處理。一個聲音信號是否能被人耳聽見主要取決於聲音信號的頻率、強度與其他音的干擾。心理聲學模型便是用來找出音頻信號中存在的冗餘信息從而實現在壓縮聲音信號的同時不影響聽覺的目的。心理聲學理論的成熟爲感知編碼系統奠定了理論基礎,這裏的感知編碼主要是ISO編碼模型,主要覆蓋的聲學原理有臨界頻帶、絕對聽覺閾值、頻域掩蔽、時域掩蔽等。

圖片描述

無論是MP3還是AAC以至於到後面的杜比音效都是基於聽覺模型進行的探索與創新。

1)臨界頻帶

圖片描述

臨界頻帶主要用於心理聲學模型。由於聲音頻率與掩蔽曲線並非線性關係,爲從感知上來統一度量聲音頻率,我們引入了“臨界頻帶”的概念。人耳對每段的某個頻率的靈敏度不同,二者關係是非線性的。通常我們會將人可以聽到的整個頻率也就是從20Hz到16KHz分爲24個頻帶,可在其中進行時域或頻域類的掩蔽,將一些冗餘信息從編碼中去除從而有效提升壓縮率。

2)絕對聽覺閾值

圖片描述

絕對聽覺閾值也可有效提升壓縮率,基於心理聲學模型,可去除編碼中的冗餘部分。

4.3 經典音頻編碼:ISO
圖片描述

我們可將最早的MP3 Layer1理解爲第一代的ISO感知編碼,隨後的一些純量化內容更多的是在壓縮上進行改進而核心一直未改變。從MP3 Layer1到Layer2與Layer3,主要的改變是心理聲學模型的迭代。

圖片描述
圖片描述

上圖展示的是Encode與Decode的迴路。輸入的PCM首先會經過多子帶分析與頻域中的心理聲學模型冗餘處理,而後進行量化編碼;Layer III中的是我們現在常說的MP3的Codec:Encode與Decode之間的整體迴路,相比於Layer1多了幾個處理環節以及霍夫曼編碼。

4.4 AAC協議族
圖片描述

AAC與G.719一樣包括很多系列,但AAC的巧妙之處在於向下兼容的特性。開始時我們就強調,所有Codec在設計時都需要考慮兼容性,瑞典的Coding Technology公司曾提出在兼容性上特別優化的方案。AAC Plus V1包括AAC與SBR,AAC Plus V2包括AAC+SBR+PS,現在常見的很多音樂類或直播音頻編碼都是基於AAC Plus協議族進行的。

德國的霍朗浦學院曾在AAC低延時協議擴展方面做出一些探索並得到了AAC LD協議族,其原理仍基於傳統的AAC模塊,但在後端會對處理長度進行調整,例如之前是以1024bit爲一個處理單位,那改進後則以960bit爲一個處理單位。除此之外AAC LD加入了LD-SBR與LD-MPS等,從而形成一個規模較大的AAC-ELD V2模塊,可以說是十分巧妙。

1)AACPlus核心模塊——SBR(Spectral Band Replication)
圖片描述

我們可以看到,AAC可以說充分利用了頻域擴展,用很小的代價實現諸多功能優化。AAC的核心之一是SBR,這是一種使用極少位數就可描述高頻部分並在解碼時進行特殊優化從而實現頻域擴展的模塊。上圖展示的是不同壓縮率模塊所覆蓋的頻率取值範圍,而使用AAC時需要注意一個被稱爲“甜點碼率”的指標。無論是採樣率還是碼率都是變化的,在應用時選擇何種碼率十分關鍵。例如直播時採用64Kbps即可在覆蓋整個頻段的同時保持良好音質。

2)AACPlus核心模塊——PS(Parametric Stereo)

圖片描述

圖片描述

圖片描述

PS模塊也是AAC的核心模塊之一,主要用於分析左右聲道屬性並使用非常少的位數表示左右聲道相關性,而後在解碼端將左右聲道分離。這裏比較巧妙的是PS的向下兼容特性,整體數據打包是分開進行的。如果獲取到AAC、SBR、PS三者的基本數據包後,在解碼階段我們就只需AAC—LC。上圖展示的就是AAC的解碼框架,如果大家讀過3GPP的代碼就可發現其每一個模塊都相當清楚。我們可根據文檔讀取代碼並對應到每一個環節。

3)甜點碼率

圖片描述

甜點碼率是一項很關鍵的指標。例如在手機直播應用場景中,一般的視頻分辨率爲640×360,音頻碼率大約在800K左右。如果音頻碼率過大則會直接影響視頻質量,因而我們需要控制音頻碼率在一個較爲合適的範圍內從而實現最佳的音畫效果。在很多應用場景中可能需要系統根據不同的網絡環境下載不同音質的文件,例如在2G環境中下載較小的文件,這樣做主要是爲了節省帶寬並提高音頻文件的播放流暢程度。

4.5 AAC-ELD家族

圖片描述

AAC-ELD家族帶來的主要改進是低延遲。如果Codec的延遲太長便無法在一些特定場景中被使用。例如早期AAC Plus V2的整體延遲可達100ms,如此高的延遲肯定無法被應用於語音通話等對實時性要求極高的應用場景。霍朗普學院推出的AAC-ELD可在保持音質的前提下將延遲降低至15ms,相對於MP3最高長達200ms的延遲而言提升巨大。

4.6 應用中端到端的延遲

圖片描述

編解碼過程也存在延時問題,這也是我們選擇編解碼器時需要考慮的最主要因素之一,編解碼的延時主要由處理延時與算法延時組成,例如G.729的算法延時爲15ms,而AAC-LC可達到一百毫秒以上。另外,播放端或採集端的長幀數量太多,播放時緩存太多等也會直接影響延時,我們在選擇編解碼器時需要考慮延時帶來的影響。

編解碼器已經歷了兩個發展方向:一個是以G.7(G.729)爲例,根據發聲模型設計的一套主要集中於語音方面的編解碼算法,另一個是以ISO的MP3和AAC爲例,根據心理聲學模型設計的一套感知編碼。最近的趨勢是編碼的統一,原來在語音場景下我們使用8K或16K進行採樣,音樂場景下則需使用覆蓋到全頻帶的44.1K進行採樣,每個Codec都有一個頻域覆蓋的範圍。在之前的開發中,如果應用場景僅針對壓縮語音那麼需要選擇語音編碼方案,如果應用場景針對壓縮音樂則需要選擇音樂編碼方案,而現在的發展方向是通過一套編碼從容應對語音與音樂兩個應用場景,這就是接下來將要被提到的USAC。

這裏介紹兩個比較典型的Codec:一個是Opus,通過其中集成的模塊可實現根據傳入音頻文件的採樣率等屬性自動選擇語音編碼或音樂編碼;另一個是EVS這也是霍朗普等組織推行的方案,已經嘗試用於4G或5G之中。

圖片描述

由框圖我們可以瞭解到USAC向下兼容的特性。編解碼器可總結爲經歷了三個時代:發聲模型、聽覺感知、融合方案。接下來我將展示目前所有的Codec情況並整理爲表格以方便大家檢索查閱。

  1. Codec總結

5.1 IETF系列

圖片描述

IETF作爲標準協議聯盟組織之一推出了以上Codec:Opus包括採樣率爲8kHz、甜點碼率爲11kbps的窄帶單聲語音(SILK),採樣率爲16kHz、甜點碼率爲20kbps的寬帶單聲語音與採樣率爲48kHz、甜點碼率爲32kbps的全帶單聲語音(CELT),採用甜點碼率意味着將壓縮率和音質保持在一個良好的平衡狀態。在一些窄帶單聲語音應用場景例如常見的微信語音聊天,其壓縮率可達到原來的8.5%。Opus沒有技術專利和源代碼的門檻,使得其受到現在很多流媒體廠商的歡迎,Opus支持更廣的碼率範圍,具備豐富採樣率選擇,可實現極低延遲與可變幀大小,也具備以往一些Codec的許多特性如CBR、VBR、動態調整等,支持的通道數量也更多。除此之外,Opus同樣具備許多從SILK移植而來的特性或功能。如在VUIB傳輸上集成了扛丟包模式等。

iLBC早在SILK未出現時就被提出同樣具備抗丟包。的特性,高達15.2kbps的甜點碼率與4.14的Mos使其音質較爲良好,超過G.729的相關指標;GSM就是最早手機網絡仍停留在2G時代時流行的編碼形式,主要用於蜂窩電話的編碼任務。

5.2 AMR系列

圖片描述

AMR早在3G時期就被廣泛應用,AMR-NB是最流行的語音編碼器,具有壓縮效果好,支持多種碼率形式的特點;與此同時,這也是GSM與3G時期Android平臺最早支持的窄帶語音編碼方案。AMR-WB作爲AMR-NB向寬帶的擴展版,主要用於3G和4G通話標準協議中,其甜點碼率爲12.65kbps。在實踐中我們將碼率參數調整爲此值即可實現壓縮率與質量的平衡。AMR-WB+則是上述兩者的融合,三者共同構成AMR系列。

5.3 ITU-T G系列

圖片描述

ITU-T G系列包括最早的波形編碼G711到現在大家熟悉的G.729這裏我想強調的是G722.1 Siren7、G722.1c Siren14與G719 Siren22,例如G.719可覆蓋整個前頻帶且支持立體聲。即使都屬於老協議,但由於其優秀的兼容性,不應被我們忽略。

圖片描述

將Opus與其他一些Codec進行對比我們可以看到,無論是質量還是延時控制,Opus的優勢十分明顯;加之Opus作爲開源的免費方案,不存在專利限制,受到業界追捧也不足爲奇。

5.4 ISO系列

圖片描述

ISO裏我想強調的是MP3與AAC,二者同樣支持很多碼率。MP3的甜點碼率爲128kbps,MP3 Pro的碼率可達到MP3的一半;AAC支持8~96khz的採樣率,AAC-LC的甜點碼率爲96kbps,HE-AAC的甜點碼率爲32kbps,AAC-LD與ELD做到了AAC的低延時,實現了延時與壓縮比的最佳平衡。

5.5 3GPP系列:EVRC

圖片描述

高通公司主推的3GPP是CDMA中使用的語音編解碼器,在未來選擇編解碼器類型時我們需要特別考慮延時與幀長。由於語音編碼種類很多,幀長也是複雜多變的,其背後的算法複雜程度,RAM、ROM佔用等都是在實踐當中需要着重考慮的。

5.6 極低碼率

圖片描述

極低碼率主要的應用場景是對講機、衛星通訊、軍工等。圖表中的MELP最早由美國軍方開發,現在絕大多數的對講機都基於此模型進行擴展開發,壓縮後的碼率可達到2.4kbps而目前最極端的極低碼率可實現300bps,相當於壓縮爲原數據的0.2%,此時的音頻文件僅能被用於傳達語音內容而丟失了很多聲色。

5.7 全頻帶

圖片描述

全頻帶中的組合也是多種多樣。

  1. 編解碼使用注意

6.1 License

圖片描述

國內大部分企業在開發時容易忽視包括專利安全性在內的與License相關的內容。如果企業計劃得比較長遠,需要長期使用某項技術或企業規模不斷擴大時則不能不考慮專利問題。專利費用包括Open Source與算法專利,二者完全獨立互不干涉,如果我們從某家專利公司購買了AAC的專利算法,並不能獲得此AAC專利的源代碼,僅能獲得與此技術相關的專利使用授權。專利公司會給予需要下載的文件列表,通過這種方式實現技術的授權使用。

圖片描述

上面的二叉樹圖比較清晰地展示了代碼授權的具體流程,隨着企業的規模化發展日趨成熟,企業應當規範自身的技術使用行爲,儘可能避免專利糾紛帶來的不利影響。

6.2 專利

圖片描述

主流語音編解碼技術擁有兩個專利池:MPEG-LA與Via Licensing。很多非常複雜的Codec涉及高達上千個專利,與之相關的企業或組織多達幾十個,爲專利授權而與每一個企業或組織進行洽談顯然是不現實的,因而專利池的出現使得技術授權更加規範清晰,方便企業統一處理技術授權問題。

6.3 常見Codec Patent License

圖片描述

圖片描述

圖片描述

希望大家在使用技術的同時尊重知識產權,助力技術創新可持續發展。

想要閱讀更多技術乾貨文章,歡迎關注網易雲信博客

瞭解網易雲信,來自網易核心架構的通信與視頻雲服務。

網易雲信(NeteaseYunXin)是集網易18年IM以及音視頻技術打造的PaaS服務產品,來自網易核心技術架構的通信與視頻雲服務,穩定易用且功能全面,致力於提供全球領先的技術能力和場景化解決方案。開發者通過集成客戶端SDK和雲端OPEN API,即可快速實現包含IM、音視頻通話、直播、點播、互動白板、短信等功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章