SincNet 原始波形的說話人識別

SincNet 原始波形的說話人識別

論文:M. Ravanelli, Y. Bengio, in 2018 IEEE Spoken Language Technology Workshop, SLT 2018 - Proceedings (Institute of Electrical and Electronics Engineers Inc., 2019), pp. 1021–1028.

主要貢獻:

  1. 濾波器學習
  2. 數字信號波形來約束第一個卷積層的濾波器
  3. 濾波器參數少

摘要

說話人識別任務中,MFCC、FBANK、PLP 等頻譜特徵需要設定多個超參,例如幀長、幀間距、幀窗口類型和頻譜個數。從原始模型直接學習說話人嵌入的方法採用數據驅動的方式直接學習濾波器參數。M. Ravanelli 提出 SincNet,該網絡的第一層卷積層的參數化帶通濾波器引入了數字信號的特定波形約束,例如 Hamming 窗。SincNet 能夠很好地學到窄帶說話人特性,例如音調和共振峯。實驗表明:在 TIMIT 和 Librispeech 語料上,SincNet 收斂速度更快、計算量更好,且性能優於從原始波形學習的 CNN。

引言

在說話人識別領域,傳統 i-vector 方法和深度學習方法大多采用手工設計的特徵,例如 MFCC、FBANK。這些頻譜特徵可能阻礙了語音的音調和共振峯的學習。爲了避免這個問題,以頻譜圖和原始波形作爲輸入的方法開始出現。目前,直接從原始波形學習的語音研究包括:情緒任務、說話人識別、欺騙行爲檢測和語音合成。

第一層卷積層是原始波形 CNN 模型最關鍵的部分,這部分需要處理兩個問題:1)高維輸入,2)梯度消亡的問題。CNN 學習濾波器還需要面臨噪聲、不協調的多頻段形狀、訓練樣本少等困難。

爲了解決 CNN 學習濾波器的問題,SincNet 採用了一系列參數化的帶通濾波器。濾波器的高低截止頻率是唯一需要學習的參數。SincNet 表顯著更快的收斂速度、優於 CNN 的性能和短語音的適應能力。

SincNet

SincNet 模型結構,採用 dnn_models.py 的 SincNet 實現:

  1. 波形:塊 200 ms,10 ms 重疊,
  2. 模型:251 長度 * 80 濾波器 + 2 層 5 長度 * 60 濾波器 + 3 層 全連接層(2048) + softmax 分類起(卷積層可視化描述:https://github.com/vdumoulin/conv_arithmetic),
  3. 層歸一化用於輸入樣本和所有卷積層,
  4. 批量歸一化用於全連接層,
  5. eaky-ReLU 激活函數用於所有隱藏層,
  6. Sinc 層使用 mel-scale 截止頻率作爲初始化,
  7. 除了 Sinc 層的網絡使用 “Glorot” 初始化策略;
  8. 訓練過程:RMSprop 優化器,學習速率 0.001,alpha 0.95,epsilon 1e-7,小批量規模 128;
  9. 超參調試使用 TIMIT 數據集。

濾波器設計

濾波器的設計是 SincNet 的關鍵部分,M. Ravanelli 引入了數字信號處理方面的帶通濾波器,具體過程如下:

  1. 標準 CNN 的濾波器執行輸入波形和有限脈衝響應濾波器之間的時域卷積:

    y[n]=x[n]h[n]=l=0L1x[l]h[nl]y[n]=x[n]*h[n]=\sum\limits_{l=0}^{L-1}x[l]\cdot h[n-l]

    其中 x[n]x[n] 是語音信號的一個塊,例如 200 ms 語音信號;h[n]h[n] 表示長度 LL 的一維濾波器;y[n]y[n] 是濾波器輸出。實現過程可以參考 torch.nn.Conv1d

  2. 將濾波器 h[n]h[n] 參數化爲 g[n,θ]g[n,\theta],其中 θ\theta 是參數。

  3. 論文中採用矩形帶通濾波器作爲參數化濾波器的實現,其參數有兩個:低頻截止頻率 f1f_1 和高頻截止頻率 f2f_2,具體地,在頻率上的表達式爲

    G[f,f1,f2]=rect(f2f2)rect(f2f1)G[f,f_1,f_2]=rect\left(\frac{f}{2f_2}\right)-rect\left(\frac{f}{2f_1}\right)

    使用逆向傅立葉變換,其時域形式爲

    g[n,f1,f2]=2f2sinc(2πf2n)2f1sinc(2πf1n)g[n,f_1,f_2]=2f_2sinc(2\pi f_2n)-2f_1sinc(2\pi f_1n)

    其中,sinc(x)=sin(x)/xsinc(x)={\sin(x)}/{x}

  4. 進一步對帶通濾波器執行窗口化,來緩解通帶中的紋波和阻帶中的有限衰減,

    gw[n,f1,f2]=g[n,f1,f2]w[n]g_w[n,f_1,f_2]=g[n,f_1,f_2]\cdot w[n]

    論文中使用了 Hamming 窗口,測試表明過不同窗函數(例如 Hamming、Hann、Blackman 和 Kaiser)不會產生顯著的差異。

    w[n]=0.540.46cos(2πnL)w[n]=0.54-0.46\cdot\cos\left(\frac{2\pi n}{L}\right)

在參數化濾波器中,f1f_1f2f_2 是兩個需要優化的參數,它們滿足以下三個約束條件:

  • f10f_1\geq 0,可引入新參數 f1abs=f1f_1^{abs}=|f_1| 來實現這一約束;
  • f2f1f_2\geq f_1,可引入新參數 f2abs=f1+f2f1f_2^{abs}=f_1+|f_2-f_1| 來實現這一約束,
  • f2f_2 還需要滿足小於 Nyquist 頻率,訓練發現這個約束會被自然的滿足。

這樣設計的濾波器是可微分的,則可以聯合 SincNet 模型的其它參數同時進行優化。

SincNet 屬性

SincNet 的第一層卷積層採用 2 個參數的帶通濾波器,它具有以下屬性:

  1. 收斂速度快:引入濾波器形狀的先驗知識(來自數字信號處理),學習濾波器特性;

  2. 參數更少:SincNet 濾波器 2F vs. CNN 濾波器 LF,與濾波器長度無關;

  3. 計算高效:濾波器波形窗函數是對稱函數,可以只計算一半,然後繼承給另一半;

  4. 具有可解釋性:第一層卷積層是具有可讀、可解釋的,實際上,它具有明確的物理意義。

實驗設置

語料

語料有兩個,分別是 TIMIT 與 Librispeech,數據集的設置如下:

  1. 聲音動態檢測(VAD)移除前後非語音片段,

  2. 語音段內高於 125 ms 作爲劃分爲不同塊的規則,

  3. 移除 TIMIT 句子校準(校準的句子,例如相同的文本),

  4. TIMIT 中 5 個句子/人用於訓練,3個句子/人用於測試,

  5. Librispeech 隨機選擇 12-15s 訓練素材,2-6s 測試素材,

  6. TIMIT 訓練集 462 人,Librispeech 訓練集 2484 人。

說話人驗證設定

說話人驗證系統,獲得說話人 id 的步驟:

  1. 說話人嵌入:d-vector 框架,最後的隱藏層的輸出用於提取說話人特徵,或者 DNN-class 使用 softmax 的後驗評分;

  2. cosine 距離計算註冊語音和測試語音之間的相似度。

此外,冒名頂替者使用真實說話人的每個句子的 10 段語音。評測的冒名頂替者與訓練的說話人不同。

基準方法設定

基準設置包含 CNN 基準和基於特徵的說話人驗證基準:

  1. CNN + 原始波形

  2. CNN + 39 MFCCs(靜態 + Delta + Delta Delta) + batch normalization

  3. MLP + 40 FBANK + layer normalization

  4. i-vector:GMM-UBM + T + PLDA

其中,MFCC 與 FBANK 幀長 25 ms、幀間距 10 ms、窗口約 200 ms,GMM-UBM 2048 高斯成分,i-vector 400 維度,PLDA 採用 Librispeech 的訓練集進行訓練。

結果與分析

濾波器分析

filters

Librispeech 語料上學習來測試濾波器學習的效果,Fig. 2Fig. 3 表明:

  1. CNN:學到的濾波器的頻率響應,一些像噪聲,一些是多組形狀;
  2. SincNet:矩形帶通濾波器。
  3. SincNet 學到音調(男性:133 Hz,女性:234 Hz)、第一共振峯(500 Hz)和第二共振峯(900-1400 Hz)更加明顯,更能適應說話人特性,這表明 SincNet 比 CNN 更能捕獲窄帶的說話人線索。

說話人鑑別

Fig. 4 表明,在 TIMIT 數據集上,SincNet 比 CNN 收斂速度更快,幀誤差更低。

模型/語料(句子誤差率) TIMIT Librispeech
DNN-MFCC 0.99 2.02
CNN-FBANK 0.86 1.55
CNN-Raw 1.65 1.00
SincNet 0.85 0.96

上表描述了 SincNet 在說話人鑑別的段誤差率上明顯優於直接學習原始波形的 CNN,且能高於使用 MFCC 特徵的 DNN 結構和 BFANK 特徵的 CNN 結構。此外,Librispeech 語料上的測試結果說明了少量訓練數據,CNN 無法利用 FBANKs 特徵學到濾波器組。

說話人確認

模型/Librispeech 說話人嵌入(等誤差率) TIMIT Librispeech
DNN-MFCC 0.88 0.72
CNN-FBANK 0.60 0.37
CNN-Raw 0.58 0.36
SincNet 0.51 0.32

上表說明,在 Librispeech 語料上, DNN-class 說話人嵌入優於 d-vector,SincNet 實現了最優的性能,相比較 i-vector EER 1.1% 明顯較優。

疑問

  1. 論文沒有確定指出測試的說話人是否出現在訓練集中。
  2. NIST SRE 和 VoxCeleb 的說話人識別語料沒有被使用到實驗中。

參考文獻

  1. Muckenhirn H, Magimai-Doss M, Marcell S. Towards Directly Modeling Raw Speech Signal for Speaker Verification Using CNNS. ICASSP, IEEE International Conference on Acoustics, Speech and Signal Processing - Proceedings. 2018.

作者信息:

CSDN:https://blog.csdn.net/i_love_home?viewmode=contents

Github:https://github.com/mechanicalsea

2019級同濟大學博士研究生 王瑞 [email protected]

研究方向:說話人識別、說話人分離

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