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


當前基於深度學習的語音降噪方法主要分為兩個類:
  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- INF)取值范圍較大,相對於irm更難訓練一點
  3. psm Phase-Sensitive Mask 考慮phase相位譜:(abs(stft(clean))/abs(stft(noise)+stft(clean)))*cos(theta) theta 是相角。考慮了相位譜,語音通過mask 重建出來更完整,失真更少,取值范圍更大(-INF ~ INF)。
       試驗中發現一般情況下irm 更好訓練,容易收斂,Psm 訓練結果的指標更好一些。說到指標論文里一般使用:
  1. PESQ (衡量失真)-0.5 ~ 4.5 模擬mos值
  2. STOI(衡量可理解讀)0 ~ 1 
  3. SNR 
  4. 也有的用ASR識別結果對比,pesq/STOI github 上現成的代碼,可以直接用。 主要是計算干凈音頻和噪聲音頻在頻域上的差別。
基於時域的方法,我試了類似wavenet/tcnn 的方法,直接輸入wav的采樣點,有個前面加了二維卷積類似 stft頻域變換, 輸出采樣點的值。更簡單明了一些。但是模型大小更大,而且訓練過程中的參數設置影響較大。 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM