王振中,高 勇
(四川大學,四川 成都 610065)
語音分離一詞最初源于Cherry在1953年提出的“雞尾酒會問題”(Cocktail Party Problem),即在雞尾酒會那樣的聲音環境中,聽者也能毫不費力地在其他人的說話聲和環境噪聲的包圍中聽到一個人的說話內容,因此語音分離問題通常也被叫作“雞尾酒會問題”,而語音分離的目的是將兩個及以上的語音信號從它們的混合語音信號中分離出來。
目前的語音分離方法可分為單通道語音分離方法和陣列語音分離方法。本文著重研究單通道兩個說話人的語音分離技術,單通道語音分離技術主要包括盲源分離技術(Blind Source Separation,BSS)、計算機聽覺場景分析(Computational Auditory Scene Analysis,CASA)以及基于深度學習的語音分離技術。在這些算法中,將深度學習技術引入到語音分離中已成為當前主流模式,可大幅度提升語音分離的性能[1-4]。
文獻[5]和文獻[6]提出了深度聚類(Deep Clustering,DPCL)的方法,主要解決與說話人無關的語音分離問題。該方法把混疊語音中的每個時頻單元結合其上下文信息映射到一個新的嵌入空間,并在這個嵌入空間上進行聚類,使得在這一空間中屬于同一說話人的時頻單元距離較小,因此可以聚類到一起。傳統的DPCL算法在訓練階段通過將對數幅度譜特征輸入到雙向長短期記憶網絡(Bidirectional Long Short-Term Memory,BLSTM)嵌入空間網絡中,在分離階段通過使用K-均值聚類算法來對混合語音信號進行分離。然而,如果直接將高維的幅度譜信息數據輸入到神經網絡進行訓練,那么將會導致神經網絡訓練減慢,并造成數據冗余,但如果將高維的信息先輸入到卷積神經網絡(Convolutional Neural Network,CNN)中,可以從混合語音信號的幅度譜中提取特征并降低幅度譜 的維度。
本文提出了一種基于卷積神經網絡級聯雙向門控循環網絡(Convolutional Neural Network Cascades Bidirectional Gated Recurrent Network,CNNBiGRU)和多頭自注意力機制的深度聚類語音分離算法。首先在訓練階段,使用CNN從混合語音信號的幅度譜中提取特征并降低幅度譜的維度;其次利用BiGRU來捕獲語音信號中的時間特征以實現時間建模;再次通過多頭自注意力機制,更好地利用上下文之間的信息,減少序列信息的丟失,強化幅度譜之間的依賴性,提高語音分離的性能,同時針對神經網絡中的“失活”問題,本文提出了一種局部線性可控的激活函數,即改進的雙曲正切函數(Etanh);最后在分離階段,利用高斯混合聚類算法(Gaussian Mixture Model,GMM)對混合語音信號進行分離。在公開中文數據集中得到的實驗結果表明,相比基線的深度聚類模型[5],該算法的分離效果在客觀指標上均有明顯提高,并且主觀聽感上清晰度和可懂度較好。
聚類是一種無監督的機器學習算法,可以有效地將實例分組到不同的簇[7]。傳統的深度聚類模型[5]是假設時頻單元(Time-Frequency,T-F)中存在合理的區域,可以定義為一個源在其中占主導地位的矩陣。而深度聚類的目的是估計每個時頻單元的掩碼,首先使用神經網絡(BLSTM)將T-F表示為高維嵌入向量,其次通過附加的聚類過程(K-均值聚類)來估計二進制掩碼。
在深度聚類中,輸入信號的對數梅爾譜特征的特征向量表示為Xm=Xt,f,m∈{1,2,…,N},其中X表示由元素m所索引的特征向量,m通常是指音頻信號時頻指數(t,f)的總數,t代表信號幀的時間索引,f代表信號幀的頻率索引,Xt,f表示一個時頻單元。聚類的目的是在元素m中找到輸入X的理想劃分,以分離混合信號。Y={ym,c}代表混合信號的目標嵌入結果,元素m被映射到c個類別上,只有當第c個類別中包含元素m時,有ym,c=1,以此得到理想親和矩陣A=YYT。其中當i和j屬于同一個聚類時,Ai,j=1,其他情況時,Ai,j=0。
為了估計分區,使D維的嵌入空間B=fθ(X)∈RN×D,聚類由參數θ決定,以此將嵌入向量聚類形成更接近目標的分區{1,2,…,N}。在聚類中,B=fθ(X)是通過BiGRU網絡和多頭自注意機制訓練得出的關于輸入語音信號特征X的函數。深度聚類中將嵌入空間B作為一個N×N的矩陣來表示親和矩陣=BBT。
對于每個輸入X,讓來匹配理想親和矩陣并以此進行優化嵌入。從而可以通過最小化估計的親和矩陣與理想親和矩陣之間的距離得到訓練時的損失函數:

在分離階段,首先從測試信號中提取T-F,計算最后一層的輸出即嵌入向量矩陣;其次利用K-均值算法估計出理想的二值掩碼,將估計出的理想二值掩碼乘以混合語音信號的時頻單元;最后用短時傅里葉逆變換和重疊相加的方法分離出原始的語音信號。
門控循環單元(Gated Recurrent Unit,GRU)網絡是LSTM網絡的一種變體,它較LSTM網絡的結構更加簡單,計算量更小,而且效果也很好,同時它既具有LSTM能夠保留長期序列信息的能力,又能夠減少梯度消失的問題。GRU中只有兩個門,即更新門和重置門,而BiGRU模型包含前向傳播、后向傳播兩個GRU模型,相比GRU具有更高的分類和識別精度。綜上考慮,本文采用雙向GRU網絡,該網絡可從前、后兩個方向全面捕捉語音語義特征,能夠在一定程度上消除傳統GRU中輸入信息的順序對最終狀態的額外影響。
目前,注意力機制模型在機器翻譯、圖像描述、文本摘要中被廣泛應用。自注意力機制是注意力機制的變體,它可以減少對外部信息的依賴,更擅長捕捉序列數據或特征的內部相關性。在語音信號處理中,注意力機制可以賦予語音數據中的每個語音特征不同權重,能夠更好地為重要信息分配權重,從而更加準確地理解語音序列的語義。本文中所使用的多頭自注意力機制算法[8-10],通過利用多頭自注意機制從多個子空間中獲取全局序列信息,并挖掘語音中包含的內在特征,其結構如圖1所示。

圖1 多頭自注意力機制結構
多頭自注意力機制算法的計算過程:首先將輸入轉換為鍵值K、查詢值Q和數值V這3個矩陣,平行注意力頭數h用來處理矩陣的不同部分;其次計算縮放點乘注意力機制的注意力分值。具體的表達式為:

式中:查詢矩陣Q∈Rn×d;鍵矩陣K∈Rn×d;數值矩陣V∈Rn×d;d為隱藏層節點的數量;n為輸入長度。
在此基礎上,多頭自注意力機制的注意力得分計算過程如下:

式中:WO,,,都為參數矩陣;h為平行注意力層數或頭數。注意這里要做h次,也就是所謂的多頭,經過大量實驗驗證,最終得出本文中h為2時語音分離效果最佳。
神經網絡的收斂速度、收斂效果往往兩者不可兼得,為了改善神經網絡的收斂速度和效果,現針對激活函數進行分析。ReLU激活函數收斂速度較快,但其負半軸導數恒為0,在語音分離任務中導致收斂效果不佳;tanh激活函數在語音分離任務中收斂效果較好,但其收斂速度較慢。因此借鑒tanh激活函數的泰勒級數思想,本文提出了Etanh激活函數。Etanh激活函數是考慮了tanh和ReLU激活函數各自的優點,得到局部線性可控的新激活函數,為了函數和導函數的連續性,局部線性可控函數選擇使用tanh函數進行改進,新激活函數為:

式中:α,β,γ分別代表偏差補差因子。Etanh(x)通過調整參數α可以實現可控局部線性的范圍,β可以控制函數近似不同斜率的線性函數和函數上限值,γ可以控制函數在負半軸的函數斜率和函數下限值,為了使Etanh(x)函數中的tanh(α·x)函數局部近似ReLU函數,當且僅當α·β=1情況下成立。圖2中展示了不同的α值時Etanh(x)函數的曲線,橫縱坐標分別代表x軸和y軸。從圖2中可以看出不同的α值情況下線性范圍的區域變換情況,在本文中α=0.1,β=10,γ=1.58時語音分離效果最佳,其中γ值的選取是讓Etanh(x)函數的負半軸更近似于tanh函數的負半軸,而α和β值的選取是受語音分離后的語音質量所影響。

圖2 不同的α值時Etanh(x)函數的曲線
相比于基線的深度聚類語音分離算法[5],本文提出的基于CNN-BiGRU和多頭自注意力機制的深度聚類語音分離方法的網絡模型結構如圖3所示。

圖3 本文算法的語音分離結構
本文使用混合語音信號的對數梅爾譜作為輸入特征。本文算法首先通過CNN挖掘語音信號中的局部空間結構信息,有效地提取語音的低維特性;其次利用BiGRU來捕獲語音信號中的時間特征以實現時間建模;最后通過多頭自注意力機制,更好地利用上下文之間的信息,捕獲序列數據之間的內部相關性,強化幅度譜之間的依賴性,提高語音分離的性能。
關于語音分離的實驗一般在開源的英文數據集上展開,數據集語種類型比較單一。為了驗證本文語音分離系統針對不同語種的語音樣本都有良好的分離效果,實驗采用DiDiSpeech中文語音數據庫[11]來進行驗證。該數據集是由滴滴公司聯合天津大學和杜克昆山大學在Interspeech會議上公開發布的開源語音數據庫。該數據集包括500個說話人,每個說話人約有100條WAV格式的語音,每條語音持續時間為3~6 s,采樣率48 kHz,在數據預處理時將其降采樣到8 kHz。實驗所使用的訓練數據集是從DiDiSpeech數據集中隨機挑選混合成的4 000條語音,驗證集為400條語音,從中分別隨機選出男性與男性說話人混合語音50條,男性與女性說話人混合語音50條,女性與女性說話人混合語音50條。說話人語音之間的信號干擾比為-2.5~2.5 dB。實驗中所有的語音信號被降采樣到8 kHz,然后進行幀長為256、幀移為64的短時傅里葉變換(Short-Time Fourier Transform,STFT),分析窗為Hanning窗,網絡結構為3層CNN和4層BiGRU,隱藏層節點數為600,聚類向量深度為40,STFT輸出的為混合語音信號的對數梅爾譜特征。
語音分離的目標是提高語音信號的語音質量或者提高語音信號的清晰度。為了評估本文提出的算法,主要采用信失比(Signal to Distortion Ratio,SDR)、信偽比(Signal to Artifact Ratio,SAR)、信干比(Signal to Interference Ratio,SIR)、語音質量感知評估(Perceptual Evaluation of Speech Quality,PESQ)和短時客觀可懂度(Short-Time Objective Intelligibility,STOI)作為分離算法[12-14]評價指標。SDR反映分離算法的綜合分離效果,SIR反映分離算法對干擾信號的抑制能力,SAR反映分離算法對引入的噪聲的抑制能力,三者的數值越大,表示語音信號的分離效果越好。而PESQ和STOI兩者得分值越高,表示語音質量越好。
為了驗證Etanh對語音分離性能的影響,本文從語音分離系統中激活函數的耗時和語音分離性能兩方面進行比較,其中PESQ和STOI是評估分離后語音質量的客觀評價標準,兩者得分值越高,表示語音質量越好。激活函數魯棒性分析如表1 所示。

表1 3種激活函數的性能對比
由表1分析可知,改進后的Etanh相比于tanh和ReLU,PESQ、STOI得分都有明顯提升,其中PESQ值分別提高了0.32,0.34,STOI值分別提高了0.14,0.15。表1中第3列給出的是3種激活函數在使用英偉達2080的GPU同時訓練時,平均每次迭代所需時間。由表1可知,3種激活函數的耗時在同一級別,Etanh函數比tanh函數降低了0.21 s,比ReLU函數降低了0.12 s。實驗結果驗證了Etanh激活函數在一定程度上更有利于神經網絡的學習,語音分離性能有一定提升。
為了驗證本文算法的優劣性,將基于置換不變訓練(utterance-level Permutation Invariant Training,uPIT)的語音分離算法[15]和文獻[5]提出的語音分離算法中的結果與本文的模型進行性能對比,結果如表2、圖4和圖5所示。其中,整體上得到的計算值是男性與男性、男性與女性、女性與女性共150條語音計算得到的平均值。

表2 不同算法的SDR、SAR、SIR平均值對比

圖4 不同算法的STOI平均值

圖5 不同算法的PESQ平均值
通過表2、圖4、圖5中的數據可以發現,本文算法與uPIT算法相比,男性和男性的SDR值提高了3.465 7,SAR值提高了0.757 9,SIR值提高了8.121;男性與女性的SDR值提高了4.312 5,SAR值提高了1.062 5,SIR值提高了8.206 3;女性與女性的SDR值提高了4.076 6,SAR值提高了0.019 2,SIR值提高了8.248;整體上SDR值提高了3.946 4,SAR值提高了0.647 3,SIR值提高了8.187 9。本文算法與文獻[5]相比,男性與男性的SDR值提高了2.367 6,SAR值提高了1.454 5,SIR值提高了3.132 4;男性與女性的SDR值提高了0.983 1,SAR值提高了0.819 2,SIR值提高了1.280 9;女性與女性的SDR值提高了2.093 6,SAR值提高了1.493 8,SIR值提高了2.405;整體上SDR值提高了1.791 9,SAR值提高了1.223 2,SIR值提高了2.257 1。綜上分析可知,本文算法的各項評價指標,SDR平均值、SAR平均值、SIR平均值、STOI平均值和PESQ平均值均優于uPIT算法和文獻[5]算法。
將獲得的混合語音信號使用本文算法進行語音分離,并與文獻[5]進行對比,圖6為時域語音波形對比結果。如圖6所示,可以觀察到文獻[5]算法和本文算法的時域語音波形對比結果,圖中區別最明顯的區域部分均使用橢圓標記出來。可以看出本文算法的分離效果優于文獻[5]算法,并且分離后的語音主觀聽感上清晰度和可懂度較好,這表明本文算法在一定程度上可以更好地應用于工程實踐環境中。


圖6 文獻[5]算法和本文算法分離的語音波形對比結果
本文提出了一種基于CNN-BiGRU和多頭自注意力機制的深度聚類語音分離算法。本文算法以對數梅爾譜作為輸入特征,通過CNN-BiGRU網絡結構來捕獲混合語音信號的空間和時間特征,再通過多頭自注意力機制,更好地利用上下文之間的信息,減少序列信息的丟失,最后通過高斯混合聚類算法對混合語音進行分離。實驗結果表明,本文提出的語音分離算法模型具有參數少、速度快等優勢,并且各項評價指標以及分離出的時域波形均明顯優于基線的深度聚類算法,這證明了本文算法模型的合理性和有效性,可以更好地應用到工程實踐環境中。
目前本文算法只考慮了兩個說話人的語音分離情況,而在智能家居或者在其他工程應用環境中,實際情況下可能不止2個人在同時說話,所以在接下來的研究工作中,將會考慮到3個或3個以上說話人的語音分離情況,同時也將繼續驗證該激活函數在多數場景下的性能以及適應性,并進一步提升語音分離的性能。