10 月 24 日,RTC 2019 第五屆實(shí)時(shí)互聯(lián)網(wǎng)大會(huì)在北京悠唐皇冠假日酒店如期舉行。在下午的編解碼技術(shù)專場(chǎng)上,聲網(wǎng)Agora技術(shù)VP高澤華正式宣布,開源聲網(wǎng)自研抗丟包音頻編解碼器Agora SOLO。
目前,編解碼器的源代碼已經(jīng)開源在 Github
為什么做一款抗丟包音頻編解碼器?
在近些年比較火的應(yīng)用場(chǎng)景有這么幾類:游戲,比如多人在線對(duì)戰(zhàn)游戲、狼人殺等,多人組隊(duì),還需要實(shí)時(shí)語音;互動(dòng)直播,比如主播與觀眾連麥、主播與其他主播進(jìn)行跨直播間連麥,需要實(shí)時(shí)的互動(dòng);在線教育,其中有很多細(xì)分的場(chǎng)景,1 對(duì) 1、1 對(duì)多、雙師等,在當(dāng)前互動(dòng)網(wǎng)絡(luò)教育中最難解決的問題還是實(shí)時(shí)性,就是老師跟學(xué)生怎么能夠更好的互動(dòng)。 以上這些實(shí)時(shí)互動(dòng)場(chǎng)景,在當(dāng)前網(wǎng)絡(luò)環(huán)境下,給技術(shù)提出了更高的要求,既要低延時(shí),又要實(shí)現(xiàn)高質(zhì)量的音視頻互動(dòng)。但是,如果承載信息的包沒有按時(shí)到達(dá),即出現(xiàn)丟包,就會(huì)產(chǎn)生聲音斷斷續(xù)續(xù)、音質(zhì)低等情況,直接影響實(shí)時(shí)互動(dòng)的質(zhì)量。然而,傳統(tǒng)的抗丟包策略不是會(huì)浪費(fèi)帶寬,就是會(huì)影響音頻質(zhì)量,所以我們結(jié)合信源和信道編碼的特點(diǎn),利用充分包交換網(wǎng)絡(luò)的特性,基于此,研發(fā)出了聲網(wǎng)新的編解碼器——Agora SOLO。
Agora SOLO 是什么?
Agora SOLO(以下簡(jiǎn)稱“SOLO”)是由聲網(wǎng)Agora自主研發(fā)的一款面向不穩(wěn)定網(wǎng)絡(luò)的音頻編解碼器,它以 Silk 為基礎(chǔ),融合了帶寬擴(kuò)展(BWE)和多描述編碼(MDC)等技術(shù),使其能在較低復(fù)雜度下?lián)碛腥蹙W(wǎng)對(duì)抗能力。SOLO 編解碼器兼容WebRTC,可集成到基于 WebRTC 自主研發(fā)的產(chǎn)品中。

圖 1. SOLO編碼器架構(gòu)

圖2. SOLO解碼器架構(gòu)
SOLO的抗丟包策略與傳統(tǒng)方法不同。從通信原理來說,信源編碼是盡可能去追求高壓縮比,去冗余。而信道編碼是追求強(qiáng)糾錯(cuò),靠加冗余來實(shí)現(xiàn)糾錯(cuò)。Agora SOLO就是把加冗余和減冗余結(jié)合起來,不重要的地方減冗余,重要的地方加冗余。 在傳輸過程中,它會(huì)將一個(gè)包拆分為兩個(gè)進(jìn)行傳輸,如果對(duì)端收到其中一個(gè),則解碼恢復(fù)出一個(gè)有限失真的信號(hào);如果對(duì)端收到兩個(gè)包,則可解碼恢復(fù)出一個(gè)高質(zhì)量的信號(hào)。即 SOLO不需要等待對(duì)當(dāng)前網(wǎng)絡(luò)丟包狀態(tài)的統(tǒng)計(jì),只需要直接把抗丟包做到編解碼內(nèi)部。好處有三點(diǎn):1.可實(shí)現(xiàn)更低延時(shí);2.可實(shí)現(xiàn)更高質(zhì)量,當(dāng)收到一個(gè)包時(shí)質(zhì)量達(dá)到的普通編解碼器水平,收到兩個(gè)包達(dá)到高質(zhì)量編解碼水平;3. 可面向多人環(huán)境。
SOLO 關(guān)鍵技術(shù)
01 帶寬擴(kuò)展
SOLO 使用帶寬擴(kuò)展的主要原因是希望減少計(jì)算復(fù)雜度,在 Silk WB 模式中,16khz 的信號(hào)都會(huì)進(jìn)入后續(xù)處理模塊,而對(duì)于語音來說,8khz 以上的信息是非常少的,這部分信息進(jìn)入到后續(xù)處理模塊,會(huì)帶來一定的計(jì)算資源浪費(fèi)。MDC 因?yàn)橐腩~外分析模塊處理多條碼流,又會(huì)引入額外的復(fù)雜度,這是 MDC 在近些年來落地不順暢的重要原因之一。為了減少復(fù)雜度,我們?cè)诰幋a寬帶信號(hào)前,將其分為 0-8k 的窄帶信息和 8-16k 的高頻信息。只有窄帶信息會(huì)進(jìn)入到后續(xù)正常分析、編碼流程中,這樣后續(xù)的計(jì)算量就減少了一半,同時(shí)得益于帶寬擴(kuò)展算法,整體質(zhì)量不會(huì)有明顯下降。高頻信息部分,SOLO 使用獨(dú)立的分析與編碼模塊,默認(rèn)將高頻信息壓縮成 1.6kbps 的碼流。這部分高頻信息可以在解碼器內(nèi)結(jié)合低頻信號(hào)恢復(fù)出高頻信號(hào)。
02 結(jié)合 delay-decision 的 MDC
在 Silk 中,delay-decision 模塊是一個(gè)滯后計(jì)算編碼誤差的模塊,它可以從多個(gè)候選碼流中選擇誤差最小的碼流作為編碼輸出,一定程度上來說,它使得標(biāo)量量化擁有了矢量量化的性能。SOLO 利用 delay-decision 模塊,實(shí)現(xiàn)了多描述碼流的分析與構(gòu)建。SOLO 的MDC主要作用于濾波器輸出的殘差信號(hào), SOLO 會(huì)根據(jù)當(dāng)前信號(hào)狀態(tài),對(duì)殘差信號(hào)做多增益控制:計(jì)算出 MD 增益 a(0
圖 3. 多描述殘差信號(hào)產(chǎn)生
隨后,這兩段殘差信號(hào)會(huì)進(jìn)入到新的 delay-decision 模塊中,每個(gè)殘差信號(hào)使用不同的抖動(dòng)和量化方法,一共可以產(chǎn)生 8 種不同的備選狀態(tài),兩兩組合起來共有 64 種備選合成狀態(tài),新的 delay-decision 模塊會(huì)對(duì)每個(gè)殘差信號(hào)的獨(dú)立誤差和兩個(gè)殘差信號(hào)的合成誤差進(jìn)行加權(quán)求和,決定出最佳的兩個(gè)殘差信號(hào)進(jìn)入到編碼模塊。
03 輸出碼流組包
圖 4. 編碼器碼流整合及組包
SOLO 默認(rèn)配置為每次輸入 40ms(2 幀),輸出兩段互補(bǔ)的多描述碼流,解碼器接收到任一段碼流,即可解碼出 40ms 的信號(hào)。為了方便接收端區(qū)分碼流的順序,碼流第一個(gè)字節(jié)的右數(shù)第 4 個(gè) bit 是碼流順序標(biāo)志位,第一段碼流標(biāo)志位的值是 0,第二段碼流標(biāo)志位的值是 1。接收端在進(jìn)行碼流處理時(shí),可依據(jù)此標(biāo)志位進(jìn)行碼流順序判斷。

-
解碼器
+關(guān)注
關(guān)注
9文章
1218瀏覽量
43053 -
音頻
+關(guān)注
關(guān)注
31文章
3168瀏覽量
85254
原文標(biāo)題:聲網(wǎng)Agora開源抗丟包音頻編解碼器Agora SOLO
文章出處:【微信號(hào):shengwang-agora,微信公眾號(hào):聲網(wǎng)Agora】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
TLV320AIC3104低功耗立體聲音頻編解碼器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
探索PCM3168A音頻編解碼器:高性能音頻處理的理想之選
解析PCM5310音頻編解碼器:多功能設(shè)計(jì)與性能優(yōu)勢(shì)
TLV320AIC3007:高性能低功耗音頻編解碼器的設(shè)計(jì)與應(yīng)用
TLV320AIC3253:超低功耗立體聲音頻編解碼器的卓越之選
深度解析PCM3070:一款高度集成的立體聲音頻編解碼器
TLV320AIC3206:超低功耗立體聲音頻編解碼器的卓越之選
TLV320AIC3256:超低功耗立體聲音頻編解碼器的卓越之選
TLV320DAC3203:超低功耗立體聲音頻編解碼器的全方位解析
TLV320AIC3263音頻編解碼器:功能特性與設(shè)計(jì)要點(diǎn)解析
TAC5242:高性能立體聲音頻編解碼器的卓越之選
探索MAX9860:16位單聲道音頻語音編解碼器的卓越性能與應(yīng)用
德州儀器PCM2904/PCM2906立體聲音頻編解碼器:特性、應(yīng)用與設(shè)計(jì)指南
TLV320AIC12KIDBTR 低功耗單聲道語音頻編解碼器
為什么做一款抗丟包音頻編解碼器?
評(píng)論