訓練語音降噪模型的一些感想

 

當前基於深度學習的語音降噪方法主要分爲兩個類:

  1. 基於TF時頻域的方法 (有兩大類:基於mask和非基於mask的方法)
  2. 基於時域的方法,就我自己的實驗結果來說,基於時域的方法比基於TFmask的方法要差一些,可能這樣方法的trick更多一些吧。

   基於時頻域方法中的基於mask的方法更常見一些,主要的是對語音提取頻域特徵,通過計算乾淨音頻和對應的加噪音頻的頻域特徵計算一個頻域的mask。然後用加噪音數據訓練以mask作爲label訓練。

   基於時頻域方法中的非基於mask的方法,主要是對語音提取頻域特徵,通過噪聲數據的頻譜特徵作爲輸入特徵,以乾淨音頻的頻譜特徵作爲label進行訓練。

   (注:此處實驗中使用的頻域特徵是stft短時傅里葉變換)

   這兩種方式中基於mask的方法試驗結果相對較好,因此我們再詳細看一下基於mask的方法。那mask的方式其實有很多中:

  1. Irm ideal ratio mask. 只考慮幅頻,不考慮相頻: square(abs(stft(clean)))/square(abs(stft(noise))+abs(stft(clean))) 在論文中也有別的表示方式,特點是取值範圍是0-1
  2. smm Spectral Magnitude Mask : abs(stft(clean))/abs(stft(noise)+stft(clean)) 更結合音頻頻域特徵相加的性質,取值範圍(0- )取值範圍較大,相對於irm更難訓練一點
  3. psm Phase-Sensitive Mask 考慮phase相位譜:(abs(stft(clean))/abs(stft(noise)+stft(clean)))*cos(theta) theta 是相角。考慮了相位譜,語音通過mask 重建出來更完整,失真更少。

      試驗中發現一般情況下irm 更好訓練,容易收斂,Psm 訓練結果的指標更好一些。說到指標論文裏一般使用:

  1. PESQ (衡量失真)-0.5 ~ 4.5 模擬mos值
  2. STOI(衡量可理解讀)0 ~ 1 
  3. SNR 
  4. 也有的用ASR識別結果對比,pesq/STOI github 上現成的代碼,可以直接用。 主要是計算乾淨音頻和噪聲音頻在頻域上的差別。

基於時域的方法,我試了類似wavenet/tcnn 的方法,直接輸入wav的採樣點,有個前面加了二維卷積類似 stft頻域變換, 輸出採樣點的值。更簡單明瞭一些。但是模型大小更大,耳機訓練過程中的參數設置影響較大。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章