自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

火山引擎 RTC 自研音頻編碼器 NICO 實踐之路

精選
開發(fā)
Opus 作為 RTC 領域廣泛使用的音頻編碼器,其編碼質(zhì)量較高,且提供一定的抗丟包能力,但是在高丟包以及突發(fā)丟包場景,音質(zhì)會明顯下降,同時,其編碼效率也有進一步提升的空間。

1. 前言

隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,越來越多的人開始嘗試使用或者依賴實時音視頻產(chǎn)品解決團隊溝通與協(xié)作問題。在通話過程中,我們時常會遇到因為網(wǎng)絡波動(如擁塞、丟包、延時和抖動等)而導致的音頻卡頓、掉字或者雜音等問題,影響工作效率。為解決此類音頻弱網(wǎng)問題,業(yè)界一般采用前向糾錯(Forward Error Correction,F(xiàn)EC)或者重傳等網(wǎng)絡策略優(yōu)化方法,但這些方法存在冗余率過高、帶寬利用效率低等缺點,而提升音頻編碼器的編碼效率和抗丟包能力、提高帶寬利用效率,是解決音頻弱網(wǎng)問題更為高效的一種方法。Opus 作為 RTC 領域廣泛使用的音頻編碼器,其編碼質(zhì)量較高,且提供一定的抗丟包能力,但是在高丟包以及突發(fā)丟包場景,音質(zhì)會明顯下降,同時,其編碼效率也有進一步提升的空間。RTC 自研 NICO(Network Intelligent Audio Coding,NICO)編碼器在完全兼容Opus 的基礎上,極大提高了編碼效率,并提供了超強的抗丟包能力。目前 NICO 已經(jīng)成功集成進火山引擎 RTC,并應用于抖音和視頻會議等業(yè)務,極大提升了弱網(wǎng)場景音頻體驗。

2. 音頻編解碼技術簡介

音頻編碼器是一種將音頻信號進行壓縮和解壓縮的裝置。一般分為 3 大類:波形編碼器、參數(shù)編碼器和統(tǒng)一編碼器。

2.1 波形編碼

波形編碼,顧名思義就是對音頻信號的波形進行數(shù)字化處理。G.711 是由 ITU-T 制定的一個典型的波形編碼器,碼率為 64kbps,最早應用于固定電話場景,其核心思想是將每一個 14 比特的音頻采樣數(shù)據(jù)壓縮成 8比特 表示。G.711 利用了人耳對大能量信號不敏感的特點,幅度大的信號量化誤差大,幅度小的信號量化誤差小,可以將信號碼率壓縮 50% 左右。

圖片

2.2 參數(shù)編碼

隨著科學家對語音信號的特性和人耳感知聲音的機制理解更加深入,參數(shù)編碼器逐漸在語音編碼和音頻編碼領域成為主流。參數(shù)編碼就是指通過對信號提取若干個特征參數(shù),并對特征參數(shù)進行量化壓縮的方法。參數(shù)編碼不以波形匹配為準則,而是通過對信號中的關鍵特征進行提取,并以高效的量化方式進行壓縮,達到高質(zhì)量恢復信號關鍵信息的目的。因此,參數(shù)編碼器的編碼效率也要明顯高于波形編碼器。下面分別針對語音和音頻信號的參數(shù)編碼方法進行說明。

2.2.1 語音編碼

下圖是一個碼激勵線性預測(Codebook Excitation Linear Prediction,CELP)編碼器系統(tǒng)框圖,是一個典型的參數(shù)語音編碼器。主要利用了語音信號具有短時相關性和長時相關性的特點,使用線性預測的方法去除相鄰樣點間的相關性(即短時相關性),提取到線性預測(Linear Prediction Coding,LPC)系數(shù),通過分析語音信號中的長時相關性提取基音周期參數(shù),去除語音信號中的長時相關性,然后利用隨機碼書擬合隨機激勵信號,通過分析合成的方式獲得最佳編碼參數(shù)。這種方式只需要對 LPC 系數(shù)、基音周期、隨機碼書和兩個增益參數(shù)進行量化壓縮,解碼端就可以恢復高質(zhì)量語音。參數(shù)編碼器只需要不到 20kbps 的碼率即可達到與 G.711@64kbps 相同的質(zhì)量,編碼效率具有明顯的優(yōu)勢。典型的編碼器有:G.729、AMR-NB 和 AMR-WB 等。

圖片

2.2.2 音頻編碼

下圖是一個典型的頻域編碼器系統(tǒng)框圖。音樂信號和自然界的聲音是通過不同的載體進行發(fā)聲的,發(fā)聲方式也千差萬別,不太可能利用發(fā)聲方式進行建模。換句話說,使用語音編碼的方法編碼音頻信號的編碼效率不高,編碼質(zhì)量比較差。于是科學家另辟蹊徑,通過對人耳感知聲音的方式進行研究,發(fā)現(xiàn)人耳對不同頻率信號的感知敏感度也有所不同,因此發(fā)明了一種基于心理聲學模型的編碼器,尤其適合對音樂信號和自然界聲音的編碼。典型的編碼器有:MP3、AAC 和 HE-AAC 等。

圖片

2.3 統(tǒng)一編碼

綜上可知,語音編碼器只適合編碼語音信號,音頻編碼器只適合編碼音頻信號。在實際應用場景中,我們經(jīng)常會遇到在說話過程中會有音樂或者其他背景聲音的場景。那么是否存在一種編碼器,能夠依據(jù)信號的類型,自適應選擇最佳編碼方式,達到最佳編碼質(zhì)量呢?答案是肯定的。統(tǒng)一編碼器采用統(tǒng)一框架高質(zhì)量編碼語音信號和音頻信號,它能夠很好的解決混合語音和音樂信號的高質(zhì)量編碼問題。典型的統(tǒng)一編碼器有:Opus、EVS 和 USAC 等。

圖片

3. 自研 NICO 編碼器技術優(yōu)化

為了解決 Opus 編碼器在高丟包以及突發(fā)丟包場景中質(zhì)量變差的問題,自研 NICO 編碼器引入了多種編碼工具和創(chuàng)新技術,以提高編碼器抗高隨機丟包和突發(fā)丟包的能力。另外,在提高編碼效率的同時,NICO 實現(xiàn)了與 Opus 編碼器完全兼容,解決了與現(xiàn)網(wǎng) RTC 設備互聯(lián)互通的問題。

3.1 抗弱網(wǎng)編碼技術及優(yōu)化

3.1.1 多描述編碼

多描述編碼是一種專門為弱網(wǎng)場景設計的編碼技術,其核心思想是“編碼器產(chǎn)生的多個描述碼流相互獨立又互為補充”。單個多描述碼流就可以解碼獲得完整語音,每多收到一個多描述碼流,獲得的解碼語音質(zhì)量可以得到進一步增強。多描述編碼方法是一種非常適合在無可靠傳輸網(wǎng)絡場景使用的編解碼技術,能夠有效減少由于丟包引起的各種音頻卡頓問題,但是在無丟包場景,其解碼質(zhì)量差于單碼流編碼器。而且,多描述編碼算法的復雜度要比單碼流編碼器高很多,多描述碼流個數(shù)越多,復雜度就會成倍增加,這也在一定程度上限制了多描述編碼技術的使用。

針對上述問題,我們在設計多描述編碼算法時,對現(xiàn)有多描述編碼技術和 Opus 編碼器中 NSQ 量化方法進行了詳細的分析。我們發(fā)現(xiàn),現(xiàn)有算法只能做到寬帶多描述編碼,且高頻質(zhì)量明顯差于Opus,同時 Opus 中 NSQ 量化方法十分復雜,基于 Opus 的多描述編碼復雜度會明顯偏高。我們通過多種技術優(yōu)化,解決了上述難題,使 NICO 支持了窄帶到全帶的多描述編碼,滿足了不同應用場景對編碼音質(zhì)的差異化需求,同時保證了 NICO 在無丟包場景編碼質(zhì)量能對齊甚至稍優(yōu)于 Opus,在高丟包場景明顯優(yōu)于 Opus,而編碼復雜度和 Opus 相當。

圖片

3.1.2 帶內(nèi) FEC 算法

帶內(nèi) FEC 算法是一種在當前幀碼流中攜帶過去歷史幀碼流的一種方法,與帶外 FEC 算法相比,其減少了 RTP 頭部開銷,比特利用效率更高。當 Opus 碼流攜帶帶內(nèi) FEC 信息時,如果當前幀碼流數(shù)據(jù)丟失,解碼器可以通過解析下一幀碼流中的帶內(nèi) FEC 信息解碼當前幀音頻。Opus 帶內(nèi) FEC 有不錯的對抗隨機丟包的能力,但對突發(fā)丟包無能為力,開啟帶內(nèi) FEC 也會導致編碼復雜度明顯上升,并且其帶內(nèi) FEC 幀信息在無丟包時不會帶來額外的質(zhì)量提升,帶寬利用效率不高。在實際使用場景中,我們還發(fā)現(xiàn)帶內(nèi) FEC 占用碼率過多,影響主幀編碼質(zhì)量,會導致雜音的問題。

為解決上面這些問題,NICO 帶內(nèi) FEC 算法做了許多創(chuàng)新,全面優(yōu)化了編碼流程和碼率分配等環(huán)節(jié),提升了編碼效率,降低了編碼復雜度,并且在突發(fā)丟包場景,NICO 的效果遠優(yōu)于 Opus。

圖片

3.1.3 丟包隱藏算法

丟包隱藏(Packet Loss Concealment,PLC)算法是指當前幀的碼流因為某種原因丟失時,解碼器利用歷史解碼數(shù)據(jù)或者參數(shù)預測當前幀解碼數(shù)據(jù)的算法。PLC 算法作為恢復丟失幀音頻的最后解決方案,是大多數(shù)音頻編碼器中常用的技術,對提升丟包場景下的主觀聽感有較大作用。Opus 的 PLC 算法對丟包幀處理較為簡單,對于能量、基音周期等參數(shù)只是做簡單的衰減或者復制等操作,恢復出的音頻經(jīng)常會出現(xiàn)能量偏低、雜音等問題。NICO 對此進行了大量改進,參考了歷史幀的變化趨勢,對于丟包幀解碼參數(shù)預測更為準確,恢復的音頻聽感較 Opus 有明顯提升。

3.2 編碼質(zhì)量提升

3.2.1 帶寬擴展算法

帶寬擴展(BandWidth Extension,BWE)是一種使用少量比特編碼高頻信息,高質(zhì)量恢復高頻信號的算法。在 Opus 編碼器中,所采用的 BWE 技術是以填充隨機噪聲的方式恢復高頻空洞,這種方式會導致恢復出的高頻信號能夠聽到明顯的高頻噪聲,體驗較差;在低碼率編碼方法中,還會使用頻譜折疊的方式恢復高頻,由于沒有考慮高頻與低頻信號的相關性,折疊后的高頻部分與原始信號往往相差較大,有時會聽到明顯的高頻量化噪聲。在 NICO 編碼器中,我們對 BWE 算法進行了改進,充分利用高頻與低頻信號的相關性優(yōu)化高頻恢復效果,提升了低碼率條件下音頻信號的恢復質(zhì)量。

下圖是低碼率 Opus 和 NICO 解碼音頻的頻譜對比??梢钥闯?,在高頻部分,Opus 使用隨機噪聲恢復,而 NICO 恢復了更多的高頻細節(jié),與原始信號更為接近。

圖片

3.2.2 不連續(xù)傳輸算法

不連續(xù)傳輸(Discontinuous Transmission,DTX)是指 VAD 算法檢測到非活動語音時,編碼器會減少數(shù)據(jù)發(fā)送,只間隔性發(fā)送低字節(jié)數(shù)的靜音描述幀(Silence Insertion Descriptor,SID),達到降低編碼碼率的目的。舒適噪聲生成(Comfort Noise Generation,CNG)指的是解碼端收到 SID 幀后會依據(jù)解碼參數(shù)生成舒適噪聲,保持聽感連續(xù)。Opus 的 DTX/CNG 算法存在編解碼端 CPU 消耗偏高、VAD 算法不夠準確導致出現(xiàn)不平穩(wěn)噪聲等問題。針對上述問題,我們對 DTX/CNG 算法做了一系列優(yōu)化,改進了編碼端 VAD 算法和編解碼處理邏輯,解決了舒適噪聲不平穩(wěn)問題,還大幅降低了 DTX 段編碼端與解碼端的 CPU 消耗。

以下是 Opus 和 NICO 解碼帶噪語音的效果對比,Opus 解碼音頻在噪聲段不夠平穩(wěn),而 NICO 解碼音頻噪聲段能量平穩(wěn),聽感更佳。

圖片

3.2.3 動態(tài)模式切換

在實際通話過程中,用戶的網(wǎng)絡狀況可能比較復雜。為了在各種網(wǎng)絡狀況下獲得最佳通話質(zhì)量,我們設計了動態(tài)模式切換功能。編碼器可以依據(jù)網(wǎng)絡反饋的網(wǎng)絡狀態(tài)信息自適應調(diào)整編碼模式。當用戶網(wǎng)絡狀況很好時,編碼器基于網(wǎng)絡反饋的丟包率信息自動切換到 Opus 編碼模式,以獲得更優(yōu)語音通話質(zhì)量;當用戶網(wǎng)絡狀況變差時,編碼器基于網(wǎng)絡反饋的丟包率以及帶寬等信息,從 Opus 編碼動態(tài)平滑切換到 NICO 模式編碼,提升編碼器的抗丟包能力。

圖片

3.3 兼容 WebRTC 的設計

傳統(tǒng)方案中,讓具有不同編碼器能力的終端進行通信,往往需要服務器進行轉碼再轉發(fā)的操作,而轉碼操作會造成音質(zhì)下降、復雜度增加和延時變長等問題。NICO 編碼器通過獨特的碼流設計,使得 NICO 的碼流與 Opus 完全兼容。換句話說,具有 NICO 編碼能力的客戶端能和 Web 端等原生 WebRTC 應用直接進行互通,不僅規(guī)避了轉碼服務器帶來的各種問題,還拓展了 NICO 的應用領域,在 P2P 通信和不同廠商間互聯(lián)互通等場景都能無障礙使用 NICO。

圖片

為了達到與原生 Opus 完全兼容的目的,NICO 的碼流結構和 Opus 完全一致。當只有 Opus 解碼能力的終端在接收到 NICO 的碼流時,也能解碼出正常質(zhì)量的語音,聽感較解碼原生 Opus 的碼流無明顯差異;而具有 NICO 解碼能力的終端解析 NICO 的碼流時,便能使用到 NICO 的抗丟包能力,在丟包場景下達到遠優(yōu)于 Opus 的效果。

以下三段音頻分別是原始音頻、使用 Opus 編解碼音頻和使用 NICO 編碼 Opus 解碼的音頻,可以感受到,對于相同音頻序列,使用 NICO 編碼的碼流被 Opus 解析時,解碼音質(zhì)較 Opus 編解碼幾乎無差異。

  • 原始音頻 A音頻:00:0000:15?
  • Opus 編解碼音頻音頻:00:0000:15?
  • NICO 編碼-Opus 解碼音頻音頻:00:0000:15?

3.4 復雜度優(yōu)化

為提升抗丟包能力并完全兼容 Opus 碼流,NICO 編碼器做了非常多的技術創(chuàng)新和改進,同時對復雜度也做了很多優(yōu)化工作,達到對齊 Opus 的水平。這些優(yōu)化工作在保證質(zhì)量的同時降低了 NICO 的復雜度,確保 NICO 在低端機器上都能夠流暢運行。

下圖為 NICO 和 Opus 編碼器 CPU 消耗對比結果,測試采用了實時率(Real-Time Factor,RTF)作為 CPU 消耗衡量指標。在 iPhone Xs Max 手機上,NICO 在優(yōu)化特性都開啟的情況下,CPU 消耗相較于 Opus 關閉帶內(nèi) FEC 增加了9%,而相較于 Opus 打開帶內(nèi) FEC 降低接近 15%。

圖片

3.5 質(zhì)量對比

我們評估了 NICO 與 Opus 開啟帶內(nèi) FEC 在同等碼率、無丟包、隨機丟包 30%、40% 和突發(fā)丟包 25% 測試條件下的 POLQA 打分。結果顯示,Opus 解碼音頻質(zhì)量隨著丟包率的增加有明顯下降,在突發(fā)丟包場景下,更是降到 2 分以內(nèi)。NICO 解碼音頻隨著丟包率的增加,MOS 分有一定程度下降,但下降緩慢且明顯優(yōu)于 Opus。在突發(fā)丟包 25% 時,NICO 的 MOS 分接近 4 分,遠遠好于 Opus。

圖片

下面是 Opus 和 NICO 在 40% 隨機丟包和 25% 突發(fā)丟包條件下的頻譜對比示意圖。從頻譜圖上來看,Opus 在隨機丟包場景會頻繁出現(xiàn)因 PLC 造成的能量衰減、頻譜能量不連續(xù)的情況,而 NICO 的頻譜恢復效果更好,有更好的連續(xù)性,沒有明顯的頻譜上的損傷。

圖片

在突發(fā)丟包場景,Opus 解碼音頻會出現(xiàn)語音聽感明顯不連續(xù)、卡頓掉字等現(xiàn)象,而 NICO 解碼音頻的連續(xù)性非常好,無任何卡頓。

圖片

以下為一條音頻序列的測試結果,感興趣的朋友可以自行體驗效果差異。

  • 原始音頻 B音頻:00:0000:15?
  • Opus 40%隨機丟包解碼音頻音頻:00:0000:15?
  • NICO 40%隨機丟包解碼音頻音頻:00:0000:15?
  • Opus 25%突發(fā)丟包解碼音頻音頻:00:0000:15?
  • NICO 25%突發(fā)丟包解碼音頻音頻:00:0000:15?

3.6 小結

可以看出,相較于帶外 FEC、重傳等網(wǎng)絡策略,提升編碼器抗弱網(wǎng)能力和編碼質(zhì)量是解決音頻弱網(wǎng)痛點問題性價比更優(yōu)的方案。相比業(yè)界已有方案,NICO 編碼器的技術優(yōu)化和創(chuàng)新工作具有以下幾項優(yōu)點:

  • 全面支持窄帶到全帶多描述編碼,滿足不同業(yè)務場景對編碼音質(zhì)的差異化需求,改進帶內(nèi) FEC 和 PLC 算法,在高丟包與突發(fā)丟包場景,弱網(wǎng)抗性明顯優(yōu)于 Opus 編碼器;
  • 改進 BWE、DTX 和 CNG 等算法,提出動態(tài)編碼模式切換方法,明顯提升編碼質(zhì)量;
  • 獨特的碼流設計完全兼容 Opus,確保 NICO 終端與 WebRTC 終端以及不同 RTC 廠商互聯(lián)互通,降低了端到端兼容性改造成本;
  • 高效優(yōu)化編碼復雜度,保障在高中低端機上均可以流暢運行,使用火山引擎 RTC 應用的用戶都能享受到 NICO 帶來的質(zhì)量提升。

4. 未來展望

目前,NICO 主要針對通話場景做了大量優(yōu)化工作,提升了弱網(wǎng)場景的音頻體驗,后續(xù)我們會將其拓展到其它場景,例如直播、連麥和空間音頻傳輸?shù)?。同時,AI 技術為編解碼器方向帶來了技術革新,未來有潛力在復雜度可控和超低碼率條件下實現(xiàn)高清音頻通話,進一步提升用戶在弱網(wǎng)場景下的通話體驗,我們將密切關注業(yè)界相關技術的進展,不斷提升火山引擎 RTC 語音相關技術的能力上限。

參考資料

Recommendation G.711 (11/1988): Pulse code modulation (PCM) of voice frequencies

M. Schroeder; B. Atal, 1985. Code-excited linear prediction(CELP): High-quality speech at very low bit rates. ICASSP '85. IEEE International Conference on Acoustics, Speech, and Signal Processing

Andreas S., Ted Painter.Audio Signal Processing and Coding ,2007, Wiley-Interscience

Neuendorf; et al. The ISO/MPEG Unified Speech and Audio Coding Standard - Consistent High Quality for all Content Types and at all Bit Rates, 2013, Journal of the Audio Engineering Society. Audio Engineering Society

J.M. Valin, RFC 6716: Definition of the Opus Audio Codec, 2012

V.K. Goyal. Multiple description coding: compression meets the network, 2002,IEEE Signal Processing Magazine

H Sanneck, A Stenger, A new technique for audio packet loss concealment. Proceedings of GLOBECOM'96

責任編輯:未麗燕 來源: 字節(jié)跳動技術團隊
相關推薦

2022-08-19 18:15:04

視頻會議音頻質(zhì)量噪聲

2023-04-25 21:36:07

火山引擎

2023-08-23 14:53:05

火山引擎視頻云視頻編解碼

2024-07-18 21:26:44

2023-08-09 20:43:32

2023-05-31 14:54:32

2025-04-17 04:00:00

2023-09-07 17:05:58

語音增強AI音頻編碼

2022-11-24 09:35:52

2022-11-23 18:39:06

智能質(zhì)檢

2022-12-07 19:24:33

2024-03-05 18:36:21

轉換引擎用戶體驗

2021-03-29 11:37:50

人工智能深度學習

2021-11-02 20:44:47

數(shù)字化

2021-03-22 10:52:13

人工智能深度學習自編碼器

2020-10-29 15:41:16

騰訊云硬件編碼器
點贊
收藏

51CTO技術棧公眾號