論文地址:基於深度波形U-Net進行單耳語音增強
論文代碼:https://github.com/Hguimaraes/SEWUNet
引用格式:Guimarães H R, Nagano H, Silva D W. Monaural speech enhancement through deep wave-U-net[J]. Expert Systems with Applications, 2020, 158: 113582.
摘要
在本文中,我們提出了一種端到端的語音增強方法--通過Wave-U-Net(SEWUNet)來降低語音信號中的噪聲。該背景環境對幾個下游系統是有害的,包括自動語音識別(ASR)和單詞定位,這反過來會對終端用戶應用產生負面影響。與文獻中已有的機制相比,我們的方案確實提高了信噪比(SNR)和誤字率(WER)。在實驗中,網絡輸入是一個被加性噪聲破壞的16 kHz采樣率音頻波形。我們的方法是基於Wave-U-Net結構,並針對我們的問題做了一些修改。提出了四種簡單的增強措施,並用消融研究對其進行了測試,以證明它們的有效性。特別是,在進行主要去噪任務的訓練之前,我們通過一個自動編碼器突出了權值的初始化,從而更有效地利用了訓練時間,獲得了更高的性能。通過度量,我們證明了我們的方法優於經典的維納濾波方法,並且表現出比其他最先進的方案更好的性能。
關鍵字:語音增強、噪聲減少、Wave-U-Net、深度學習、信噪比、誤字率
1 引言
我們見證了能夠執行自動語音識別(ASR)和單詞識別的系統的研究和使用的巨大增長。在廣泛的領域都有應用:家庭和車載助理(Kepuska&;Bohouta,2018;Lockwood&;Boudy,1991);電信和聯系中心(Rabiner,1997;Eilbacher,Bodner,Lubowsky,Boudreau,&;Jakobsche,2004);國土安全(Neustein&;Patil,2012);營銷決策(Wedel&;Kannan,2016);為殘疾人設計的軟件(Wald, 2005);醫療文件(Edwardset al., 2017);游戲(Luisi, 2007)等等。
在這個端到端的過程中,一個關鍵的部分是語音到文本的轉換,這可能會受到音頻噪聲的負面影響,並產生具有高錯字率(WER)的文本。例如,錯誤的詞或成分可能會影響分類的極性,在極限情況下,這些下行應用程序可能會變得不可用。
從語音信號中提取背景內容是語音去噪的主要任務,除了ASR問題外,對人類理解也是有用的,因此本工作的目的是擴展所有那些原本將被限制在較安靜環境中的應用的操作范圍,從語音信號中提取背景內容是語音去噪的主要任務。在音頻域,我們注意到,由於音頻本身的復雜性(例如,每秒高采樣數、頻率等),單聲道記錄上的這種干凈的語音提取是一個高度不確定的問題。
這類問題與眾所周知的雞尾酒會效應有關,在雞尾酒會效應中,大腦試圖集中在特定的刺激中,同時過濾背景背景和其他噪聲,類似於在聚會中發生轉換。設$y$是帶噪信號,$x$是干凈的語音信號,而$\delta $是用來產生有噪信號的噪聲。在這項工作中,我們將假設數據是干擾原始信號本身的加性噪聲,如公式1中所定義:
$$公式1:y[n]=x[n]+\delta [n]$$
我們的目標是使用公式2,使用非線性變換創建映射,以盡可能映射純凈語音
$\hat{y}[n] \approx x[n]$
最近解決這個問題的方法依賴於譜信息和其他預處理技術。該方法的一個重要問題是在進行短時傅立葉逆變換時,增強后的信號會出現偽影。這個問題可以通過在原始波形上使用直接管道來緩解。另一方面,由於我們在1秒內有超過16000個樣本,並且很難有效地處理非常長范圍的時間依賴,因此計算成本和復雜度將會增加。
近年來,人們發現深度神經網絡在語音處理任務中非常成功。LeCun和Bengio(1995)提出了一類特殊的神經網絡,稱為卷積神經網絡(CNN),專注於處理具有網格狀拓撲的數據,如音頻,可以被認為是一維網格(Goodfloor,Bengio,&;Courville,2016)。
本文提出了一種端到端的深度學習方法--SEWUNet(Speech Enhancementthrough Wave-U-Net),利用全卷積神經網絡來解決語音音頻去噪的問題,並在此基礎上提出了一種基於全卷積神經網絡的端到端深度學習算法SEWUNet(Speech Enhancementthrough Wave-U-Net)。也就是說,我們試圖增強語音信號,使其更適合ASR及后續系統。在實踐中,我們開發了一個基於一維時域U-Net模型的體系結構,正如Wave-U-Net論文(Stoller,Ewert,&;Dixon,2018)所提出的那樣,但有了增強。因此,本文的貢獻在於對Wave-U-Net結構提出了四個簡單的改進,這些改進有助於提高模型的性能和效率(即減少處理時間)。
我們希望采用我們的機制可以為所有的ASR和單詞識別應用帶來更好的性能和效率,其中一個重要的最終目標是改進它們,以便更好地進行決策。
本文的剩余的結構如下:第2節描述了對我們工作有啟發的技術和問題;第3節介紹了我們的模型;第4節介紹了實驗框架;第5節總結了結果;第6節總結了結論和未來的工作方向
2 相關工作
3 語音增強通過Wave-U-Net(SEWUNet)
在這里,我們在3.1、3.2和3.3小節中描述建模中采用的概念。第3.4節強調了我們與Stoller等人有關的工作的創造性方面。(2018年)
3.1 自動編碼
訓練成在輸出層復制自己的輸入的神經網絡稱為自動編碼器。該網絡可以看作是一個由編碼器組成的兩部分網絡,該編碼器負責映射h?f x?,其中x是我們干凈的語音輸入。另一部分是負責重建操作的解碼器。自動編碼器目標是按照如下方式訓練網絡。我們可以將概念從確定性函數推廣到隨機的角度,其中自動編碼器試圖映射p編碼器和p解碼器(GoodFellowet al.,2016),其中自動編碼器試圖映射p編碼器和p解碼器(GoodFellowet al.,2016)
即使將輸入復制到網絡的輸出似乎沒有意義,但我們真正感興趣的是網絡需要學習的有用特性,以便在一個小維度空間上表示輸入。
在本文中,我們建議使用來自數據集保留部分的干凈信號,將我們的模型訓練為自動編碼器,以在語音去噪訓練之前執行權重初始化。
3.2 語義分割和U-Net
卷積網絡的典型用途在於分類問題,其中輸出是用於識別圖像的類標簽。 語義分割是一個流行的研究領域,尤其是在生物醫學圖像處理中,其思想是在像素級別理解圖像,即可以為每個像素分配一個類別標簽(Li et al., 2018)。 Ronneberger、Fischer 和 Brox (2015) 提出的 U-Net 模型解決了電子顯微鏡 (EM) 堆棧中神經元結構的分割問題,並贏得了國際生物醫學成像研討會 (ISBI) 挑戰。
在圖 1 中,我們可以看到 U-Net 的架構。 它是一個全卷積神經網絡,具有收縮路徑(左側)、瓶頸層和擴展路徑(右側)。 左側路徑遵循 CNN 的典型架構,其中它們重復應用兩個沒有填充的卷積,然后是非線性激活函數 (ReLU) 和用於下采樣的最大池化操作。 雖然該模型對空間進行了 2 倍的下采樣,但它使網絡中的特征通道數量增加了一倍(Ronneberger 等人,2015 年)。 在接下來的模型描述中,我們采用以下術語: (a) 神經網絡某些基本部分的層(例如卷積層、最大池化層等); (b) 用於堆疊層的塊(例如卷積層和 ReLU 激活)。
正確的路徑由特征圖的上采樣操作(通常是轉置卷積或雙線性插值)組成,依次將特征通道的數量減半。 在那個操作之后,但仍然在同一個塊中,他們從收縮路徑連接來自同一級別的相應特征圖,這個操作稱為跳過連接。 在每個塊中,有兩個卷積層,后面又是一個 ReLU。 在最后一層,應用 1x1 卷積濾波器將每個組件從特征向量空間映射到所需數量的類。 在灰度圖像中,類的數量為 1,對應於應用於輸入以分割圖像的掩碼。
跳過連接的直覺是同時將一個塊的輸出提供給下一個塊的輸入和其他一些不相鄰的塊。 這個想法是我們使用在收縮路徑上提取的信息以用於重建階段。 如果沒有這種連接,可能會丟失一些信息。
圖1所示。U-Net架構定義在(Ronneberger et al., 2015)
3.3 Wave-U-Net
Wave-U-Net 通過使用原始波形和一維卷積將 U-Net 架構中的元素與 3.2 中討論的一些架構方案相結合。 該網絡由收縮路徑(左側)和擴展路徑(右側)組成,類似於 U-Net,但使用一維卷積作為基本塊。 網絡如圖 2 所示。
Wave-U-Net 被提議用於接收混合信號$M\in [-1,1]^{l_m*c}$並將該信號在$K$個源波形中分離為$S^1,...,S^K$,其中$S^i\in[-1,1]^{L_s*C}$,$i\in\{1,...,K\}$。在該工作中,$L_m$和$L_s$表示音頻信號上的樣本數,C 表示通道數。在我們用單聲道信號進行語音降噪的問題中,我們有$L_m=L_s$和$ C = K =1$。 可以檢索背景信號,但我們只對語音感興趣。
圖中的每個塊都有卷積層,后跟下采樣或上采樣操作。 下采樣模塊是一個抽取操作,我們將特征圖的維度減半。 在上采樣塊中,我們測試了一些組合,例如線性插值和轉置卷積。 除了擴展路徑中的最后一層之外,所有層都有一個 LeakyReLU (Xu, Wang, Chen, & Li, 2015) 激活,$\alpha=0.1$。 最后一層(擴展路徑上的block 1)具有雙曲正切 (Tanh) 激活。
圖2所示。用於語音增強的單耳波u網
3.4 我們的改進
基於Wave-U-Net模型,我們測試了多種架構和超參數。SEWUNet和最初的Wave-U-Net之間有四個主要區別:
1. 上采樣方法:Stoller 等(2018) 提出了一個可學習插值層,可以在其中學習中間值。在我們的工作中,一個簡單的線性插值在語音去噪任務上表現出良好的性能,並被選為主要的上采樣操作。還測試了 Dumoulin 和 Visin (2016) 中描述的轉置卷積。
2. 損失函數:有幾篇論文針對這個問題提出了不同的損失函數,其中大部分基於回歸損失。我們在 MSE 上測試了平均絕對誤差 (MAE) 的性能,以構建我們的網絡並在結果部分證明該選擇的合理性。
3. 權重初始化:在為語音去噪的主要任務訓練網絡之前,我們最初將所提出的方法訓練為自動編碼器。這個想法是只使用干凈語音數據集的保留部分來提取對語音分割有用的特征,並更有效地利用我們的訓練時間,在更少的時期內實現收斂。
4. Reflection-padding:為了避免由零填充引入的邊界區域上的偽影,我們使用了反射填充層。我們不是用零來跟蹤邊界,而是在邊界區域反射樣本以填充所需的空間。有關此操作的說明,請參見 pytorch.org (2019)。
4 實驗
在本節中,我們將詳細介紹用於開發和測試所提議的方法的設置。
4.1 數據集
我們基於LibriSpeech(Panayotov,Chen,Povey,&;Khudanpur,2015)和UrbanSound8K(Salamon,Jacoby,&Amp;Bello,2014)的混合構建了數據集。
通過改變噪聲信號的幅度和能量,通過具有受控干擾水平的加法過程插入噪聲。 訓練集上干凈的聲音和混合聲音之間的信噪比 (SNR) 落在 5 dB 和 15 dB ( 5; 15) 的范圍內,均勻分布。 對於 ASR 測試,使用了另外兩個 SNR 范圍:0; 10 和 10; 20 僅在測試中。 在圖 3 中,我們可以看到 SNR 為 5 dB 的附加噪聲的影響。 作者公開了一些音頻樣本。 2
我們使用揚聲器保持技術進行數據分區。 librispeech 數據集,更具體地說是 train-clean-100 子集,在說話者級別被分成兩個相等的部分。 第一組用於訓練自動編碼器,在另一組中,我們插入噪聲來訓練網絡以完成主要任務。 此添加噪聲的數據集隨后被分區以分別以 80%、10% 和 10% 的比例創建訓練、驗證和測試集。 對於這兩個組,所有話語都是近 4:1 s 長度的非重疊段(每個音頻 216 個數據樣本)。
在UrbanSound8K中,我們有以下10個類別:空調、汽車喇叭、兒童玩耍、狗吠、鑽孔、發動機怠速、槍聲、手提鑽、警報器和街頭音樂。 我們還利用了噪聲抑制技術,因此給定的噪聲文件不能出現在多個部分(訓練/驗證/測試)中。 我們還遵循類別分層拆分策略,即我們嘗試在不同部分之間保持類別的平均分布。
我們還使用了 LibriSpeech 的 test-clean 子集來測試系統在 ASR 模型上的有效性。 這個子集沒有分成小窗口,我們使用全長的數據。 在這個子集上插入的噪聲與我們在 Wave-U-Net 測試噪聲的測試集上使用的噪聲相同,但在多個 SNR 間隔中。 這項工作的數據庫創建過程如圖 4 所示。
語音數據集總共包含 72 個; 698 個干凈的音頻話語,對應於 82:8 小時的音頻。 對於自動編碼器部分,我們使用 32:9 小時進行訓練,使用 8:4 小時進行測試。 對於主要任務,這個數據集被分割成 32:8; 訓練、驗證和測試分別為 4:3 和 4:4 小時。 有126名男性演講者和125名女性演講者。 UrbanSound8K數據集由8個組成; 732 個音頻文件,其中有替換的樣本。 如果噪聲小於 4:1s,我們將重復連接音頻。
4.2 硬件平台
這樣的大型數據集和深度模型需要一些特定的計算努力來加載、處理和訓練任務。我們使用了一台32 GB內存的桌面計算機,一個英特爾i5第9代6核處理器,以及一個NVidia RTX 2060超級GPU卡。
4.3 實現
我們使用 Pytorch 框架實現了網絡,該框架在 Eager 模式下提供了易用性和靈活性,並且通過利用對異步執行的本機支持(Paszke 等人,2017 年),其性能針對研究和生產環境進行了優化。 所有帶網絡的源代碼都是從頭開始實現的,並且可以在 Github 中找到。
4.4 損失函數和度量
在原始波形上用於語音增強問題的度量有多種可能性。最簡單的回歸函數是MAE或MSE,但一些論文提出了自定義損失函數來解決這個問題,如Germain et al.(2018)和Rethage et al.(2018)。
在本文中,我們使用一種稱為信噪比(SNR)的計算度量來理解在能量方面,分離的信號離目標有多遠。度規的計算如式4所示。
$$公式4:\operatorname{SNR}(\widehat{Y}, X)=10 \log _{10}\left(\frac{\langle\widehat{Y}, \widehat{Y}\rangle}{\langle\widehat{Y}-X, \widehat{Y}-X>}\right)$$
其中$<,>$為內積,$X$為噪聲信號,$\hat{Y}$為處理后的信號(去除噪聲)。
為了計算對ASR系統的影響,我們使用單詞錯誤率(WER)度量。WER基於Levenshtein距離,但基於單詞級別而不是字符。
4.5 訓練流程
訓練神經網絡時,我們使用Adam優化器,學習率為$10^{-1}$,$\beta_1=0.9$和$\beta_2=0.999$以及batch_size=16。學習速率可以在訓練中調整,如果在5個時間段內沒有改進,乘以0.1。在消融研究中,我們訓練我們的模型超過25個epoch。權重初始化的自動編碼器訓練也進行了25 epoch訓練。
4.6 模型
我們比較了一組五個模型,用$M=\{M0,M1,M2,M3,M4\}$表示。M0和M1遵循Wave-U-Net論文中提出的模型的實現,但對上采樣塊進行了簡單的線性插值。它們之間的主要區別是M0使用MSE,而M1使用MAE。M2類似於M1,但我們使用的是零填充而不是反射填充。在模型M3中,我們將M1與轉置卷積的用法進行了比較。最后,在模型M4中,我們利用了所有提議的增強功能。每個模型的設置如表1所示。
在所有模型中,我們使用相同的結構。在兩條路徑(e5)上網絡的深度為5個塊。在收縮路徑上的卷積有一個大小為15的內核,在擴展路徑上的內核大小為5。另外,為了使feature map在卷積塊之后保持相同的大小,我們在卷積輸入之前使用填充層,其窗口大小為$k//2$,其中$k$是內核大小。每層過濾器的數量與Wave-U-Net論文中設計的一樣,但每層有8個額外的過濾器,如下公式$F=24*i+8$,其中$i\in\{1,...,L\}$。