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

音視頻社交中回聲消除技術(shù)是如何實(shí)現(xiàn)的

開發(fā) 開發(fā)工具
游戲語音就是音視頻社交在游戲領(lǐng)域的一個(gè)典型的應(yīng)用。如果你不希望討厭戴耳機(jī)的用戶放棄你的游戲,那么在游戲?qū)崟r(shí)語音中實(shí)現(xiàn)回聲消除是必須的。但是在業(yè)界,回聲消除技術(shù)是公認(rèn)難啃的硬骨頭。

社交網(wǎng)絡(luò)一路走來,先是文字 +表情,接著是圖片 +短視頻,現(xiàn)在是音視頻社交強(qiáng)勢(shì)崛起并成為潮流的時(shí)代。音視頻社交將是社交網(wǎng)絡(luò)的發(fā)展趨勢(shì),畢竟音視頻才是人類最自然的社交方式。在自然的社交環(huán)境中,回聲是十分影響溝通體驗(yàn)的。而回聲消除一直是音視頻技術(shù)的難點(diǎn)。

游戲語音就是音視頻社交在游戲領(lǐng)域的一個(gè)典型的應(yīng)用。如果你不希望討厭戴耳機(jī)的用戶放棄你的游戲,那么在游戲?qū)崟r(shí)語音中實(shí)現(xiàn)回聲消除是必須的。

無論是競(jìng)技類還是休閑類的游戲,游戲?qū)崟r(shí)語音都成了標(biāo)配。競(jìng)技類的游戲,包括 MMORPG、MOBA、和 FPS,需要快節(jié)奏和高頻率的團(tuán)隊(duì)協(xié)同,游戲語音就像戰(zhàn)時(shí)通訊裝備一樣必不可少。休閑類的游戲,包括棋牌和狼人殺,需要慢節(jié)奏但是零距離的在線社交,玩家在通過游戲建立的社交紐帶中進(jìn)行多人實(shí)時(shí)聊天,游戲?qū)崟r(shí)語音讓玩家們像坐在同一個(gè)房間玩牌一樣。

在業(yè)界,回聲消除技術(shù)是公認(rèn)難啃的硬骨頭。它本質(zhì)上是一個(gè)復(fù)雜的數(shù)學(xué)問題的工程化。音頻工程師往往是數(shù)學(xué)或者物理專業(yè)而不是計(jì)算機(jī)專業(yè)出身的,沒有過相關(guān)經(jīng)驗(yàn)的工程師根本就無從下手。回聲消除技術(shù)做得比較好的產(chǎn)品有 TencentQQ和MicrosoftSkype,開源的項(xiàng)目有WebRTC和Speex。在這些開源項(xiàng)目之前,回聲消除技術(shù)是大廠的獨(dú)門武藝,其它團(tuán)隊(duì)只能靠自己一點(diǎn)一滴地摸索積累。在這些開源項(xiàng)目之后,WebRTC和Speex提供開源的AEC模塊,成為業(yè)界不錯(cuò)的教材。

AEC的原理

回聲消除的原理很多文章介紹過,這里只簡(jiǎn)單介紹筆者在工作中的實(shí)踐。簡(jiǎn)單地來說,遠(yuǎn)端的聲音信號(hào)首先通過揚(yáng)聲器播放出來,然后在房間中經(jīng)過多個(gè)傳播和反射路徑,最后和近端的聲音一起被麥克風(fēng)采集進(jìn)去。如果沒有做回聲消除處理,那么遠(yuǎn)端就會(huì)把重新采集進(jìn)去的遠(yuǎn)端聲音信號(hào)播放出來,而且和原始的遠(yuǎn)端聲音有一定的延遲時(shí)間。這就是回聲產(chǎn)生的原理。

要消除回聲,其實(shí)真的很難。這有點(diǎn)像把紅墨水倒進(jìn)藍(lán)墨水里,混合在一起,然后要求把紅墨水從藍(lán)墨水中分離出來。對(duì)于采集端來說,無論是近端的聲音,還是揚(yáng)聲器播放出來的聲音,都是從空氣中無差別地采集到的聲音。對(duì)機(jī)器來說,遠(yuǎn)端信號(hào)播放出來的聲音和近端的聲音是沒有任何區(qū)別的,就像對(duì)水來說紅墨水和藍(lán)墨水沒有區(qū)別一樣?;芈曄墓ぷ骶褪且褯]有任何區(qū)別的遠(yuǎn)端回聲和近端聲音分離。這項(xiàng)工作其實(shí)比想象中要難得多。

幸運(yùn)的是,我們并非沒有任何辦法可以找到遠(yuǎn)端回聲和近端聲音的邊界。

遠(yuǎn)端的聲音信號(hào)和回聲是相關(guān)的。也許有朋友會(huì)一拍腦袋煥然大悟地說:那就直接把遠(yuǎn)端聲音從采集到的聲音中減掉就可以了。然而事情并沒有那么簡(jiǎn)單。

遠(yuǎn)端的聲音信號(hào)并非等同于回聲。遠(yuǎn)端的聲音從揚(yáng)聲器播放出來,到被采集端采集,經(jīng)歷過揚(yáng)聲器 -房間 -麥克風(fēng)(Loudspeaker-Room-Microphone,LRM)這樣的回聲饋路。在 LRM回聲饋路中傳播的時(shí)候,遠(yuǎn)端聲音一方面經(jīng)過多次反射,另外一方面經(jīng)過多次疊加,最后變得和遠(yuǎn)端聲音信號(hào)有差別了。我們把這個(gè)差別用一個(gè)函數(shù)來表示:

  1. ffe=f(fs) 

其中,

  1. fs=far-end signal(遠(yuǎn)端信號(hào)); 
  2. fe=far-end echo (遠(yuǎn)端回聲) 

如果能夠?qū)@個(gè)函數(shù)求解,那么就可以根據(jù)遠(yuǎn)端聲音信號(hào)和遠(yuǎn)端回聲之間的相關(guān)性進(jìn)行建模。這個(gè)模型是對(duì)回聲饋路 LRM的模擬,會(huì)高度逼近回聲饋路 LRM。

等到這個(gè)模型穩(wěn)定時(shí),輸入遠(yuǎn)端聲音信號(hào) fs,就可以輸出高度接近遠(yuǎn)端回聲的信號(hào) fe。通過濾波器生成反相的信號(hào),和采集到的聲音信號(hào)進(jìn)行疊加,就可以把回聲信號(hào)消除掉。這就是回聲消除 AEC的基本原理。

這個(gè)函數(shù)求出來的解不大可能和遠(yuǎn)端回聲完全一致,只能高度逼近。該函數(shù)求出來的解和遠(yuǎn)端回聲越逼近,回聲消除的效果就越好。

靜音、單講和雙講

雖然實(shí)時(shí)語音的通話是雙工模式,但是可以分為不同的情形:靜音、單講和雙講。針對(duì)不同的情形要采取不同的回聲消除策略。

1. 靜音

即沒有人說話的情形。

在語音段才需要做回聲消除,在非語音段不會(huì)有回聲,不需要做回聲消除,甚至不需要發(fā)送語音信息,從而可以降低碼率,節(jié)約帶寬成本。

因此,準(zhǔn)確探測(cè)語音活動(dòng)十分重要。語音的探測(cè)算法叫 VAD(Voice Activity Detection)。不同的廠商有不同的 VAD實(shí)現(xiàn)方法。我們是利用基音周期實(shí)現(xiàn) VAD,有效地提高 VAD判斷的準(zhǔn)確性,避免將非語音段誤判為語音段。

2. 單講

即只有遠(yuǎn)端說話的情形。

由于只有遠(yuǎn)端說話,從麥克風(fēng)采集進(jìn)來的語音信號(hào)只包含遠(yuǎn)端的回聲,而不包含近端的語音。單講情形下的回聲消除相對(duì)比較容易處理,可以采取比較激進(jìn)的處理策略。

如果確定單講是高概率事件的情況下,可以直接地把所有語音信號(hào)都干掉,然后適當(dāng)?shù)靥畛涫孢m噪音。一般來說,在單講情形下,用線性自適應(yīng)濾波器跟蹤回聲饋路,可以很好地消除回聲,大概能夠抑制掉 18dB的回聲。

3. 雙講

有多方同時(shí)說話的情形。

由于有多方同時(shí)說話,從麥克風(fēng)采集進(jìn)來的語音信號(hào)就包含了遠(yuǎn)端的回聲和近端的語音,兩者混合在一起。雙講情形下的回聲消除就十分困難:一方面要保護(hù)近端的語音信號(hào)不被損傷,另外一方面還要盡量地把回聲消除干凈。

這里不但有“紅墨水藍(lán)墨水分離”的難題,而且還有“投鼠忌器”的困境。一般來說,在遠(yuǎn)端回聲比近端語音要高大概 6dB~8dB的情況下,如果要把遠(yuǎn)端回聲消除干凈,那么肯定會(huì)或多或少地?fù)p傷到近端語音。

另外,如果遠(yuǎn)端回聲比近端語音要高出 18dB以上,比如說揚(yáng)聲器離麥克風(fēng)太近,遠(yuǎn)端回聲把近端語音完全掩蓋掉了,那么回聲消除的效果肯定是不好的。這種情形下,可以采取比較激進(jìn)的策略,把遠(yuǎn)端回聲和近端語音一起干掉,然后適當(dāng)?shù)靥畛涫孢m噪音。

因此,回聲消除模塊要有能力區(qū)分這三種情形,才能針對(duì)各種情形采取不同的算法。通過 VAD可以區(qū)分非語音段和語音段。如何區(qū)分單講和雙講的方法將在下面討論。

AEC的實(shí)現(xiàn)

回聲消除主要包含兩個(gè)步驟:線性自適應(yīng)濾波和非線性處理。

線性自適應(yīng)濾波就是對(duì) fe=f(fs)求解,建立遠(yuǎn)端回聲的語音模型,進(jìn)行第一輪回聲消除。

非線性處理又分為兩個(gè)步驟:殘留回聲處理和非線性剪切處理。殘留回聲處理進(jìn)行第二輪回聲消除,處理殘留回聲;非線性剪切處理就是對(duì)衰減量達(dá)到閾值的語音信號(hào)進(jìn)行比較激進(jìn)的剪切處理。

線性自適應(yīng)濾波和非線性剪切處理在學(xué)術(shù)論文和開源項(xiàng)目中能找到東西學(xué)習(xí)。殘留回聲處理就很難,一般都是要靠團(tuán)隊(duì)自行摸索、積累和創(chuàng)新。正是因?yàn)槿绱?,語音技術(shù)的門檻才如此的高。

回聲消除的原理與實(shí)現(xiàn)線性自適應(yīng)濾波

回聲消除的原理與實(shí)現(xiàn)線性自適應(yīng)濾波

以遠(yuǎn)端聲音信號(hào)和遠(yuǎn)端回聲的相關(guān)性為基礎(chǔ),建立遠(yuǎn)端回聲的語音模型,利用它對(duì)遠(yuǎn)端回聲進(jìn)行估計(jì),目的是獲得對(duì)遠(yuǎn)端回聲盡量逼近的估計(jì)。我們可以把回聲饋路 LRM看作一個(gè)“環(huán)境濾波器”。

經(jīng)過它的處理,遠(yuǎn)端聲音信號(hào)被變成遠(yuǎn)端回聲?;芈曄褪且獦?gòu)建一個(gè)“算法濾波器”,基于對(duì)遠(yuǎn)端回聲的語音模型,不斷地調(diào)整該濾波器的系數(shù),使得估計(jì)值更加逼近真實(shí)的回聲。估計(jì)值越逼近真實(shí)回聲,回聲消除效果就越好。

自適應(yīng)濾波器收斂后得到的就是需要求解的回聲饋路函數(shù)fe=f(fs)。當(dāng)濾波器收斂穩(wěn)定之后,輸入遠(yuǎn)端聲音信號(hào) fs,就可以輸出相對(duì)準(zhǔn)確的對(duì)遠(yuǎn)端回聲信號(hào)的估計(jì)值 fe。把采集到的信號(hào)減去遠(yuǎn)端回聲信號(hào)的估計(jì)值 fe,就得到實(shí)際要發(fā)送的語音信號(hào)。

實(shí)現(xiàn)線性自適應(yīng)濾波器有兩個(gè)難點(diǎn)

1. 快速收斂

在收斂階段,采集到聲音信號(hào)要求只有遠(yuǎn)端的回聲信號(hào),不能混有近端的語音信號(hào)。近端的語音信號(hào)和遠(yuǎn)端的參考語音信號(hào)沒有相關(guān)性,會(huì)對(duì)自適應(yīng)濾波器的收斂過程造成擾亂。

因此,我們的策略是讓自適應(yīng)濾波器收斂的時(shí)間盡量地短,短到收斂過程的時(shí)間段里采集進(jìn)來的信號(hào)只有遠(yuǎn)端的回聲信號(hào),這樣自適應(yīng)濾波器收斂的效果就會(huì)很好。在收斂好之后,濾波器就穩(wěn)定下來了,就可以用來過濾遠(yuǎn)端的回聲信號(hào)了。

2. 動(dòng)態(tài)自適應(yīng)

在收斂好穩(wěn)定下來以后,自適應(yīng)濾波器還要隨時(shí)自動(dòng)適應(yīng)回聲饋路的變化。自適應(yīng)濾波器要能夠判斷回聲饋路是否發(fā)生變化,并且能夠重新學(xué)習(xí)和對(duì)其進(jìn)行建模,不斷地調(diào)整該濾波器的系數(shù),進(jìn)入一個(gè)新的收斂過程,最后快速地逼近新的回聲饋路。

這種情況在手游的場(chǎng)景中是十分常見的,用戶拿著手機(jī)邊走邊玩游戲,游戲語音周遭的回聲饋路時(shí)刻發(fā)生著變化,自適應(yīng)濾波器就要時(shí)刻自動(dòng)重新收斂來適應(yīng)新的回聲饋路。

這兩個(gè)難點(diǎn)是一對(duì)矛盾的特征,要求自適應(yīng)濾波器一方面要能夠快速收斂后保持系數(shù)高度穩(wěn)定,另外一方面要能夠隨時(shí)保持更新狀態(tài)跟蹤回聲饋路的變化。

非線性處理

1. 殘留回聲處理

通過自適應(yīng)濾波器來消除回聲,并不能百分之一百把回聲消除干凈,還需要進(jìn)一步消除殘留的回聲。

一般來說,殘留回聲消除的策略是利用自適應(yīng)濾波器處理后的殘留回聲與遠(yuǎn)端參考語音信號(hào)的相關(guān)性,進(jìn)一步消除殘留回聲。相關(guān)性越大,說明殘留回聲越多,需要對(duì)殘留回聲進(jìn)一步消除的程度越大;反之,相關(guān)性越小,說明殘留回聲較少,需要對(duì)殘留回聲進(jìn)一步消除的程度越小。

因此,首先要通過計(jì)算殘留回聲與參考信號(hào)的相關(guān)矩陣,得到一個(gè)反映消除程度的衰減因子;然后將殘留回聲乘以衰減因子,從而進(jìn)一步消除殘留回聲。

在線性自適應(yīng)濾波做完了以后,可以利用殘留回聲和麥克風(fēng)采集到的遠(yuǎn)端回聲信號(hào)的相關(guān)性來檢測(cè)是處于單講還是雙講狀態(tài)。根據(jù)單講還是雙講狀態(tài),可以進(jìn)一步調(diào)整衰減因子。

如果處于遠(yuǎn)端單講狀態(tài),因?yàn)榻藳]有聲音信號(hào)(沒人說話),可以盡量多地抑制回聲,讓衰減因子盡量地小;如果處于雙講狀態(tài),因?yàn)榫€性自適應(yīng)濾波器是在盡量不損傷近端語音音質(zhì)的前提下消除回聲,回聲抑制量不會(huì)太大,所以衰減因子相對(duì)較大。

消除殘留回聲的算法難度甚高。在論文或者開源項(xiàng)目中甚少有可參考的東西,各家廠商都是通過私有的算法來實(shí)現(xiàn)的,甚至很多廠商都選擇不實(shí)現(xiàn)。

2. 非線性剪切處理

在完成了上述處理以后,其實(shí)剩下的回聲一般都比較小了,但不排除仍有一些殘留的可以感知的小回聲。為了進(jìn)一步消除這些小回聲,要根據(jù)前面處理得到的衰減量來做進(jìn)一步的抑制處理。

在這里要為衰減量設(shè)定一個(gè)閾值。一般來說,這個(gè)衰減量閾值要設(shè)定得比較保守(比較高)。

如果衰減量達(dá)到或者超過設(shè)定的閾值,就表明回聲消除量比較大,采集進(jìn)來的語音信號(hào)很可能全部都是回聲信號(hào),那么就直接將語音信號(hào)全部消除掉,并填充舒適噪聲,防止聲音聽感起伏。能達(dá)到那么大的衰減量,一般是處于遠(yuǎn)端單講狀態(tài),或者遠(yuǎn)端回聲信號(hào)要遠(yuǎn)遠(yuǎn)大于近端語音信號(hào)的雙講狀態(tài)。

正常的雙講狀態(tài)下,為了保護(hù)近端語音的音質(zhì),自適應(yīng)濾波器是不會(huì)做大幅的回聲消除的。因此,只要衰減量達(dá)到或者超過設(shè)定閾值,把采集到的語音信號(hào)全部消除掉是不會(huì)影響正常聽音效果的。

如果衰減量沒有超過設(shè)定的閾值,那么就不要進(jìn)一步做回聲消除了。這種情形可能是雙講狀態(tài),要保護(hù)本地語音的音質(zhì),避免本地語音被當(dāng)成回聲誤殺。

業(yè)界一般有兩種做法:一種是允許對(duì)近端聲音有些許損傷也要把遠(yuǎn)端回聲消除干凈,另外一種是允許保留些許遠(yuǎn)端回聲也不要對(duì)近端聲音造成損傷。如果過分消除回聲,就會(huì)造成斷續(xù)的聽音感覺?;芈曄褪且谶@兩種做法之間找平衡點(diǎn)。

 

筆者在工作中的實(shí)踐表明,在音視頻社交行業(yè),回聲消除是客戶高度關(guān)注的一個(gè)技術(shù)特征。與此同時(shí),回聲消除也是音視頻社交中最有難度的技術(shù),沒有之一。即使是王者榮耀這種頂級(jí)的游戲,也十分重視回聲消除的效果。在以用戶體驗(yàn)為生命線的游戲行業(yè),特別在手游做得越來越重的今天,回聲消除技術(shù)做得好不好,往往決定了用戶是否繼續(xù)玩你的游戲。

作者簡(jiǎn)介:冼牛,即構(gòu)科技資深語音視頻專家,北京郵電大學(xué)計(jì)算機(jī)碩士,香港大學(xué)工商管理碩士,多年從事語音視頻云服務(wù)技術(shù)研究,專注互動(dòng)直播技術(shù)、語音視頻社交和實(shí)時(shí)游戲語音。

【本文為51CTO專欄作者“冼牛”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者(微信號(hào):xianniu1216)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-03-07 22:16:31

游戲語音

2019-02-18 16:39:21

春節(jié)檔社交音視頻

2024-10-15 13:30:03

2017-09-13 16:12:12

2017-12-22 22:13:22

語音視頻SDK延遲

2022-08-29 10:39:32

FFmpeg多媒體框架開源

2022-06-20 05:59:35

5G技術(shù)音視頻技術(shù)安卓系統(tǒng)

2011-09-07 10:05:23

飛視美視頻會(huì)議低碳

2018-03-07 22:08:16

游戲語音

2022-09-21 11:48:40

端到端音視頻測(cè)試用戶體驗(yàn)

2022-01-20 21:37:26

VR/AR數(shù)字世界音視頻技術(shù)

2022-01-25 17:40:00

測(cè)試

2017-12-22 21:06:55

語音視頻SDK聽聲辨位

2022-01-24 20:40:26

HarmonyOS音視頻鴻蒙

2017-09-19 11:00:09

音視頻技術(shù)

2023-04-10 07:49:43

云渲染平臺(tái)RTC

2022-06-20 05:50:41

抖音春節(jié)活動(dòng)視頻發(fā)紅包

2023-05-06 21:52:14

數(shù)字

2023-03-03 15:40:43

抖音視頻編碼器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)