天天看點

語音分離--學習筆記(2)

  1. 根據說話人(麥克風)的數目,通常将語音分離任務分為單通道(Singlechannel)語音分離和麥克風陣列(Multi-channel)的語音分離。
  2. 對于時頻域的語音分離需要将時域的語音信号進行短時傅裡葉變換(STFT),将時域信号轉換為時頻域信号。需要進行 STFT的原因:
    1. 對于時頻域的信号特征更容易提取,更容易去做一些語音特征提取的操作,例如 MFCC等。
    2. 對于經過 STFT 的時頻域信号很容易的通過逆傅裡葉變換(iSTFT)恢複為時域信号。
    3. 頻域本質是把信号分解到每個子帶空間上,每個空間裡面性質穩定,你可以了解為頻率恒定。
    4. 是以,一開始大家在做語音分離任務是都是在時頻域上進行的。而對于時域的語音分離隻需要做的就是搭建一個 encoder-decoder 的端到端的模型即可。
  3. 說話者無關即模型可以應用都所有說話人的語音分離
  4. 對于語音分離任務,資料集一般使用的是華爾街日報資料集(Wall Street  Journal dataset, WSJ0)。
    1. 目前對于資料集的混合以及劃分資料集的方法均采用 Deep Clustering 的 matlab 腳本混合(https://www.merl.com/demos/deepclustering/create-speaker-mixtures.zip)。
    2. 該資料集分為三個檔案夾,si_tr_s,si_dt_05 和 si_et_05。
    3. 訓練資料集使用 si_tr_s 中擷取
    4. 驗證集和測試集均在 si_dt_05 和 si_et_05 中擷取。
    5. 在 Deep Clustering 方法之後所有的語音分離任務都是在開放演講者集合(open speaker set)中訓練,是以不會訓練驗證集和測試集的資料。
  5. 純語音分離任務的相關工作 :
    1. 深度聚類(更多可以看筆記(1))
    2. 幀級别和句子級别的标簽不變訓練(PIT&uPIT) 
    3. 估計單一聲音的頻譜圖,是通過 mask 點乘混合頻譜

      圖:使用深度學習模型估計一組掩碼(mask),使用 softmax 操作可以輕松滿足此限制。

    4. 深度吸引子網絡則是通過學習聚類中心來對不同的 speaker 生成不同的 mask。這樣就可以得到一種可學習的聚類中心
    5. TasNet:
      1. 在時域上對音頻進行分離,克服了短時傅裡葉變換将時域信号轉換為頻域信号的精度問題。
      2. 使用編碼器-解碼器架構:
        1. 在時域中直接對信号模組化,并對非負編碼器輸出執行語音分離。這種方法省去了頻率分解步驟,并将分離問題減少到估計編碼器輸出上的語音掩模,然後由解碼器對其進行合成。TasNet 優于目前最新的因果和非因果語音(因果分離就是不考慮信号的将來特征,例如 RNN,LSTM,GRU。而非因果分離則是考慮信号的将來特征,例如,BILSTM,BIGRU,TCN)分離算法,降低了語音分離的計算成本,并顯着降低了輸出所需的最小延遲。
        2. 省去了 time-domain 轉frequency-domain 步驟,并将分離問題減少到 decoder 合成音頻。該方法其實就是用卷積來替換 stft 方法,因為 stft 其實也是卷積操作。因果操作的性能不如非因果操作的的性能,這個是因為非因果操作可以考慮到将來的特征資訊。    
      3. 訓練階段的目标函數是使尺度不變的信噪比(SI-SNR)最大化,該信噪比通常被用作替代标準信噪比的信源分離評估名額。從這篇文章開始所有的時域方法的損失函數均為該評價名額。
    6. Conv-TasNet:與 TasNet 的差別就是将分離網絡有循環神經網絡(RNN,LSTM,GRU)變為時間卷積網絡 TCN。這樣可用通過 GPU 的并行加速大大縮減訓練和測試時間。此外通過實驗證明, Conv-TasNet 在因果實作和非因果實作中均大大提高了以前的 LSTM-TasNet 的分離精度。
    7. Dual-Path-RNN:
      1. 該方法在深層模型中優化 RNN 使其可以對極長的語音序列模組化。DPRNN 将較長的音頻輸入分成較小的塊,并疊代應用塊内和塊間操作,其中輸入長度(chunk size)可以與每個操作中原始音頻長度的平方根成比例。
      2. 該方法的雙路徑的 pipeline 是首先将語音切分,然後組合成 3D 的特征快,學習塊内特征和塊間特征來分離語音。塊内 RNN 首先獨立處理本地塊(将長語音序列分為 chunk number),然後塊間 RNN 聚合來自所有塊的資訊做 utterancelevel 的處理。
  6. 視聽模型的語音分離任務:
    1. 由于其視覺資訊的輸入,将不會出現純語音分離任務的的難題(标簽置換問題:即分離之後給結果配置設定說話人身份标簽混亂和困難的問題)。這是由于輸入的視覺資訊是存在标簽的,與輸出的标簽數目是相同的。此外,視覺的特征資訊用于将音頻“聚焦”到場景中所需的說話者上,并改善語音分離品質。
    2. 輸入:視訊部分給定一個包含多個演講者的視訊片段,我們使用現成的面部檢測器 mtcnn 在每個幀中查找面部 75 張。再使用 FaceNet 将人臉圖像提取為一個 Face embedding。
    3. 使用 CNN 的方法得到的結果往往要比使用 RNN,LSTM,GRU 的方法要更精确,原因:
      1. CNN 方法首先可以大大的縮小訓練和測試時間,可以更好的利用 GPU。
      2. 由于 TCN 方法和 ResNet 方法的發展,CNN 網絡也可以朝向更深層次發展
      3. 通過 Dilated Conv 操作可以使 CNN 也能獲得序列的上下文語義,使 CNN 模型更能适合 RNN 網絡的操作。
      4. 是以 ConvTasNet 可以得到更好的結果。是以在設計 AV-model 的時候,語音部分參考了 Conv-Tasnet 的 Encoder 和 Separation 結構,而在視覺部分參考了端到端的 AudioVisual 語音識别的視覺資訊部分。
  7. 語音分離流程圖:
語音分離--學習筆記(2)

更多模型細節可參考:語音分離的總結 (cslikai.cn)  

繼續閱讀