劉 航,李 揚,袁浩期,王俊影
(廣東工業大學 機電工程學院,廣州 510006)
語音信號分離是指在不知源信號和傳輸信道任何先驗知識的情況下,僅根據輸入語音源信號的統計特征(時域和頻域信息),通過觀察信號來恢復出各獨立源信號的過程[1]。目前,語音信號分離主要應用于自動語音識別(Automatic Speech Recognition,ASR)、助聽器設計和移動語音通信等方面。一個性能良好的前端語音分離模塊可以提高自動識別的目標語音質量[2]。然而,在非平穩噪聲和單聲道條件下,語音分離較為困難,語音分離技術的性能仍有較大的提升空間。
已有的語音信號分離方法大致可以分為兩類。一類是基于信號濾波(包括估計噪聲的功率譜或理想維納濾波器[3])的方法,如譜減法和維納濾波法。其中,維納濾波法是在極小均方誤差計算函數下分離純凈語音的最優濾波器。基于信號濾波的方法在假定語音與噪聲相互獨立的條件下,將語音信號與噪聲信號疊加為混合語音信號,對混合語音信號進行短時傅里葉變換(STFT),將其轉化為二維的時頻信號,在此基礎上,推斷出語音的頻譜系數。在噪聲為平穩或者慢變的情況下[4],這些信號濾波方法能夠取得較好的分離效果。但是在現實情況中,上述條件通常難以滿足,特別是在低信噪比條件下,分離方法的性能會大幅下降。另一類是基于統計建模的方法。其中,基于淺層模型的非負矩陣分解[5]方法利用混合前的純凈信號分別構建語音和噪聲模型,其能挖掘非負數據中的局部表示,但是處理高維數據的能力有限,很難通過拓展上下文時間幀來挖掘語音信號中的時頻相關性,且非負矩陣分解的推斷過程較費時[6],嚴重依賴事先訓練的語音和噪聲模型。
基于深度學習的語音信號分離方法通常需要結合計算聽覺場景分析(Computational Auditory Scene Analysis,CASA)[7]。CASA通過模擬人耳對聲音的處理機制以及人耳的聽覺掩蔽功能來實現語音信號分離[8],其能夠極大地提高語音的可懂度[9]。然而,以聽覺掩蔽即時頻掩蔽的計算作為神經網絡的直接或間接計算目標,均不是最優的,如通過混合信號直接預測時頻掩蔽,在語音信號與噪聲信號幅度譜相加的計算中需要人為選取一個α值,或通過混合信號直接估算目標信號源[11-13],并根據估值計算間接得到時頻掩蔽,但在這個過程中,時頻掩蔽的質量嚴重依賴于神經網絡映射的輸出,且計算過程需要一個明確的時頻掩蔽函數,常見的時頻掩蔽計算函數是理想二值掩蔽和理想浮值掩蔽[14],其時頻掩蔽的計算函數并非神經網絡中的一部分(僅目標語音信號),故時頻掩蔽的生成是不可學習的。
本文基于生成對抗網絡(Generative Adversarial Networks,GAN)[15]提出一種可學習的時頻掩蔽生成方法,在語音生成階段引入一種遞歸推導算法和稀疏編碼器以改進時頻掩蔽的生成結果,將生成的語音信號以及真實語音信號輸入至判別器進行分類,在此基礎上,依據收斂的時頻掩蔽獲得最終的目標語音信號。
本文提出一種基于GAN的語音信號分離算法。GAN在計算機視覺領域得到廣泛應用,其能生成逼真的圖像用于語義分割與數據增強等[16-18]。本文利用時頻分解技術提取時頻單元級別的特征并作為輸入[19],將混合信號與目標語音信號看作2種不同概率分布的信號并進行非線性映射。基于GAN的語音信號分離算法結構如圖1所示。

圖1 基于GAN的語音信號分離算法結構
Fig.1 Structure of speech signal separation algorithm based on GAN
(1)

(2)
其中,|·|表示矩陣的絕對值,α是根據假定語音的概率分布選取的指數。
受博弈論中二元零和博弈的啟發,GAN模型中包含一對相互對抗的模型:生成模型G和判別模型D。判別器D盡可能正確地判斷輸入的數據是來自真實樣本還是來自偽樣本,生成器G則盡量去學習真實數據樣本的數據分布。GAN模型結構如圖2所示。

圖2 GAN模型結構
為在博弈中勝出,判別器的判別過程與生成器的學習過程相互對抗并迭代優化,使得判別器和生成器的性能不斷提升,優化的目標是尋找兩者間的納什均衡。在上述極小-極大的優化過程中,生成器和判別器的優化目標函數為:
Ez~PG(z)[lg(1-D(G(z)))]
(3)
其中,x是服從Pdata(x)的真實數據樣本,G(z)代表PG(z)分布的數據樣本,在本文中其具體表示真實語音信號和由生成器生成的語音信號,VCGAN表示待優化的目標函數。
假定有一個額外的約束條件向量y作為輔助信息,生成器G(z,y)在y的約束下生成語音信號,判別器D(x,y)也在y的約束下對真假語音信號進行判別[21],則目標函數轉換為:
Ez~PG(z),y~Pdata(y)[lg(1-D(G(z,y),y))]
(4)
GAN模型結構由生成器G和判別器D 2個部分組成。本文提出一種可學習的時頻掩蔽生成器,該生成器引入了一個具有神經網絡結構的遞歸推導算法和一個用于生成時頻掩蔽Mj的稀疏編碼層[22-23]。其中,生成器由多層遞歸神經網絡(RNN)和稀疏編碼層組成,RNN輸出到稀疏編碼層,稀疏編碼層的輸出為相應的時頻掩蔽Mj。該方法省去了后續的信號濾波等處理過程,也無需人工定義神經網絡的層數。
如圖2所示,生成器將一層雙向遞歸神經網絡作為編碼器(Renc)、一層遞歸神經網絡作為解碼器(Rdec)及一層前饋神經網絡作為稀疏編碼層FFFN。稀疏編碼層的輸出(即時頻掩蔽Mj)再與混合信號進行矩陣元素相乘,即得到目標語音信號。判別器由一層前饋神經網絡(作為編碼器)和另外一層前饋神經網絡(作為解碼器)組成,并輸出[0,1]區間的值。生成器與判別器經過迭代優化,得到最優時頻掩蔽Mj,并以此估算目標語音信號的幅度譜,然后結合混合信號的相位譜以短時傅里葉逆變換(ISTFT)重建時域信號。

在經過輸入語音處理后,以|Yfilter|作為編碼器Renc的輸入,Renc采用雙向RNN(Bi-GRU),每一時間幀的輸出ht隨時間幀t的迭代而更新,并采用殘差網絡進行疊加,疊加過程為[24]:
henct=ht+|yfiltert|
|Yfilter| = [|yfilterT|,|yfilterT-1|,…,|yfiltert|,…,

(5)
其中,henct表示每一時間幀t的輸出ht疊加|yfiltert|后的幅度譜向量,殘差網絡有利于加快訓練速度[24]。

(6)

算法1遞歸推導算法
2.for i∈{1,2,…,Niter}do
5.break

(7)
其中,修正線性單元(ReLU)函數的定義如下:
(8)

(9)
其中,|Yfilter|為生成器的真實輸入。

(10)

根據生成器與判別器的輸入,本文調整目標函數為:
E[lgD(1-D(G(Yin),Yin))]
(11)
其中,Yj是真實語音信號,Yin為輸入混合信號,G為生成語音信號。

本文實驗環境為Ubuntu 14.04,使用Python2.7以及Tensorflow1.1進行編程,并采用MIR-1K作為數據集[25],輸入設置如2.2節所描述,每一段語音的采樣頻率為44.1 kHz并維持在4 s~13 s范圍內。這些語音片段是110首分別由男聲和女聲演唱的歌曲,本文隨機選擇80%的語音片段用于訓練,10%用于驗證,10%用于測試。設生成器輸入的語音序列初始長度T=50,實驗驗證大約為0.5 s,重疊時間段L=10,所有參數使用Adam算法作為梯度下降方法[26],學習率為1×e-4,批量訓練數據B=16,整個訓練集的10%用作交叉驗證,最大迭代次數為10 000。

(12)
根據式(12)對預測信號的分解,定義如下3個度量標準:
(13)
SIR、SAR和SDR分別反映分離算法對干擾信號的抑制能力、分離算法對引入噪聲的抑制能力及分離算法的綜合分離效果。三者的數值越大,信號的分離效果越好[27]。
本文分別對利用深度神經網絡(DNN)來預測目標語音信號對應的浮值掩蔽方法[10](記為方法1)、基于編解碼器結構預測目標語音信號方法[13](記為方法2)、基于遞歸神經網絡(RNN)并引入遞歸推導算法的時頻掩蔽生成器(記為方法3)以及本文加入判別器的生成對抗網絡(記為方法4)進行實驗驗證,其中,輸入特征均保持一致且僅采用幅度譜作為特征。首先,對方法1進行實驗分析,其首層隱藏單元個數為輸入的維度,中間隱藏層單元個數為512,神經網絡層數分別采用2層、3層和4層,當神經網絡層數為3時方法1取得較優效果,而層數達到4時,SDR、SIR、SAR都為下降的趨勢,說明過多的神經元增加了方法1的網絡復雜度,導致了過擬合現象;在方法3中,遞歸推導算法在最大迭代次數Niter=3、閾值τterm=1×e-2和最大迭代次數Niter=10、閾值τterm=1×e-3時(分別記為方法3-1、方法3-2),SIR和SDR均取得最高值。各方法針對人聲與背景音的SDR、SIR和SAR對比結果如表1、表2所示。
表1 各方法針對人聲的SDR、SIR和SAR結果
Table 1 SDR,SIR and SAR results of each method for human voice

方法SDR/dBSIR/dBSAR/dB方法16.0311.529.65方法26.5412.138.41方法3-19.7414.669.98方法3-210.5813.849.22方法412.2816.5318.88
表2 各方法針對背景音的SDR、SIR和SAR結果
Table 2 SDR,SIR and SAR results of each method for background sound

方法SDR/dBSIR/dBSAR/dB方法15.9613.189.12方法26.8212.198.30方法3-19.3615.289.44方法3-210.9513.299.63方法411.3518.2716.33
從表1、表2可以看出,方法1與方法2在人聲分離效果上相差不大,方法1的SAR值要高于方法2,說明以時頻掩蔽為計算目標的分離在噪聲抑制上效果較優。方法3相比方法1和方法2在SIR和SDR上有顯著提升,可驗證語音信號在時域和頻域上具有很強的相關性,且根據時序進行建模能體現語音信號中時序的相關性。在方法3的基礎上引入判別器進行分類,即為方法4。將生成器生成的目標語音信號與真實語音信號在真實帶噪環境下進行判別分類,可以看出,方法4的SIR和SDR高于方法3-1、方法3-2,且在SAR上取得了較好效果,說明生成對抗網絡對引入噪聲的抑制能力較強。
針對方法3(人聲),分析不同的輸入時間步長T對分離效果的影響,輸入步長分別取T=50、T=100和T=500,其余設置保持不變,結果如表3所示。從表3可以看出,當T=100時,SIR、SDR及SAR均較高,此時實際實驗時間為5 s~6 s左右,與實驗中輸入的語音片段更接近,說明時間步長需要與輸入的語音片段長度保持一致,過大的時間步長會提高時間復雜度。
表3 方法3中不同時間步長對應的指標結果
Table 3 SDR,SIR and SAR results corresponding to different time steps in method 3

輸入時間步長SDR/dBSIR/dBSAR/dB505.2110.736.101009.0113.288.355007.1511.417.22
將通過方法4分離的目標語音信號與原純凈語音信號同時轉化為時域波形,圖3為真實人聲與分離人聲時域波形圖,圖4為真實背景音與分離背景音的時域波形圖。從圖3、圖4可以看出,人聲的分布較密集集中,而背景音分布較均勻且變換波動大,分離語音包絡線與原語音包絡線形狀逼近,且人聲與背景音分離的平均誤差僅為 0.14 dB。

圖3 人聲分離時域波形圖

圖4 背景音分離時域波形圖
Fig.4 Time domain waveform of background sound separation
將時域波形圖轉化為二維時頻功率譜并進行對比分析,結果如圖5~圖9所示。從圖5、圖6可以看出,真實人聲比分離人聲略多出細微毛刺,形狀極為相似,且圖6結果可驗證在訓練階段忽略大于頻率F的高頻部分以減少訓練參數量完全可行,原因是高頻部分信號的能量值小(近乎為0)且人耳聽覺對其不敏感。

圖5 混合語音信號二維時頻功率譜
Fig.5 Two dimensional time-frequency power spectrum of mixed speech signal

圖6 真實人聲二維時頻功率譜
Fig.6 Two dimensional time-frequency power spectrum of real human voice

圖7 真實分離人聲二維時頻功率譜
Fig.7 Two dimensional time-frequency power spectrum of real separated human voice

圖8 背景音二維時頻功率譜
Fig.8 Two dimensional time-frequency power spectrum of background sound

圖9 分離背景音二維時頻功率譜
Fig.9 Two dimensional time-frequency power spectrum of separated background sound
本文提出一種應用于單聲道語音信號分離的生成對抗網絡深度學習方法。將時頻掩蔽與目標語音信號的幅度譜融入到神經網絡中,作為生成器中的學習目標,并將生成的語音信號輸入至判別器進行分類,以降低信號源之間的擾動。實驗結果表明,相對傳統非負矩陣分解以及深度神經網絡等方法,該方法具有更好的信號分離性能。在實際應用中,測試環境與訓練環境匹配率較低,因此,下一步將利用半監督與聚類相結合的方式來解決信號源不對稱等問題。