解密實時通話中基于 AI 的一些語音增強技術
2023-06-09 06:56:49 | 來源:字節(jié)跳動技術團隊 |
2023-06-09 06:56:49 | 來源:字節(jié)跳動技術團隊 |
實時音視頻通信 RTC 在成為人們生活和工作中不可或缺的基礎設施后,其中所涉及的各類技術也在不斷演進以應對處理復雜多場景問題,比如音頻場景中,如何在多設備、多人、多噪音場景下,為用戶提供聽得清、聽得真的體驗。
(相關資料圖)
作為語音信號處理研究領域的旗艦國際會議,ICASSP (International Conference on Acoustics, Speech and Signal Processing) 一直代表著聲學領域技術最前沿的研究方向。ICASSP 2023 收錄了多篇和音頻信號語音增強算法相關的文章,其中,火山引擎RTC音頻團隊共有4篇研究論文被大會接收,論文方向包括特定說話人語音增強、回聲消除、多通道語音增強、音質修復主題。本文將介紹這 4 篇論文解決的核心場景問題和技術方案,分享火山引擎 RTC 音頻團隊在語音降噪、回聲消除、干擾人聲消除領域的思考與實踐。
《基于頻帶分割循環(huán)神經網絡的特定說話人增強》論文地址:
https://ieeexplore.ieee.org/abstract/document/10097252
實時特定說話人語音增強任務有許多問題亟待解決。首先,采集聲音的全頻帶寬度提高了模型的處理難度。其次,相比非實時場景,實時場景下的模型更難定位目標說話人,如何提高說話人嵌入向量和語音增強模型的信息交互是實時處理的難點。受到人類聽覺注意力的啟發(fā),火山引擎提出了一種引入說話人信息的說話人注意力模塊(Speaker Attentive Module,SAM),并將其和單通道語音增強模型-頻帶分割循環(huán)神經網絡(Band-split Recurrent Neural Network,BSRNN) 融合,構建特定人語音增強系統(tǒng)來作為回聲消除模型的后處理模塊,并對兩個模型的級聯進行優(yōu)化。
模型框架結構頻帶分割循環(huán)神經網絡(BSRNN)頻帶分割循環(huán)神經網絡(Band-split RNN, BSRNN)是全頻帶語音增強和音樂分離的 SOTA 模型,其結構如上圖所示。BSRNN 由三個模塊組成,分別是頻帶分割模塊(Band-Split Module)、頻帶序列建模模塊(Band and Sequence Modeling Module)和頻帶合并模塊(Band-Merge Module)。頻帶分割模塊首先將頻譜分割為 K 個頻帶,每個頻帶的特征通過批歸一化(BN)后,被 K 個全連接層(FC)壓縮到相同的特征維度 C 。隨后,所有頻帶的特征被拼接為一個三維張量并由頻帶序列建模模塊進一步處理,該模塊使用 GRU 交替建模特征張量的時間和頻帶維度。經過處理的特征最后經過頻帶合并模塊得到最后的頻譜掩蔽函數作為輸出,將頻譜掩蔽和輸入頻譜相乘即可得到增強語音。我們在每一個頻帶序列建模模塊后添加了說話人注意力模塊以構建特定人語音增強模型。
說話人注意力機制模塊 (SAM)說話人注意力模塊(Speaker Attentive Module)的結構如上圖。其核心思想是使用說話人嵌入向量 e作為語音增強模型中間特征的吸引子,計算其和中間特征所有時間和頻帶上的相關度 s,稱作注意力值。該注意力值將被用于對中間特征 h進行縮放規(guī)整。其具體公式如下:
首先通過全連接和卷積將 e 和 h 變換為 k 和 q:
k 和 q 相乘得到注意力值:
最后通過該注意力值縮放原始特征:
模型訓練數據關于模型訓練數據,我們采用了第五屆 DNS 特定說話人語音增強賽道的數據以及 DiDispeech 的高質量語音數據,通過數據清洗,得到約 3500 個說話人的清晰語音數據。在數據清洗方面,我們使用了基于 ECAPA-TDNN[1]說話人識別的預訓練模型來去除語音數據中殘留的干擾說話人語音,同時使用第四屆 DNS 挑戰(zhàn)賽第一名的預訓練模型來去除語音數據中的殘留噪聲。在訓練階段,我們生成了超過 10 萬條 4s 的語音數據,對這些音頻添加混響以模擬不同信道,并隨機和噪聲、干擾人聲混合,設置成一種噪聲、兩種噪聲、噪聲和干擾說話人以及僅有干擾說話人 4 種干擾場景。同時,為了模擬不同大小的輸入,含噪語音和目標語音電平也會被隨機縮放。
《融合特定說話人提取與回聲消除技術方案》論文地址:
https://ieeexplore.ieee.org/abstract/document/10096411
回聲消除一直是外放場景中一個極其復雜且至關重要的問題。為了能夠提取出高質量的近端干凈語音信號,火山引擎提出了一種結合信號處理與深度學習技術的輕量化回聲消除系統(tǒng)。在特定說話人降噪(Personalized Deep Noise Suppression, pDNS ) 基礎上,我們進一步構建了特定說話人回聲消除(Personalized Acoustic Echo Cancellation, pAEC)系統(tǒng),其包括一個基于數字信號處理的前處理模塊、一個基于深度神經網絡的兩階段模型和一個基于 BSRNN 和 SAM 的特定說話人語音提取模塊。
特定說話人回聲消除總體框架
基于數字信號處理線性回聲消除的前處理模塊前處理模塊主要包含兩部分:時延補償(TDC)和線性回聲消除(LAEC),該模塊均在子帶特征上進行。
基于信號處理子帶線性回聲消除算法框架
時延補償TDC 基于子帶互相關,其首先分別在每個子帶中估計出一個時延,然后使用投票方法來確定最終時間延遲。
線性回聲消除LAEC 是一種基于 NLMS 的子帶自適應濾波方法,由兩個濾波器組成:前置濾波器(Pre-filter)和后置濾波器(Post-filter),后置濾波器使用動態(tài)步長進行自適應更新參數,前置濾波器是狀態(tài)穩(wěn)定的后置濾波器的備份。通過比較前置濾波器和后置濾波器的輸出的殘余能量,最終選擇誤差信號。
LAEC 處理流程圖
基于多級卷積-循環(huán)卷積神經網絡(CRN)的兩階段模型為了減輕模型建模負擔,我們主張將 pAEC 任務解耦為“回聲抑制”和“特定說話人提取”兩個任務。因此,后處理網絡主要由兩個神經網路模塊組成:用于初步回聲消除和噪聲抑制的基于 CRN 的輕量級模塊,以及用于更好的近端語音信號重建的基于 pDNS 的后處理模塊。
第一階段:基于CRN的輕量級模塊基于 CRN 的輕量級模塊由一個頻帶壓縮模塊、一個編碼器、兩個雙路徑 GRU、一個解碼器和一個頻帶分解模塊組成。同時,我們還引入了一個語音活動檢測(Voice Activity Detection, VAD)模塊用于多任務學習,有助于提高對近端語音的感知。CRN 以壓縮幅度作為輸入,并輸出初步的目標信號復數理想比掩碼(cIRM)和近端 VAD 概率。
第二階段:基于pDNS的后處理模塊這個階段的 pDNS 模塊包括了上述介紹的頻帶分割循環(huán)神經網絡 BSRNN 和說話人注意力機制模塊 SAM,級聯模塊以串聯的方式接在輕量級 CRN 模塊之后。由于我們的 pDNS 系統(tǒng)在特性說話人語音增強任務上達到了較為優(yōu)異的性能,我們將一個預訓練好的 pDNS 模型參數作為模型的第二階段初始化參數,對前一階段的輸出進一步處理。
級聯系統(tǒng)訓練優(yōu)化損失函數我們對兩階段模型進行級聯優(yōu)化,讓模型在第一階段預測近端語音,在第二階段預測近端特定說話人語音。同時,我們還引入了一個近端 VAD 罰項,增強模型對近端語音的感知。具體損失函數定義如下:
其中,
分別對應模型第一階段和第二階段預測的 STFT 特征, 分別表示近端語音和近端特定說話人語音的 STFT 特征,
分別表示模型預測和目標 VAD 狀態(tài)。
模型訓練數據為了使回聲消除系統(tǒng)可以處理多設備,多混響,多噪音采集場景的回聲,我們通過混合回聲和干凈語音,得到 2000+ 小時的訓練數據,其中,回聲數據使用 AEC Challenge 2023 遠端單講數據,干凈語音來自 DNS Challenge 2023 和 LibriSpeech,用于模擬近端混響的 RIR 集合來自 DNS Challenge。由于 AEC Challenge 2023 遠端單講數據中的回聲存在少量噪聲數據,直接用這些數據作為回聲容易導致近端語音失真,為了緩解這個問題,我們采用了一種簡單但有效的數據清理策略,使用預訓練的一個 AEC 模型處理遠端單講數據,將具有較高殘余能量的數據識別為噪聲數據,并反復迭代下圖清洗流程。
級聯優(yōu)化方案系統(tǒng)效果這樣的一套基于融合回聲消除與特定說話人提取的語音增強系統(tǒng)在 ICASSP 2023 AEC Challenge 盲測試集 [2] 上驗證了它在主客觀指標上的優(yōu)勢——取得了 4.44 的主觀意見分(Subjective-MOS)和 82.2%的語音識別準確率(WAcc)。
《基于傅立葉卷積注意力機制的多通道語音增強》
論文地址:
https://ieeexplore.ieee.org/document/10095716
基于深度學習的波束權值估計是目前解決多通道語音增強任務的主流方法之一,即通過網絡求解波束權值來對多通道信號進行濾波從而獲得純凈語音。與傳統(tǒng)波束形成算法求解空間協方差矩陣的原理類似,頻譜信息和空間信息在波束權值的估計中也起著重要作用。然而,現有許多神經波束形成器都無法對波束權值進行最優(yōu)估計。為處理這一挑戰(zhàn),火山引擎提出了一種傅里葉卷積注意力編碼器(Fourier Convolutional Attention Encoder, FCAE),該編碼器能在頻率特征軸上提供全局感受野,加強對頻率軸上下文特征的提取。同時,我們也提出了一種基于 FCAE 的卷積循環(huán)編解碼器(Convolutional Recurrent Encoder-Decoder, CRED)的結構用來從輸入特征中捕捉頻譜上下文特征和空間信息。
模型框架結構波束權值估計網絡該網絡借助嵌入波束網絡(Embedding and Beamforming Network,EaBNet)的結構范式,將網絡分為嵌入模塊和波束模塊兩個部分,嵌入模塊用來提取聚合頻譜和空間信息的嵌入向量,并將該嵌入向量送入波束部分導出波束權值。這里采用一個 CRED 結構來學習嵌入張量,多通道輸入信號經過 STFT 變換后,送入一個 CRED 結構提取嵌入張量,該嵌入張量類似傳統(tǒng)波束形成中的空間協方差矩陣,包含可區(qū)分語音和噪聲的特征。嵌入張量經過 LayerNorm2d 結構,再經過兩層堆疊的 LSTM 網絡,最后通過一個線性層導出波束權值。我們對該波束權值作用于多通道輸入頻譜特征上,進行濾波求和操作,最后得到純凈語音譜,經過 ISTFT 變換即可得到目標時域波形。
CRED結構我們采用的 CRED 結構如上圖所示。其中,FCAE 為傅里葉卷積注意力編碼器,FCAD 為與 FCAE 對稱的解碼器;循環(huán)模塊采用深度前饋順序記憶網絡(Deep Feedward Sequential Memory Network,DFSMN)對序列的時序依賴進行建模,在不影響模型性能的基礎上減小模型尺寸;跳連接部分采用串聯的通道注意力(Channel Attention)和空間注意力(Spatial Attention)模塊,用來進一步提取跨通道間的空間信息,并連接深層特征與淺層特征,方便信息在網路中的傳輸。
FCAE結構傅里葉卷積注意力編碼器(FCAE)的結構如上圖所示。該模塊受傅里葉卷積算子[3]的啟發(fā),利用離散傅里葉變換在變換域上的任意一點的更新將會對原始域的信號產生全局影響的特點,對頻率軸特征進行一維 FFT 變換,即可在頻率軸上獲得全局感受野,進而加強對頻率軸上下文特征的提取。此外,我們引入了空間注意力模塊和通道注意力模塊,進一步增強卷積表達能力,提取有利的頻譜-空間聯合信息,增強網絡對純凈語音和噪聲可區(qū)分特征的學習。在最終表現上,該網絡以僅 0.74M 的參數量取得了優(yōu)異的多通道語音增強效果。
模型訓練數據數據集方面,我們采用了 ConferencingSpeech 2021 比賽提供的開源數據集,純凈語音數據包含 AISHELL-1、AISHELL-3、VCTK 以及 LibriSpeech(train-clean-360),挑選其中信噪比大于 15dB 的數據用于生成多通道混合語音,噪聲數據集采用 MUSAN、AudioSet。同時,為了模擬實際多房間混響場景,通過模擬改變房間尺寸、混響時間、發(fā)聲源,噪聲源位置等方式將開源的數據與超過 5000 個房間脈沖響應進行卷積,最終生成 6 萬條以上多通道訓練樣本。
《基于兩階段神經網絡模型的音質修復系統(tǒng)》論文地址:
https://ieeexplore.ieee.org/document/10094827
除了特定說話人增強,回聲消除及多通道語音增強幾個方向,火山引擎也在音質修復方向上做了一些嘗試。實時通信過程中存在的各種失真會影響語音信號的質量,使語音信號的清晰度和可懂度下降。火山引擎提出了一個兩階段模型,該模型使用階段性的分治策略來修復影響語音質量的多種失真。
模型框架結構下圖為兩階段模型整體框架構圖,其中,第一階段模型主要修復頻譜缺失的部分,第二階段模型則主要抑制噪聲、混響以及第一階段模型可能產生的偽影。
第一階段模型:Repairing Net整體采用深度復數卷積循環(huán)神經網絡 (Deep Complex Convolution Recurrent Network, DCCRN)[4]架構,包括 Encoder、時序建模模塊和 Decoder 三個部分。受圖像修復的啟發(fā),我們引入了 Gate 復值卷積和 Gate 復值轉置卷積代替 Encoder 和 Decoder 中的復值卷積和復值轉置卷積。為了進一步提升音頻修補部分的自然度,我們引入了 Multi-Period Discriminator和 Multi-Scale Discriminator 用于輔助訓練。
第二階段模型:Denoising Net整體采用 S-DCCRN 架構,包括 Encoder、兩個輕量級 DCCRN 子模塊和 Decoder 三個部分,其中兩個輕量級 DCCRN 子模塊分別進行子帶和全帶建模。為了提升模型在時域建模方面的能力,我們將 DCCRN子 模塊中的 LSTM 替換為 Squeezed Temporal Convolutional Module(STCM)。
模型訓練數據這里用來訓練來音質修復的干凈音頻、噪聲、混響均來自 2023 DNS 競賽數據集,其中干凈音頻總時長為 750 小時,噪聲總時長為 170 小時。在第一階段模型的數據增廣時,我們一方面利用全帶音頻與隨機生成的濾波器進行卷積, 20ms 為窗長將音頻采樣點隨機置零和對音頻隨機進行降采樣來模擬頻譜缺失缺陷,另一方面在音頻幅度頻與音頻采集點上分別乘以隨機尺度;在第二階段的數據增廣時,我們利用第一階段已經生成的數據,再卷積各種類型的房間沖激響應得到不同混響程度的音頻數據。
音頻處理效果在 ICASSP 2023 AEC Challenge中,火山引擎 RTC 音頻團隊,在通用回聲消除 (Non-personalized AEC) 與特定說話人回聲消除 (Personalized AEC) 兩個賽道上榮獲冠軍,并在雙講回聲抑制,雙講近端語音保護、近端單講背景噪聲抑制、綜合主觀音頻質量打分及最終語音識別準確率等多項指標上顯著優(yōu)于其他參賽隊伍,達到國際領先水平。
我們來看一下經過上述技術方案后,火山引擎 RTC 在不同場景下的語音增強處理效果。
不同信噪回聲比場景下的回聲消除下面兩個例子分別展示了回聲消除算法在不同信號回聲能量比例場景下處理前后的對比效果。
中等信回聲比場景
超低信回比場景對回聲消除的挑戰(zhàn)性最大,此時我們不僅需要有效去除大能量的回聲,還需要同時最大程度保留微弱的目標語音。如下樣本中,女聲為目標說話人語音,男生為非目標說話人語音(回聲),目標語音幾乎被非目標語音完全覆蓋了。
超低信回聲比場景
不同背景干擾說話人場景下的說話人提取下面兩個例子分別展示了特定說話人提取算法在噪音與背景人干擾場景下處理前后的對比效果。
如下樣本中,特定說話人既有類似門鈴的噪聲干擾,又有背景人說話噪聲干擾,僅使用 AI 降噪只能去除門鈴噪聲,因此還需要針對特定說話人進行人聲消除。
目標說話人與背景干擾人聲及噪音
當目標說話人聲和背景干擾人聲的聲紋特征很接近時,此時對于特定說話人提取算法的挑戰(zhàn)更大,更能考驗特定說話人提取算法魯棒性。如下樣本中,目標說話人和背景干擾人聲是兩個相似的女聲。
目標女聲與干擾女聲混合
總結與展望上述介紹了火山引擎 RTC 音頻團隊基于深度學習在特定說話人降噪,回聲消除,多通道語音增強等方向做出的一些方案及效果,未來場景依然面臨著多個方向的挑戰(zhàn),如語音降噪如何自適應噪音場景,音質修復如何在更廣范圍對音頻信號進行多類型修復以及怎么樣各類終端上運行輕量低復雜度模型,這些挑戰(zhàn)點也將會是我們后續(xù)重點的研究方向。