DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement(2020)
特點與優勢:
基本架構與 Facebook denoiser 相同,只有以下兩個差異:
複數計算的優勢在 Phase-aware Speech Enhancement with Deep Complex U-Net 段落有紀錄,而此架構的優勢紀錄於 Facebook denoiser 段落。
Interspeech 2020 Deep Noise Suppression Challenge 第一名。
缺點:
主要問題與 Phase-aware Speech Enhancement with Deep Complex U-Net 段落相同,為滿足複數計算條件,原本的一個運算皆會演變為 4 個運算。尤其是此模型中間與Facebook denoiser 一樣用到了 LSTM,預測的時間拉長應該會很明顯。但是,在Interspeech 2020 Deep Noise Suppression Challenge 中有明確的規範,T 毫秒的語音使用 2.4 Ghz 的 Core i5 四核 CPU 處理時間不能超過 T/2 ms。
Phase-aware Speech Enhancement with Deep Complex U-Net(2019)
https://blog.csdn.net/ssqqssqq/article/details/80398802
論文1:https://arxiv.org/abs/1705.09792
論文2:https://openreview.net/pdf?id=SkeRTsAcYm
Github1:https://github.com/AppleHolic/source_separation
Github2:https://github.com/sweetcocoa/DeepComplexUNetPyTorch
特點與優勢:
基於 U-Net 並使用複數形式的特徵與計算方法,主要參考來自 Deep Complex Networks。
複數的格式並非要取其複數的實際意義,而是將複數的實部與虛部可分別看作兩個獨立的特徵表示。在計算過程中採用複數的計算方式,使得兩個特徵表示又能有效地做交互計算且計算能更多樣化。舉例來說,假設擁有 feature map F 與 kernelk,原始的 CNN 計算可寫作 F * k。在複數計算中即可分成 imaginary feature Fi、real feature map Fr、imaginary kernal ki 與 real kernel kr,複數 CNN 計算結果則可寫作imaginary:(Fr * ki) + (Fi * kr) 與 real:(Fr * kr) - (Fi * ki)。
此篇論文將 Deep Complex Network 的計算方式應用至去噪模型中常見的 U-Net 架構上,並生成 Mask 乘上原始聲音得到乾淨聲音。Mask 的計算方法可參照架構中的圖,但比起生成 Mask,目前還是先以能直接生成乾淨聲音的結構為主,因此此方案暫且擱置,若效果尚無法突破再做考慮。
提供新式 weighted-SDR loss。
在 DEMAND 資料集排行榜上 PESQ 評分排行第一(large)與第三(base)。(Facebook denoiser 排行第四)
使用 STFT 特徵作為輸入。
特點與優勢:
此模型基於多層 GRU 與 Residual 設計,但實際上比起 Residual 改模型以GRU 版本的 U-Net 來形容更為直觀。
論文內在還原長度的過程中,沒有採用 U-Net 常見的 upsampling,而是使用單純的reshape 來增加長度,以避免資訊遺失。
在每一層的 GRU 計算,hidden state 都會向後傳遞,在傳遞一定長度後前段的資訊會逐步消失。因此,模型添加上 Residual(U-Net)設計,以避免後面計算時前段資訊的遺失。
在七層的 GRU 中,最後一層為單向 GRU,而其他皆為雙向,輸出為雙向結果的拼接。
在 DEMAND 資料集排行榜上 PESQ 評分排行第二。(Facebook denoiser 排行第四)
缺點:
在之前的實驗中,單層的 LSTM 計算速度已經很慢,更何況此模型用了七層。即使GRU 的速度能比 LSTM 稍微增快,但仍是十分耗時。
程式碼與模型皆無釋出,雖說此模型架構簡單可自行重新建構,但未必能還原論文與github 範例的效果。
Speech-enhancement with Deep learning
特點與優勢:Training data: clean:LibriSpeech + SiSec, noise: ESC-50 + [https://www.ee.columbia.edu/~dpwe/sounds/]
主要方法為將音檔轉成頻譜圖影像後,使用基於 U-Net 的模型做訓練。
頻譜圖可分為 magnitude spectrograms 與 phase spectrograms 兩種,考量到前者包含的資訊量較完整,因此此模型使用 magnitude spectrograms。
模型輸出為噪聲預測,因此,需再將原始聲音減去預測結果才能得出去噪聲音。
U-Net 在影像領域上的表現優異,將聲音轉為頻譜圖影像作為模型輸入的概念也很直觀合理。
根據展示的範例,效果明顯優於 RNNoise。
預測速度上因少了中間的 LSTM 計算,相較於 Facebook denoiser 在單一次預測的速度上能一定程度的加快。(若為 1 秒內的音檔,預測時間需 0.08 秒)
架構:U-Net
缺點:
模型輸入每次為固定長度,因此長語音需經過切分後多次的預測。當語音長度達 5 秒,預測時間需花 4 秒完成,相對 Facebook denoiser 的速度優勢會消失。
輸入頻譜圖雖直觀,但此模型的輸出為噪聲,相對 Facebook denoiser 則需要更多額外的計算步驟,且輸出噪聲這件事,如同在 Facebook denoiser 段落的 “曾經的改良想法但後來判斷不可行” 第一點所寫,並沒有什麼意義。
模型輸入一次只能最多約 1 秒的窗口大小,對於去噪任務來說,整體的考量相對重要, 因此在某些情況下可能出現不確定性,如:長聲音切段後一段聲音內只含噪音,而噪音 類型又偏向人聲。
A Wavenet For Speech Denoising
https://zh.wikipedia.org/wiki/WaveNet
論文:https://arxiv.org/pdf/1706.07162.pdf
Github:https://github.com/drethage/speech-denoising-wavenet
特點與優勢:
基於 WaveNet 並修改成適應於語音去噪任務。
Conv-TasNet 中間 Separator 的設計與 WavNet 相同,可得證 WavNet 架構設計在於語音分離或語音去噪等任務應也有不錯的表現。
相對於原始 WaveNet 修改如下:
將原本網路架構改為 Non-causality,即原本網路對於每個 Sample 的計算只會考慮時間序列中在該樣本之前的樣本,而此論文另外加上了在時間序列中排在該樣本之後的樣本。因此,在去噪任務這種整體分析格外重要的任務能有更好的表現。改法為將原本kernel size = 2 (t-1, t)的卷積改為 kernel size = 3(t-1, t, t+1)。
最後幾層的原 1*1 卷積改為 3*1 以增強輸出的連續性。
模型的輸出值由 softmax 預測值改為預測實際值。
仍有其他能使模型加速或效果提升等其他修改項,但基於數學計算過於強烈可參照原始論文。
https://jmvalin.ca/demo/rnnoise/
https://zh.wikipedia.org/wiki/%E5%B7%B4%E5%85%8B%E5%88%BB%E5%BA%A6
論文:https://jmvalin.ca/papers/rnnoise_mmsp2018.pdf
Github:https://github.com/xiph/rnnoise/
特點與優勢:
非語音-to-語音的 end-to-end 模型。理由:避免參數過多,只在某些較關鍵的計算改用模型。
模型計算的主要輸入為基於巴克刻度(Bark scale)的 22 個頻段,模型會訓練這 22 個頻段的通過權重(介於 0 ~ 1 之間),並可避免計算後添加原本不存在噪音的情況發生。
包含上一點的 22 個主要特徵及其他輔助特徵,模型輸入共包含共 42 種語音特徵作計算。
模型架構基於 GRU,為 RNN 家族內計算速度較快的,且作者驗證即使改用 LSTM 也沒有較好的結果。(推測為輸入特徵過於簡單無需複雜計算)• 輸入簡單使訓練也同樣簡單化,雖文內沒提到但訓練所需資料與收斂所需時間相較 end-to-end 模型應該都較少。
缺點:
整體去噪流程設計仍為基於傳統方法,通常若非 end-to-end 方法在現有條件下明顯不佳(例如:ASR、對話生成等),則建議使用 end-to-end 方法,因爲通常人為設定的部分愈多效果上的局限性也愈大。
模型輸入的前處理過多並非目前模型設計上的主流做法,且此項前處理並沒有特殊的部分,單純為輸入簡化,相較於 Facebook denoiser 整體設計較為陳舊。
簡述:先檢測出聲音中哪些部分只含噪音哪部分包含語音並得出噪音訊號,並在計算後消除噪聲。
範例:
VAD(Voice Activity Detection)—> 用以偵測哪部分為純噪音不含語音。
OMLSA(Optimally Modified Log-Spectral Amplitude Estimator)
IMCRA(Improved Minima Controlled Recursive Averaging)
缺點:
SEANet: A Multi-modal Speech Enhancement Network(Google, 2020)
特點與優勢:
結合 GAN 與 U-Net 的模型設計,且為全卷積設計,計算效率較佳。
google-research 出品,效果保障。
因多加了一個類似 reference 功能的輸入,即使噪聲較清楚明顯仍能成功去除。(github提供的範例可證)
U-Net(Generator)部分層數設的較深,encoder 與 decoder 各自為 30 層的 CNN,因此又額外再加上 Residual 設計以避免資訊流失。(此方案曾經想過,但目前層數較少意義不大)
缺點:
除了普通的帶噪聲語音輸入外,需要額外的 “骨導加速度計” 訊號以作為 reference,基本上已可判定此模型完全不符合使用場景。
雖為全卷積設計,但模型層數較多,且沒有提到使用了像 depthwise separable convolution 等節省記憶體的方法。因此,整個模型雖沒有用到 RNN 而效率佳,但在容量與執行速度上可能也沒辦法到很快。
GAN 架構的模型難以訓練,在資料的量與分佈的要求都相對較高,且容易訓練失敗。