深度学习在AEC中的应用探索
本文來自大象聲科高級算法工程師閆永杰在LiveVideoStackCon2019北京大會(huì)上的分享。閆永杰介紹了深度學(xué)習(xí)在回聲消除(AEC)中的應(yīng)用。正如我們所知,AEC是 在線音視頻通話(VoIP)領(lǐng)域中一個(gè)非常棘手的問題,目前應(yīng)用比較廣泛的AEC方法主要還是基于傳統(tǒng)信號處理的方法。大象聲科在成功將深度學(xué)習(xí)應(yīng)用于人聲和噪聲分離的基礎(chǔ)上,正在通過引入深度學(xué)習(xí)技術(shù),解決回聲消除問題。
?
文 / 閆永杰
策劃 / LiveVideoStack
AEC問題定義
上圖是個(gè)典型的AEC 系統(tǒng),我們先看左框和右框。
我們可以想象為兩個(gè)人通電話,從左框看到的遠(yuǎn)端信號(Far-End)是指對方傳過來的信號x(n),而右框的近端信號(Near-End)指著本地麥克風(fēng)收到的信號y(n)。
傳統(tǒng)意義上,AEC 的問題目標(biāo)在于去除回聲的分量d(n),? 如果一個(gè) VOIP 通話系統(tǒng)后面還會(huì)有降噪算法將近端語音中的背景噪聲v(n)去掉, 使得我們送給對方的信號是純凈的語音s’(n)。 當(dāng)我們打電話時(shí)聽到自己講話的聲音,其實(shí)是對方的手機(jī)AEC算法出現(xiàn)了問題. 在對方設(shè)備AEC算法沒把你的聲音消掉的情況下,就會(huì)聽到自己的聲音。這里我們強(qiáng)調(diào)一點(diǎn),傳統(tǒng)AEC問題定義只針對回聲分量去除,對噪音毫無影響。
?
簡單介紹傳統(tǒng)自適應(yīng)算法原理
第一,我們必須在近端沒有講話情況下做計(jì)算,來估計(jì)參考信號到回聲的傳輸路徑,也就是常說的回聲路徑?;芈暵窂降墓烙?jì)至關(guān)重要,如果回聲路徑估計(jì)不準(zhǔn)確,后續(xù)步驟都會(huì)出問題。
第二,如果第一步我們得到了準(zhǔn)確的回聲路徑h(n), 那么我們用得到的遠(yuǎn)端信號和h(n)進(jìn)行卷積,就算得了估計(jì)的回聲分量
第三, 麥克風(fēng)收到的近端信號減去第二步中估計(jì)的回聲分量,將會(huì)得到AEC 的結(jié)果
?
傳統(tǒng)自適應(yīng)算法存在的問題
第一,算法要求在僅有遠(yuǎn)端信號段才能做回聲路徑的估計(jì),因此雙講檢測(Double-Talk)要求要非常準(zhǔn)確。如果這一點(diǎn)沒有做好檢測,會(huì)導(dǎo)致濾波器發(fā)散, 算得錯(cuò)誤的h(n),進(jìn)而導(dǎo)致目標(biāo)語音過壓、回聲漏消等問題。
第二,傳統(tǒng)的AEC不考慮背景噪聲的,如果在實(shí)際場景背景噪聲比較大,也會(huì)帶來性能的下降。
第三, 估計(jì)的 回聲路徑h(n)是線性系統(tǒng)。但現(xiàn)實(shí)場景是有揚(yáng)聲器帶來的非線性問題。如果揚(yáng)聲器非線性很嚴(yán)重,會(huì)給AEC帶來很大的挑戰(zhàn)。
從另一個(gè)視角看AEC
?
我們在此圖中可以從另一個(gè)角度看AEC,麥克風(fēng)分別收到三種信號- 目標(biāo)語音,回聲,背景噪聲。我們的目的是把回聲與背景噪聲去除(傳統(tǒng)意義上,AEC僅僅是將回聲分量去除)。那么,我們就可以將AEC看成一個(gè)分離問題,這個(gè)任務(wù)就可以看成從近端混合信號中分離出目標(biāo)語音。
?
計(jì)算聽覺場景分析
?
講到語音分離問題,就不得不提我們大象聲科首席科學(xué)家汪德亮老師提出的理想二值掩膜(IBM) 理論。 這個(gè)理論將分離任務(wù)的目標(biāo)設(shè)定為理想二值掩膜, 只存在兩個(gè)取值, ?0 或者1。當(dāng)目標(biāo)信號大于非目標(biāo)信號的時(shí)候,它會(huì)被設(shè)置為 1否則是0。
?
IBM
以上有四張圖:
左上圖表示的是近端信號(Near-End),前面和后面都是一段靜音。
右上圖表示的是遠(yuǎn)端信號 ??(Far-End)?,也就是對方傳過來的聲音,遠(yuǎn)端一直有人在說話,這路信號會(huì)通過揚(yáng)聲器播放出來。這種場景下,麥克風(fēng)同時(shí)收到第一段近端講話的聲音以及第二段揚(yáng)聲器所播放出來的聲音,聽起來就像兩個(gè)信號混合在一起,中間那段就是實(shí)實(shí)在在的Double-Talk。
左下圖表示的就是麥克風(fēng)收到的摻雜了近端信號和遠(yuǎn)端信號的混合語音。
如果左上圖和左下圖按照上述IBM公式計(jì)算,就會(huì)得到目標(biāo)的Mask ,如右下圖。不難想象,如果把右下圖蓋在左下圖,會(huì)產(chǎn)生接近第一張圖的效果。
通過這四張圖,我們可以直觀的明白IBM的計(jì)算方式以及使用方式。
?
深度學(xué)習(xí)
接下來我們講下深度學(xué)習(xí)。我們首先思考一個(gè)問題,學(xué)習(xí)的本質(zhì)是什么呢?事實(shí)上,學(xué)習(xí)的本質(zhì)就是通過構(gòu)建模型,來擬合一個(gè)函數(shù)映射,即我們給定模型一個(gè)輸入以及對應(yīng)的目標(biāo)輸出,通過模型自動(dòng)優(yōu)化調(diào)整,使得模型預(yù)測的輸出不斷地逼近目標(biāo)輸出。當(dāng)模型預(yù)測準(zhǔn)確率達(dá)到比較高時(shí),我們就可以使用這個(gè)模型來做預(yù)測了。
構(gòu)建模型有很多方法,例如高斯混合模型、支持向量機(jī)、多層感知機(jī)以及深度神經(jīng)網(wǎng)絡(luò)(DNN),它們都能完成給定輸入來預(yù)測一個(gè)輸出的任務(wù)。隨著當(dāng)前深度神經(jīng)網(wǎng)絡(luò)的快速推進(jìn),已經(jīng)取得了卓越的性能提升,因此我們選擇深度神經(jīng)網(wǎng)絡(luò)來建模。對于AEC這個(gè)任務(wù),前面我們講到的IBM就是模型的目標(biāo)y,而我們的輸入有兩個(gè),一個(gè)是混合語音的幅度譜,另一個(gè)是遠(yuǎn)端參考信號的幅度譜,那么這樣就建立好了函數(shù)映射。
訓(xùn)練數(shù)據(jù)的構(gòu)建
那么,如何生成實(shí)驗(yàn)所需的數(shù)據(jù)呢?首先我們需要挑一句語音作為近端信號(Near-End),再挑一句為遠(yuǎn)端信號(Far-End)。 遠(yuǎn)端信號與房間的沖激響應(yīng)(RIR)卷積后的結(jié)果作為回聲信號。然后,回聲信號加上近端信號就得到實(shí)驗(yàn)中混合語音信號, 同時(shí)根據(jù)近端信號和混合語音可以求出我們所說的目標(biāo) IBM。這樣我們就有了完整的實(shí)驗(yàn)數(shù)據(jù),輸入:混合語音,遠(yuǎn)端參考信號,目標(biāo):近端目標(biāo)語音與混合語音計(jì)算得到的IBM。
?
深度學(xué)習(xí)解決AEC問題
下面,總結(jié)一下深度學(xué)習(xí)解決AEC問題:
選定訓(xùn)練目標(biāo)--IBM,此處我們以IBM為例進(jìn)行講解,實(shí)際中也可以采用IRM(Idea Ratio Mask);
輸入網(wǎng)絡(luò)的特征--混合語音及參考信號STFT 后幅度譜;
訓(xùn)練工具現(xiàn)在都比較成熟了,Tensorflow、Pytorch 都非常好用;
數(shù)據(jù)驅(qū)動(dòng),將訓(xùn)練的數(shù)據(jù)不斷送入網(wǎng)絡(luò),讓它不斷地調(diào)整參數(shù),就會(huì)得到一個(gè)不錯(cuò)的效果。
?
實(shí)驗(yàn)結(jié)果示例
上圖是模型收斂后的一組處理前后對比。我們可以看到混合語音經(jīng)過處理后,前后兩段遠(yuǎn)端聲音信號是完全去掉了,中間雙講部分也完整保留了目標(biāo)語音,結(jié)果還是非常理想的。
上面實(shí)驗(yàn)在實(shí)驗(yàn)數(shù)據(jù)上已經(jīng)取得了不錯(cuò)的結(jié)果,但如果處理實(shí)際采集的數(shù)據(jù),效果就不盡如人意了,我們分析主要有以下幾點(diǎn)原因:
現(xiàn)實(shí)場景中要考慮噪音的干擾;
非線性帶來的不匹配;
現(xiàn)實(shí)中的房間沖激響應(yīng)與實(shí)驗(yàn)室生成的存在差異。
綜合來看以上幾點(diǎn),其實(shí)都可以總結(jié)為實(shí)驗(yàn)數(shù)據(jù)與真實(shí)數(shù)據(jù)分布不同,導(dǎo)致我們訓(xùn)練的模型在真實(shí)環(huán)境下表現(xiàn)急劇下降。那么我們?nèi)绾谓鉀Q這個(gè)問題呢?
我們可以從兩個(gè)方向來進(jìn)行優(yōu)化:
?
一方面,從優(yōu)化仿真數(shù)據(jù)入手 :首先,我們可以在訓(xùn)練數(shù)據(jù)中加入一些噪聲干擾,來解決背景噪聲帶來的數(shù)據(jù)不匹配問題;其次我們可以使用一些非線性函數(shù),來模擬揚(yáng)聲器的非線性,以此減少實(shí)驗(yàn)數(shù)據(jù)與真實(shí)數(shù)據(jù)的差異;
另一方面,從采集真實(shí)回聲數(shù)據(jù)入手:我們可以采集真實(shí)的回聲數(shù)據(jù),進(jìn)行訓(xùn)練。我們編寫了一個(gè) APP, APP會(huì)讀取 SD 卡內(nèi)的音頻并播放,同時(shí)APP將麥克風(fēng)采集到的數(shù)據(jù)寫入SD卡中。這樣,我們就得到了遠(yuǎn)端信號以及對應(yīng)的回聲分量。利用這個(gè)方法,我們可以在不同的房間,不同位置,使用不同設(shè)備大量采集語料。實(shí)驗(yàn)時(shí),我們再選取近端信號,和采集到的回聲分量進(jìn)行混合,這樣我們就能夠得到接近真實(shí)的數(shù)據(jù)。使用這樣的數(shù)據(jù),能夠極大改善訓(xùn)練數(shù)據(jù)與真實(shí)數(shù)據(jù)之間分布不一致帶來的性能下降。
講到這里,我們總結(jié)下深度學(xué)習(xí)方法相比傳統(tǒng)方法解決回聲消除問題的優(yōu)勢:
無需考慮雙講。Double-Talk 是神經(jīng)網(wǎng)絡(luò)自己去學(xué)習(xí)的,因?yàn)槲覀兊哪繕?biāo)里面隱含Double-Talk 的信息。由于無需檢測雙講,避免了傳統(tǒng)方法雙講檢測不準(zhǔn)確時(shí)回聲消除異常的問題。
深度學(xué)習(xí)本來就具有非線性擬合能力,能夠更好地覆蓋AEC 系統(tǒng)中非線性因素。
無需復(fù)雜的調(diào)參過程。這一點(diǎn)是我們非??粗械膬?yōu)點(diǎn),可以極大地提高工程效率。
局限性
我們目前所用的方法僅恢復(fù)了目標(biāo)語音的幅度,并沒有恢復(fù)它的相位,合成時(shí)使用混合語音的相位進(jìn)行合成的。這種方法在高信回比下沒什么問題,但在低信回比下聽感就不太好了;
在低信回比條件下,Masking方式恢復(fù)幅度的能力也有限;
即使我們做了大量弭平訓(xùn)練數(shù)據(jù)與真實(shí)數(shù)據(jù)的工作,但還是會(huì)存在分布差異時(shí)模型能力下降的問題。
這項(xiàng)工作是一個(gè)探索性質(zhì)的,我們看到了有不錯(cuò)效果,同樣也有很多問題需要去解決,需要我們和業(yè)界一起努力,共同推進(jìn)這個(gè)這項(xiàng)工作,
目前我們能看到可能解決上述問題的思路主要有:
同時(shí)預(yù)測目標(biāo)語音的幅度譜和相位;
直接在時(shí)域上進(jìn)行預(yù)測。
應(yīng)用場景
AEC 的應(yīng)用領(lǐng)域包括智能家居,云通訊,智能安防,智能車載,耳機(jī),機(jī)器人,手機(jī)等等。
我們在手機(jī)領(lǐng)域已有一定的落地,手機(jī)手持模式下回聲回聲分量比較小,比較適合目前技術(shù)的落地,已經(jīng)有多款搭載大象聲科算法的手機(jī)商業(yè)落地了。
?
Q & A
如何合成含噪聲的數(shù)據(jù)?
???????如果是降噪領(lǐng)域一般只考慮加性噪聲,在訓(xùn)練的時(shí)候使用不同的SNR ,不同輸入幅度的訓(xùn)練數(shù)據(jù)去做multi-condition的訓(xùn)練。
一般會(huì)采用什么樣的網(wǎng)絡(luò)結(jié)構(gòu)呢?
???????在做回聲消除的時(shí)候,我們一般用時(shí)序模型,如LSTM,或者GRU,這類的RNN 是可以追蹤歷史信息,能夠更好地分離回聲和目標(biāo)聲音。
訓(xùn)練時(shí)單講和雙講數(shù)據(jù)的比例大概是什么樣呢?
???????我們一般訓(xùn)練時(shí)雙講的比例在百分之二十,大部分情況還是單講的,這也符合實(shí)際場景中的比例。
?
LiveVideoStack?秋季招聘
LiveVideoStack正在招募編輯/記者/運(yùn)營,與全球頂尖多媒體技術(shù)專家和LiveVideoStack年輕的伙伴一起,推動(dòng)多媒體技術(shù)生態(tài)發(fā)展。同時(shí),也歡迎你利用業(yè)余時(shí)間、遠(yuǎn)程參與內(nèi)容生產(chǎn)。了解崗位信息請?jiān)贐OSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
總結(jié)
以上是生活随笔為你收集整理的深度学习在AEC中的应用探索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LiveVideoStackCon深圳-
- 下一篇: 你今天怎么这么好看——基于深度学习的大型