董宏越,馬建芬+,張朝霞
(1.太原理工大學 信息與計算機學院,山西 晉中 030600; 2.太原理工大學 物理與光電工程學院,山西 晉中 030600)
語音增強是從含噪語音中估計純凈語音,從而得到高質量和可懂度的增強語音[1]。多名研究者提出了基于監(jiān)督學習的算法[2-7]進行語音增強。其中,基于時域波形映射的深度學習語音增強算法[8],通過全卷積神經(jīng)網(wǎng)絡可以直接將原始含噪語音作為輸入,并直接輸出時域增強語音,成為了語音增強領域研究的熱門。但由于在時域中,背景噪聲和語音之間沒有明顯的可辨別性,如何設計合適的損失函數(shù)來提高全卷積神經(jīng)網(wǎng)絡的去噪能力成為其中一個難點。近些年研究發(fā)現(xiàn),許多語音增強算法忽略了語音的諧波結構,無法有效去除諧波之間的噪聲,因此具有較差的增強性能[9,10]。而現(xiàn)有改進的基于時域波形映射的語音增強方法[11,12],是通過使用頻譜幅度損失函數(shù)或直接采用評價指標相關的損失函數(shù),來提高語音增強的性能。這些方法還沒有考慮到直接恢復語音的諧波結構,導致這些算法在低信噪比條件下仍然不能獲得讓人滿意的增強效果。
因此,為解決現(xiàn)有基于時域波形映射的語音增強算法沒有考慮到語音的諧波結構,導致具有較差語音增強性能的問題。我們提出了一種基于時域波形映射-頻域諧波損失的語音增強算法,通過使用本文提出的頻域諧波損失函數(shù),將語音諧波結構的恢復納入神經(jīng)網(wǎng)絡的學習過程之中,來進一步提高語音增強的性能。具體的,將諧波噪聲模型(HNM)對純凈語音進行建模得到的頻域中的HNM分量作為訓練目標,通過最小化頻域諧波損失,訓練波形映射全卷積神經(jīng)網(wǎng)絡,用訓練得到的網(wǎng)絡進行語音增強。通過實驗對比,進一步探討本文方法的語音增強性能。
假設含噪語音y由純凈語音s和加性噪聲d組成,表示為
y=s+d
(1)
傳統(tǒng)的基于時域的語音增強方法,如圖1所示,可以描述為:是通過訓練全卷神經(jīng)網(wǎng)絡(FCN)的參數(shù)集合θ構造一個高度復雜的非線性函數(shù)fθ,使得損失函數(shù)Er
圖1 基于時域波形映射的語音增強算法
(2)
(3)
但傳統(tǒng)的方法只是通過最小化式(2)所示的時域純凈語音和估計純凈語音信號之間的均方誤差(MSE)損失來訓練網(wǎng)絡。傳統(tǒng)FCN-MSE算法語音增強對比語譜圖如圖2所示,由于在時域中,背景噪聲和語音之間沒有明顯的可辨別性,使用時域損失會存在如圖2(c)圓圈部分語音失真的問題。并且由于這種損失函數(shù)中訓練目標的設置只是簡單使用純凈語音的波形,沒有考慮到語音的諧波結構(在語譜圖上,諧波結構顯示為橫紋),如圖2中方塊位置,增強語音相比純凈語音,沒有明顯的諧波結構,橫紋不明顯,很難去除諧波之間的噪聲,進一步影響了其語音增強的性能。
圖2 FCN-MSE算法語音增強對比語譜圖
為解決上述傳統(tǒng)方法使用損失函數(shù)不能很好地恢復語音的諧波結構,導致具有較差語音增強性能的問題。本文利用諧波噪聲模型(HNM)對語音進行建模,提出了頻域諧波損失函數(shù),將諧波結構的恢復納入到訓練階段的網(wǎng)絡學習過程中,以提高增強語音的質量和可懂度。
本文提出的基于時域波形映射-頻域諧波損失的語音增強算法的實驗框架如圖3所示,它包括兩個階段:訓練階段和增強階段。在訓練階段,將含噪語音進行分幀,然后將含噪語音幀作為全卷積神經(jīng)網(wǎng)絡(FCN)的輸入,使用HNM對純凈語音建模得到的純凈語音頻域諧波分量和語音殘余分量作為損失函數(shù)中的訓練目標來訓練FCN。然后通過最小化頻域諧波損失來得到訓練好的FCN。在增強階段,通過使用訓練好的FCN將輸入的時域含噪語音幀映射為時域增強語音幀。最后將所有的增強語音幀拼接合成,得到完整的增強語音語句。
圖3 基于時域波形映射-頻域諧波損失的語音增強算法
在本章中主要對語音的諧波噪聲模型建模、頻域諧波損失函數(shù)的構建和FCN訓練這3個部分進行介紹。
在語音分析和合成領域,諧波噪聲模型(HNM)模型[13]是一種常用的語音波形分析和合成模型,使用HNM對諧波結構進行建模可以顯著提高合成語音的可懂度和質量。因此在本文中,我們打算使用HNM模型對純凈語音進行建模,將HNM模型建模后得到的頻域諧波分量和語音殘余分量作為損失函數(shù)中的訓練目標。
HNM可以將語音建模為諧波部分和噪聲部分。為了區(qū)分HNM中的噪聲部分和傳統(tǒng)意義上的噪聲,將HNM中的噪聲部分稱為語音殘余。因此,語音信號s(n)可以寫成
s(n)=h(n)+r(n)
(4)
式中:h(n)和r(n)分別代表諧波分量和語音殘余。
諧波分量代表語音中大部分的濁音語音信息,并且可以建模為基頻f0及具有其諧波頻率的一系列正弦波的加權疊加,即
(5)
φh,i(n)由下式得到
(6)
語音殘余通過在時域語音中減去諧波分量來獲得。對于純凈的語音s(n),語音殘余通常為非周期性語音,代表語音中大部分的清音,例如唇齒摩擦聲、抽吸噪聲和聲門湍流,而對于含噪語音y(n),語音殘余包含非周期性語音和背景噪聲。
但是,因為在時域中語音的諧波分量和語音殘分量的波形與背景噪聲波形相比,并沒有明顯的可辨性,直接將時域諧波分量和語音殘余分量用作訓練目標,很難使網(wǎng)絡學習恢復語音的諧波結構。為此,我們需要將諧波噪聲模型建模得到的時域HNM分量通過短時傅里葉變換轉換到頻域。式(4)的相應STFT表示為
S(l,k)=H(l,k)+R(l,k)
(7)
式中:l和k分別為幀索引和頻率索引。大寫字母S(l,k)、H(l,k)和R(l,k)表示s(n)、h(n)和r(n)對應傅里葉變換后的時頻分量,可以由幅度和相位表示成如下具體形式
S(l,k)=As(l,k)ejΦs(l,k)
(8)
H(l,k)=Ah(l,k)ejΦh(l,k)
(9)
R(l,k)=Ar(l,k)ejΦr(l,k)
(10)
其中,Ah(l,k)為諧波幅度,Ar(l,k)為語音殘余幅度,Φh(l,k)和Φr(l,k)為對應的相角。
可以看出頻域上的諧波分量H(l,k)和語音殘余分量R(l,k)具有明顯的時頻特性,將其作為損失函數(shù)的訓練目標,訓練網(wǎng)絡來最小化頻域諧波損失,可以使網(wǎng)絡更好地學習語音的諧波結構,消除諧波之間的噪聲,以提高增強語音的質量和可懂度。
(11)
(12)
(13)
式中:S(l,k)是純凈語音通過短時傅里葉變換后得到的時頻分量。N是離散傅里葉變換(DFT)的長度,i∈{1,2,…,I}是諧波的索引。使用具有幅度壓縮的基音估計濾波器(PEFAC)[14]來計算基頻f0。然后,通過從S(l,k)中減去H(l,k)來獲得頻域語音殘余分量R(l,k)。
全卷積神經(jīng)網(wǎng)絡(FCN)的搭建參考了文獻[15],其由編碼器和解碼器組成,結構如圖4下部所示。編碼器包括9層卷積,其中第一層的步幅為1,而其余8層的步幅為2。解碼器由反卷積層組成,由于來自編碼器的跳躍連接將每個編碼層連接到其同源解碼層,因此解碼器中通道數(shù)等于編碼器中相應對稱層中的通道的兩倍。在網(wǎng)絡中除了輸出層,每個卷積層之后使用ReLU激活函數(shù),輸出層之后使用Tanh激活函數(shù),因此所有的輸出波形都被歸一化到[-1,1]的范圍。訓練語音被分幀為幀長2048的語音幀作為網(wǎng)絡的輸入,幀移為256。網(wǎng)絡的輸出同樣是幀長為2048的語音幀。具體網(wǎng)絡的尺寸為:2048×1(輸入),2048×64,1024×64,512×64,256×128,128×128,64×128,32×256,16×256,8×256,16×512,32×512,64×256,128×256,256×256,512×128,1024×128,2048×128,2048×1(輸出)。使用Adam優(yōu)化器訓練網(wǎng)絡,初始學習率設置為0.001,在每個時期之后,學習率將呈指數(shù)下降。
圖4 時域波形映射-頻域諧波損失的FCN訓練流程
在本章中將會介紹所使用的實驗配置以及評價方法。我們會將本文提出的算法和幾種當今流行的語音增強算法在同條件下進行比較,通過兩種客觀評價方法對增強語音進行評價,并對其結果進行分析。
實驗使用從TIMIT語料庫男性和女性說話者的6300句語音中隨機挑選(每位說話人的10句語音中隨機挑選一句)的630條語音作為訓練集和測試集的純凈語音,其中70%(441條)作為訓練集的純凈語音,另外30%(189條)作為測試集的純凈語音。從NOISEX-92數(shù)據(jù)庫中挑選出8種噪聲。其中4種類型(white、babble、factory1、f16)為可見噪聲,其它(pink、factory2、tank、volvo)為不可見噪聲。通過以下方式得到含噪語音:從可見噪聲中隨機切分出噪聲段與訓練集中的純凈語音疊加,得到信噪比分別為-10 dB、-5 dB、0 dB、5 dB的含噪語音,最終訓練集包含7056(411×4×4)條含噪語音,約6 h。為模擬更真實的情況,測試集中使用一些和訓練集不匹配的噪聲類型,將2種可見噪聲和4種不可見噪聲隨機切分出的噪聲段與測試集中的純凈語音疊加,得到信噪比分別為-10 dB、-5 dB、0 dB、5 dB的含噪語音,最終測試集包含4536(189×2×4+189×4×4)條含噪語音,約4 h。實驗中所有語音和噪聲的采樣率均為16 KHz。
語音增強性能的評價方法包括質量評價和可懂度評價。質量性能可以表示聽者聽語音時的舒適度,而可懂度性能則表示語音中聽者可以聽懂的程度。為了比較不同方法的語音增強性能,本文采用現(xiàn)階段廣泛使用的兩種客觀評價算法評價增強語音的質量和語音的可懂度,包括:采用語音質量感知評估(PESQ)來評價增強語音的質量;采用短時客觀可懂度(STOI)來評價增強語音的可懂度。其中PESQ即語音質量感知評估是ITU-T(國際電信聯(lián)盟電信標準化部)推薦的語音質量評價指標,其得分范圍為-0.5到4.5,得分越高表示增強語音的質量越好;STOI即短時客觀可懂度,經(jīng)證明與人類語音的可懂度主觀評分高度相關,其得分范圍為0到1,STOI得分越高,表示增強語音的可懂度越好。
為檢驗本文提出的基于時域波形映射-頻域諧波損失語音增強算法的語音增強性能,將本文提出的方法(FCN-HR、FCN-H)與采用對數(shù)功率譜(LPS)作為輸入輸出特征的基線DNN方法(DNN-baseline)以及兩種基于時域波形映射的語音增強方法進行語音增強實驗對比。兩種基于時域波形映射的方法分別為:基于時域波形映射-時域最小均方誤差損失的方法(FCN-MSE)和基于時域波形映射-頻域幅度損失的方法(FCN-SM)。其中FCN-MSE即為傳統(tǒng)的時域波形映射方法,直接使用原始波形和增強波形的均方誤差(MSE)來計算損失。FCN-SM是一種改進的方法,使用STFT頻譜幅度損失來訓練時域的增強網(wǎng)絡。為消除網(wǎng)絡結構對增強效果的影響,兩種基于波形映射的增強算法使用與本文提出算法相同的網(wǎng)絡結構,并使用Adam進行批量歸一化訓練。
通過使用本文提出的方法和上述對比方法對測試集中的含噪語音進行增強,并計算增強后語音的PESQ和STOI得分。表1和表2分別給出了在4種不同信噪比條件下的語音增強算法PESQ得分和STOI得分,并加入未處理的含噪語音的客觀評價得分作為對比。不同信噪比條件下的最佳結果均用粗體進行了標記。
表1 不同信噪比下的平均PESQ結果
表2 不同信噪比下的平均STOI結果
結合表1和表2可以看出,在大多數(shù)情況下,本文提出的FCN-HR和FCN-H方法,相比其余3種對比方法具有更好的客觀質量和可懂度得分,驗證提出的方法可以有效提高語音增強的性能。
具體的,在-10 dB條件下DNN-baseline獲得了最高的PESQ分數(shù),但其STOI得分很低,結合主觀聽覺測試,發(fā)現(xiàn)該方法在去除噪聲的同時消除了太多的語音成分導致增強語音難以理解,因此可懂度得分很低。同時,傳統(tǒng)的時域波形映射方法FCN-MSE模型相比DNN-baseline的基線方法,在多數(shù)信噪比條件下STOI值有一定提升,這表明在進行語音增強時,時域波形映射對STOI得分有利。FCN-SM方法在傳統(tǒng)時域波形映射方法的基礎上改進損失函數(shù),使用頻域的損失來訓練時域波形映射網(wǎng)絡,相比傳統(tǒng)時域波形映射方法進一步提升了PESQ和STOI得分,但其在-5 dB和-10 dB的低信噪比條件下,語音可懂度得分仍然較低,存在增強語音主觀聽感上很難聽懂的問題。
而本文提出的FCN-HR和FCN-H方法在-5 dB和-10 dB信噪比條件下,相比兩種基于時域波形映射的方法,均取得了更好的客觀評價得分,在5 dB和10 dB條件下也取得了接近或者更好的得分,驗證了本文使用的頻域諧波損失可以進一步提高時域波形映射語音增強算法的性能。值得注意的是,在低信噪比(-10 dB)噪聲條件下,所有對比方法在STOI得分上均出現(xiàn)了不同程度的失效,而FCN-H取得了最高的STOI得分和令人滿意的PESQ得分,可以看出在低信噪比條件下,語音被背景噪聲嚴重破壞時,提出的FCN-H方法將語音殘余的比例系數(shù)設置為0,使網(wǎng)絡集中注意力恢復語音的諧波分量,從而可以更好地去除諧波間的干擾噪聲,恢復對語音可懂度貢獻更大的濁音段語音。
為了更直觀比較提出的方法與其它方法的語音增強性能,使用上述的5種語音增強算法對測試集中一段含有factory2噪聲,信噪比為-5 dB的含噪語音進行語音增強。然后對增強語音的語譜圖進行比較。
圖5包含純凈語音語譜圖(a)、含噪語音語譜圖(b)、DNN-baseline方法增強語音語譜圖(c)、FCN-MSE方法增強語音語譜圖(d)、FCN-SM方法增強語音語譜圖(e)、FCN-HR方法增強語音語譜圖(f)、FCN-H方法增強語音語譜圖(g)。
圖5 語音信號的語譜圖比較
具體的,相比圖5(a)的純凈語音,圖5(c)DNN-baseline的基線方法雖然殘留噪聲較少,但是存在語音失真的問題,如圖5(c)中圓圈部分。這也是造成其客觀可懂度得分較差的原因。圖5(d)可以看出傳統(tǒng)的基于時域波形映射的方法,存在如圖5(d)中方塊部分存在殘留噪聲的問題和如圖5(d)中圓圈部分局部語音信息失真難以恢復,且不存在明顯諧波結構的問題。這也很好地解釋了傳統(tǒng)基于時域波形映射方法僅簡單使用時域最小均方誤差損失不能獲得令人滿意的質量和可懂度得分的原因。圖5(e)FCN-SM算法,使用頻域的損失訓練時域映射網(wǎng)絡的方法,相比FCN-MSE有了更好的去噪能力,殘留噪聲較少,但仍存在一定的語音失真尤其是諧波結構不能完全恢復的問題,如圖5(e)中圓圈部分,其中代表諧波的橫紋結構不明顯。將圖5(f)和圖5(g),與對比方法增強語音的語譜圖相比,可以看出,本文提出的兩種方法可以消除更多噪聲,并且可以很好地恢復語音信息,驗證了本文提出的頻域諧波損失可以很好地提升語音增強效果。特別是圖5(g)中圓圈部分可以看出,諧波可以清晰顯示,有明顯的橫紋結構,說明著重恢復語音諧波分量的FCN-H方法可以更好地消除諧波之間的噪聲,因此在低信噪比條件下可以進一步提高增強語音的可懂度。
本文提出了一種基于時域波形映射-頻域諧波損失的語音增強算法。與FCN-MSE和FCN-SM的現(xiàn)有基于時域波形映射的語音增強算法相比,本文提出的算法旨在恢復語音的諧波結構,實驗結果表明,我們提出的語音增強算法可以獲得更優(yōu)異的語音質量和可懂度得分。并且本文提出的著重恢復語音諧波分量的FCN-H方法可以進一步提高低信噪比條件下增強語音的可懂度。
下一步可以將本文使用的頻域諧波損失函數(shù)中諧波和語音殘余的比例系數(shù)進行調整,探究不同比例系數(shù)對語音增強性能的影響。此外,今后可以嘗試使用其它語音分析模型對語音進行分析建模并將其應用在損失函數(shù)中。