音頻領域有3A問題,所謂3A,是指聲學回聲消除(AEC, Acoustic Echo Cancel)、背景噪聲抑制(ANS, Automatic Noise Suppression)、自動增益控制(AGC, Automatic Gain Control),今天聊一聊AEC。
從通訊回音產生的原因看,可以分為聲學回音(Acoustic Echo)和線路回音(Line Echo),相應的回聲消除技術就叫聲學回聲消除(Acoustic Echo Cancellation,AEC)和線路回聲消除(Line Echo Cancellation, LEC), 聲學回音是由于在免提或者會議應用中,揚聲器的聲音多次反饋到麥克風引起的;線路回音是由于物理電子線路的二四線匹配耦合引起的,本講只討論聲學回聲(包括線性回聲信號和非線性回聲信號)。
遠端講話者(A)的聲音信號再傳輸給近端(B)后,在近端設備的揚聲器播放出來,經過一系列聲學反射,被近端設備的麥克風拾取,又傳輸給遠端(A)的現象。聲學回聲將導致遠端講話者A在很短時間內,又聽到了自己剛才的講話聲音。聲學回聲的產生過程如圖所示。
使用 AEC 技術后,兩端聲音傳輸過程改變為如下圖所示,進而從底層保證會議場景下聲音的干凈度。
數學化表示如下圖。
遠端信號x, 從聽筒或喇叭spk播出,并經過空間傳播,被麥克風mic接收,近端說話信號也進入麥克風mic,這樣麥克風接收到的就是兩個信號的疊加,即d。自適應濾波器w對x進行處理獲得y(回聲信號),d和y的差值作為誤差e,傳遞給自適應濾波器,進行濾波器系數迭代更新。
指標1:ERLE(Echo Return Loss Enhancement,回聲返回衰減增益):
ERLE值越大,則表明回聲抵消效果越好。由于雙講或只有近端單講時,e(n)中包含近端語音,導致很多情況下e(n)的能量遠大于回聲y(n)的能量,從而ERLE為負值,同時也無法衡量回聲部分的消除情況。
對于優秀的回聲消除器,ERLE增益必須不低于6dB。
指標2:SupperFactor(能量衰減因子)
AEC后輸出能量與對應遠端麥克風信號能量的比值。
指標3:Cohde(輸出信號e(n)與麥克風信號d(n)的頻譜相關性)
該值越接近1,說明輸出信號中保留的麥克風信號頻譜越多。考慮到麥克風信號d(n)主要由回聲信號y(n)和近端語音v(n)構成,因此只有近端單講情況下cohde的值才能接近1,雙講情況下cohde的值在0.5~0.9(取決于回聲信號在該幀的占比),當cohde接近0時說明輸出信號幾乎不包含任何近端語音和回聲的頻譜成分。其計算公式如下:
指標4:Cohxe(輸出信號e(n)與遠端參考信號x(n)的頻譜相關性)
該值越接近0,說明輸出信號中殘留的遠端參考信號頻譜越少,回聲消除越徹底,其計算公式如下:
不同通話狀態對應的參數指標:
(1)近端單講(最大程度保持輸出與麥克風信號一致):
Cohde:越接近1說明輸出與麥克風信號越相似,越接近0說明兩者差異越大,近端單講時理想值為1。
Cohxe:越接近1說明輸出與遠端參考信號越相似,越接近0說明兩者差異越大,即殘留的遠端參考信號頻譜成分越少,理想值為0。
SuppFactor:越接近1說明輸出與麥克風信號的能量越接近,越接近0說明AEC造成能量衰落越嚴重,近端單講時理想值為1。
(2)遠端單講(最大程度抑制回聲):
ERLE:值越大越好,則表明殘留回聲的能量相對值越小,回聲抵消效果越好。
Cohde:越接近1說明輸出與麥克風信號越相似,越接近0說明兩者差異越大,遠端單講時理想值為0。
Cohxe:越接近1說明輸出與遠端參考信號越相似,越接近0說明兩者差異越大,即殘留的遠端參考信號頻譜成分越少,理想值為0。
SuppFactor:越接近1說明輸出與麥克風信號的能量越接近,越接近0說明AEC造成能量衰落越嚴重,遠端單講時理想值為0。
(3)雙講(盡量抑制回聲同時保留近端語音)
Cohde:越接近1說明輸出與麥克風信號越相似,保留的近端語音頻譜成分也越多;越接近0說明兩者差異越大,保留的近端語音頻譜成分也越少,雙講時理想值為0.5~0.9(取決于回聲信號在該幀的占比)。
Cohxe:越接近1說明輸出與遠端參考信號越相似,越接近0說明兩者差異越大,即殘留的遠端參考信號頻譜成分越少,雙講時理想值為0。
SuppFactor:越接近1說明輸出與麥克風信號的能量越接近,越接近0說明AEC造成能量衰落越嚴重,雙講時理想值為1。
典型回聲消除技術框架如下圖。
遠端信號x從聽筒或喇叭spk播出,并經過空間傳播,被麥克風mic接收,近端說話信號也進入麥克風mic,這樣麥克風接收到的就是兩個信號的疊加,即d。自適應濾波器w對x進行處理獲得y(回聲信號),d和y的差值作為誤差,傳遞給自適應濾波器,進行濾波器系數迭代更新。
遠端參考信號(上圖far-end signal)經過自適應濾波器w
遠端參考信號經過空間傳播(即經過Room Impulse Response)得到x'
目標誤差
其實,自適應濾波器的作用就是來抵消房間沖擊響應對x的影響,以誤差最小為目標。
具體算法:
(1)LMS(least mean square)
LMS是最廣泛應用的自適應濾波算法,以MSE誤差為目標函數,以梯度下降為優化算法。NLMS是使用輸入的功率對步長進行歸一化的方法,可以取得更好的收斂性能。
算法復雜度:
LMS: (2M+1次乘法和2M次加法) * 序列長度
NLMS: (3M+1次乘法和3M次加法) * 序列長度
(2)Block LMS
LMS算法對輸入數據是串行處理的,可以通過將輸入數據分段并行處理,類似深度學習領域的mini-batch操作, 并且利用頻域FFT來做快速卷積,大大減少計算復雜度。
首先需要將串行的LMS算法轉變為分塊處理,也就是Block LMS(BLMS)。 每次迭代,輸入數據被分成長度為L的塊進行處理。和LMS使用瞬時梯度來進行濾波器參數更新不同,BLMS使用L點的平均梯度來進行參數更新。 對第k塊數據,BLMS算法遞推公式為:
(3)Fast Block LMS
思想是利用FFT進行助攻加速,稱作Fast Block LMS,或Frequency Domain Adaptive Filter。對于長度為M的濾波器,一般采用2M點的FFT(M點補零),且使用overlap-and-save的快速卷積方法。
算法復雜度: 10MlogM +26M
(4)Partitioned Fast Block LMS
對濾波器的時長進行分割,達到降低時延的目的。又稱Multidelay block filter(MDF)。
如果將長度為M的濾波器等分成長度為B的小段,M=P*B。則卷積的結果可以分解為個P卷積疊加。
存在遠近端同時講話場景,針對該場景,要進行雙講檢查。
自適應濾波器有三種工作模式(通過DTD雙講檢測):
· 遠端語音存在,近端語音不存在:濾波、自適應濾波器系數更新
· 遠端語音存在,近端語音存在:濾波
· 遠端語音不存在:什么都不用做
Webrtc中的回聲消除模塊,已包含:雙講檢測技術(語音活動檢測,區分希臘佛中是否存在雙端講話)、自適應濾波技術(主要性能指標:跟蹤性能、抗沖激性、魯棒性和計算復雜性)、后處理(消除自適應濾波器的輸出誤差)。
雙濾波器結構與雙講檢測:
Speex 除了使用MDF作自適應濾波,還是用了雙濾波器結構(Two-Path Method)。 雙濾波器結構包括一個迭代更新的自適應Background Filter, 和一個非自適應的Foreground Filter。在自適應濾波器性能變壞、甚至發散時, AEC使用Foreground Filter的結果,并且重置Background Filter。 在Background Filter 性能變好時,將其參數下載到Foregound Filter。
這種雙濾波器結構,可以實現隱式的雙講檢測。 在雙講的情況下,Background Filter無法收斂,其更新結果不會保存下來,也就實現了區分雙講和非雙講的目標。
上圖就是典型的雙濾波器AEC結構,其核心就是將Background Filter下載到Foregound Filter的判決標準。一般而言,可以有著幾方面的考慮:
Speex AEC使用的判決準則,可以從代碼里面提煉出來,跟以上提到的幾點不完全一樣,是用Foreground Filter和Background Filter輸出的殘留功率之差來進行判別,
其中 Sff 是Foreground Filter與麥克風信號之差的功率, see 是Background Filter與麥克風信號之差的功率, Dbf是兩個Filter輸出信號之差的平方。 于是判別公式可以寫成
5. 自適應濾波器步長優化
上述講解的濾波器步長固定,其實也可以將步長作為參數,把固定步長優化成可變步長,并且通過當前的各段信號,推導出最優步長。
主要是基于論文On Adjusting the Learning Rate in Frequency Domain Echo Cancellation With Double-Talk.
下面摘錄其中的主要結論。 最優步長等于殘余回聲方差與誤差信號方差之比
為了計算殘留回聲的功率,定義泄漏因子 U , 取值在0~1之間
泄漏因子通過遞歸平均更新:
自適應濾波器不能百分百消除回聲,AEC的輸出信號含有殘留的回聲信號,這個時候就需要一個Post-Filter,進行殘留回聲消除(Residual Echo Cancellation)。可以采用信號處理方法,也可以采用深度學習方法。
Contact
掃描二維碼分享到微信