技术干货 | 为高音质保驾护航 - 通信中的回声消除
導(dǎo)讀:語音通信,在當(dāng)代生活已經(jīng)成為了大家主要的溝通交流方式,而通話語音的質(zhì)量也是衡量每個廠商系統(tǒng)好壞的標(biāo)志之一。這次給大家分享網(wǎng)易云信是如何通過回聲消除算法保證通話語音質(zhì)量的。
文|胡林艷
網(wǎng)易云信音視頻引擎開發(fā)工程師
?前言
?回聲產(chǎn)生原因?
在語音通信中,回聲一直是影響音質(zhì)的主要因素,它會帶來種種影響,比如在漏回聲、產(chǎn)生雜音、處理人聲斷續(xù)、忽大忽小、丟字、失聲等現(xiàn)象中,有一部分就是回聲或者工作失調(diào)的回聲消除算法引起的。所以,一個優(yōu)質(zhì)的回聲消除算法,將在很大程度上提升語音通信的音質(zhì)。所謂回聲,就是自己的聲音又傳回自己。
簡單來說,一個人的聲音傳到對方,經(jīng)過揚(yáng)聲器播放,通過空間聲場傳播被麥克風(fēng)采集到,這樣回聲 echo 就產(chǎn)生了。疊加了近端本身的聲音(包括近端語音,近端噪聲),這樣對端就聽到了自己的聲音(回聲 echo)+ 另一方聲音。
一端麥克風(fēng)采集的混合信號,有本端說話人的語音信號和對端說話人通過揚(yáng)聲器播放的語音產(chǎn)生的回聲(紅色信號),這樣疊加的語音信號(藍(lán)色信號)通過傳輸線路傳到對端揚(yáng)聲器播放,對端人就聽到自己剛剛的語音信號,即所謂的回聲。
所以混合信號中除了本地的語音之外,還有對方的回聲信號。回聲消除算法,就是要把這個紅色的回聲信號從藍(lán)色的麥克風(fēng)混合信號中去除掉。
?回聲帶來的影響?
回聲是不能在通話回路中存在的,一方面會引起對話的混淆,一方面也會帶來嘯叫,在會議中影響更大。所以通常會加入回聲消除算法進(jìn)行處理。
如果回聲沒有被算法完全消除,會因為消除產(chǎn)生畸變,導(dǎo)致聽起來像雜音,嚴(yán)重影響主觀感受。同時,回聲消除處理兩端同時說話的雙講數(shù)據(jù)時,可能會將近端語音當(dāng)作回聲處理,導(dǎo)致近端語音出現(xiàn)忽大忽小,甚至剪切的效果。因此,一個優(yōu)質(zhì)的回聲消除算法在通話中,極為重要。
?回聲消除原理
?回聲消除框架?
回聲消除算法實施時,參考信號是從播放端接收到的遠(yuǎn)端信號獲得的,聲音從揚(yáng)聲器播放出去,再被采集產(chǎn)生的回聲,分成直達(dá)聲和反射回聲。直達(dá)聲是最先到達(dá)并且能量最大的回聲,往往和設(shè)備本身、軟件系統(tǒng)設(shè)計、聲音傳播路徑有關(guān)。所以需要一個方法,找到參考信號/揚(yáng)聲器信號跟麥克風(fēng)信號之間的延遲,并調(diào)整緩沖區(qū),使得算法獲取到的參考信號和回聲信號中間時延較小。
回聲經(jīng)過揚(yáng)聲器播放,聲音傳播,再到麥克風(fēng)采集,經(jīng)過了三個系統(tǒng),而這三個系統(tǒng)中,揚(yáng)聲器、麥克風(fēng)系統(tǒng)為非線性系統(tǒng)的可能性很高,而聲音傳播的系統(tǒng),是線性系統(tǒng)。所以整個過程中,有可能存在非線性部分,但是肯定存在線性部分,而在無法預(yù)知回聲特征前提下,去跟蹤線性回聲成為一種可行的辦法。跟蹤的線性回聲,從采集信號中減去,就得到了回聲的殘留信號。
而非線性的回聲,可以通過非線性的處理方式將殘差信號中的殘余回聲給徹底抑制掉。
如圖所示,一個完整的回聲消除算法框架,包含三個主要模塊
延遲估計模塊。
線性濾波模塊。
非線性處理模塊。
?時延估計模塊?
時延產(chǎn)生原因
參考信號取自下行接收的數(shù)據(jù),麥克風(fēng)信號取自采集的數(shù)據(jù),中間存在時延、聲音傳播時間(無論內(nèi)外)、播放采集線程工作的 buffer、啟動時間差等。不同設(shè)備、不同環(huán)境下存在的時延不同。
時延估計模塊影響
時延的對齊可以減輕自適應(yīng)濾波器的壓力,減少濾波器的跟蹤長度,降低開銷, 如果沒有時延對齊模塊,就需要將濾波器跟蹤的長度設(shè)計成能夠覆蓋所有參考信號到回聲信號之間的時延,這經(jīng)常是上百毫秒的,計算量非常大。
時延的對齊影響濾波器的性能。時延沒對齊,濾波器跟蹤的參考信號和回聲信號相關(guān)性極低,濾波器收斂會受到影響。時延估計過量,濾波器跟蹤的信號緩沖區(qū)中根本找不到參考信號,濾波器同樣不能收斂。
時延的對齊速度,影響整個收斂速度,影響濾波器收斂,同時也影響非線性回聲處理。時延變化時,需要能夠快速跟蹤到時延的變化,并且迅速調(diào)整,否則就會偶現(xiàn)回聲。
時延估計設(shè)計
一般來說,由于設(shè)備揚(yáng)聲器和麥克風(fēng)的響應(yīng)影響,回聲的分布大致在中頻段,高頻低頻部分回聲很少,因此可以在中頻段去跟蹤回聲。
Webrtc 的 aec?模塊采用的是頻域 Binary Spectrum 的方法。將兩端的頻譜中間頻段的分布映射到二值化數(shù)據(jù),尋找相似性最高的遠(yuǎn)端信號并計算對應(yīng)的時延,該方法計算量很低,但是受噪聲影響很大。
Webrtc 的 aec3 模塊采用的是線性濾波。匹配濾波器的方法是直接在時域信號做 NLMS (Normalized Least Mean Square) 處理,這個方法魯棒性很好。
時域信號互相關(guān)會出現(xiàn)多個峰值,導(dǎo)致時延估計不準(zhǔn)。我們考慮采用頻域互相關(guān)的方法,結(jié)合線性濾波,一方面保證魯棒性,一方面利用頻域互相關(guān)檢測速度快的特點,加快檢測速度。
?線性濾波模塊?
x(n) 為遠(yuǎn)端輸入信號,經(jīng)過未知的回聲路徑 h(n) 得到 y(n)=x(n)?h(n),再加上觀測噪聲 v(n),得到近端輸入信號 s(n)=y(n)+v(n)。x(n) 通過自適應(yīng)濾波器 w(n) 得到估計的回聲信號,并與近端輸入信號 s(n) 相減得到誤差信號 e(n),即 e(n)=s(n)?conj(w(n))x(n),自適應(yīng)濾波算法所估計的回聲路徑就越接近實際的回聲路徑,得到的誤差就越小,回聲殘留就越小。所以用得到的誤差大小作為自適應(yīng)調(diào)整的方向。
濾波器采用特定的自適應(yīng)算法不停地調(diào)整權(quán)值向量,使估計的回聲路徑 w(n) 逐漸趨近于真實回聲路徑 h(n)。這樣濾波器的輸出能夠逼近真實的回聲,從而使誤差信號中不存在回聲信號。
自適應(yīng)濾波器收斂階段,近端信號是完全的 echo,不能混雜有近端語音。因為近端和噪聲是會擾亂 h(n) 的收斂過程。也就是說要求回聲消除算法開始運(yùn)轉(zhuǎn)后收斂要非常快,最好要求對方的算法在你一說就收斂好了,收斂好之后,如果對方開始說話,這個 h(n) 系數(shù)就不要變化了,需要穩(wěn)定下來。
回聲路徑可能是變化的,一旦出現(xiàn)變化,回聲消除算法要能判斷出來,因為自適應(yīng)濾波器學(xué)習(xí)要重新開始,也就是 h(n) 需要一個新的收斂過程,以逼近新的回音路徑 H。自適應(yīng)濾波器需要在收斂速度和跟蹤性能、穩(wěn)態(tài)失調(diào)之間進(jìn)行平衡。
線性濾波器設(shè)計
自適應(yīng)濾波器,目前常用的是 NLMS 濾波器和 Kalman 濾波器,這兩種濾波器各自有優(yōu)點和缺點。Kalman 濾波收斂速度快,收斂性能欠缺;NLMS 相對來說比較平穩(wěn)。基本上就是在于收斂速度和跟蹤性能、穩(wěn)態(tài)失調(diào)有不同的偏向。但是無論哪種濾波器,都是可以調(diào)整跟蹤的速度來改變收斂速度和跟蹤性能之間的平衡,NLMS 改變的是步長值,Kalaman 改變的是增益。
我們考慮用多種濾波器混合使用的方案,取不同濾波器的優(yōu)點,保證收斂速度,同時也相互限制發(fā)散。非線性濾波器也會參與估計回聲、雙講的狀態(tài),從而控制自適應(yīng)濾波器跟蹤步長,根據(jù)狀態(tài)實現(xiàn)變步長跟蹤。
?非線性濾波模塊?
非線性處理模塊通常是計算參考信號、麥克風(fēng)信號、線性回聲信號以及殘差之間的相關(guān)性,估計殘留回聲,或者回聲的狀態(tài)。采用維納濾波的方式消除回聲,其重點在于如何估計殘留回聲,而估計殘留回聲的大小,也直接影響到最終消除的結(jié)果。殘留回聲估計不足,回聲處可能會有殘留;殘留回聲估計太過,雙講處會對近端語音損傷。
非線性濾波器設(shè)計
我們的非線性處理模塊針對參考信號、麥克風(fēng)信號、線性回聲信號以及殘差信號,采用峰值相關(guān)性、頻域相關(guān)性、幅值相似性等特點,聯(lián)合判斷得到雙講狀態(tài)、回聲狀態(tài)等信息。除了上述的相關(guān)性外,還可以利用線性濾波器的更新權(quán)值去獲得回聲的狀態(tài)。而影響最終輸出結(jié)果的,是殘余回聲或者回聲大小的估計。殘余回聲的估計,采用了回聲的狀態(tài)和濾波器的 ERL (Echo Return Loss) 估計相結(jié)合的方法。
業(yè)務(wù)中回聲消除算法設(shè)計
?不同場景對回聲的需求?
根據(jù)業(yè)務(wù)的需求,我們結(jié)合場景分類模塊,將通話場景分成音樂場景和語音場景,而不同的場景下,回聲的特點和對回聲消除的要求不同,從而可以調(diào)整回聲和雙講的平衡。
在音樂對話場景下,雙講占比較多,希望保留音樂,音樂下回聲不明顯,所以在整個非線性檢測上,偏向于雙講的檢測。在語音對話場景下,雙講占比小,回聲要求干凈,所以非線性檢測上,偏向于回聲的檢測。
?不同模式對回聲的需求??
通過檢測外設(shè)情況,分成耳機(jī)模式、外放模式。耳機(jī)下通常是沒有回聲的,部分由于線路耦合產(chǎn)生的回聲,或者耳機(jī)密封性不好外漏的回聲,線性特點明顯,回聲較小,但是耳機(jī)下對回聲和雙講的剪切感都比較明顯,可以結(jié)合線性濾波器的殘差結(jié)果,調(diào)整殘留回聲的估計。而常用的外放模式下,基本上回聲都非常大,信回比低,對回聲的殘留比較敏感,所以殘留回聲估計時,會比較偏向于回聲估計,從而達(dá)到最優(yōu)的聽覺效果。
結(jié)語
以上技術(shù)方案就是本次分享的全部內(nèi)容,通過回聲消除技術(shù),能夠提升用戶的聽感,適應(yīng)各種場景切換和環(huán)境變化,保證不受回聲干擾。每塊技術(shù)都比較重要,也是經(jīng)過多次優(yōu)化調(diào)優(yōu)的結(jié)果。網(wǎng)易云信也將繼續(xù)打磨音頻技術(shù),給行業(yè)帶來更好的服務(wù)。
?作者介紹?
胡林艷,網(wǎng)易云信音視頻引擎開發(fā)工程師,負(fù)責(zé)音頻引擎的回聲消除算法開發(fā),在傳統(tǒng)語音增強(qiáng)算法設(shè)計方面有豐富的經(jīng)驗。
?相關(guān)閱讀推薦?
技術(shù)實踐|網(wǎng)易云信 IM SDK 服務(wù)高可用技術(shù)方案
云信小課堂|搭建應(yīng)用級別在線聊天室,7步就夠了!
技術(shù)干貨 | 高性能短鏈設(shè)計與實現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的技术干货 | 为高音质保驾护航 - 通信中的回声消除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术干货 | 高性能短链设计与实现
- 下一篇: 资讯|WebRTC M93 更新