【導語】
ASV-Subtools是廈門大學智能語音實驗室(XMUSPEECH)于2020年6月推出的一套高效、易于擴展的聲紋識別開源工具,該工具是基于Kaldi與Pytorch開發的,充分結合了Kaldi 在語音信號和后端處理的高效性以及PyTorch 開發和訓練神經網絡的便捷靈活性。
ASV-Subtools 自開源以來,就以卓越的性能和靈活便捷的框架受到國內外重點科研院所和研發人員的青睞,先后在東方語種、CNSRC等競賽中提供基線系統,并且在VoxCeleb數據集上取得了SOTA的結果。CNSRC腳本和此次更新得到廈門天聰智能軟件有限公司(TalentedSoft)的協助。
【更新介紹】
ASV-Subtools原有的訓練模式為離線模式,即采用的是原生的Pytorch Dataset,訓練樣例主要存儲在csv文件中,每個樣例為一行,其中信息主要包含數據路徑、對應標簽等,這里的數據為Kaldi格式的特征存儲路徑;在訓練流程中,可以根據存儲位置進行數據讀取并與其對應的標簽組合成訓練樣例。然而,隨著數據量的增加,原有離線訓練模式已不能滿足高效研發的需求:頻繁的IO讀取會導致顯存占用高但利用率低的問題。
圖1 ASV-Subtools中的數據處理流程
因此為了滿足大規模數據訓練的需求,ASV-Subtools參考借鑒了WeNet、Speechbrain等優秀開源框架的架構,新增了在線訓練模式,并從以下三個方面進行更新:
(1)大規模數據讀取下的IO改進。
圖2 ASV-Subtools在線數據處理方案
在線數據處理方案分為兩種模式:普通模式和分片模式。普通模式與離線模式類似,普通模式數據預處理時生成訓練所需的樣例索引,之后進行在線讀取,適用于小數據集。分片模式則會將普通模式的樣例進一步存儲并打包至壓縮包中,壓縮后索引數量為壓縮包數量,解決索引文件過大的問題,避免重復讀取同條長語音,緩解讀入時的內存壓力。同時,壓縮包內數據可順序讀取,加快讀取速度。
(2)混合精度訓練。
在主流深度學習框架中,浮點數默認為FP32(32位4字節存儲格式),也稱作單精度浮點數。低精度浮點數是指存儲量占用更少的數據類型,如FP16為16位2字節存儲格式,因此它所能表示的精度和范圍也會更低。隨著支持低精度計算的張量核心的普及,低精度計算正在一步步走向成熟。混合精度訓練的目標是盡量在不影響整體模型精度的情況下,將參數部分變為低精度以實現加速訓練、節省顯存的目的。
(3) 在線數據擴增。
在Kaldi框架下,一般采用離線擴增,即在模型訓練前準備好擴增好的特征文件并存入磁盤中,后續進行讀取。這樣方式需要為每次不同的擴增策略重新生成特征,而在大規模數據場景下特征會占用很大的空間,對存儲空間要求較高。而采用在線數據擴充策略,一方面可以起到節省空間的目的,另一方面在特征配置時更加靈活,提高數據擴充的靈活性,增加樣本的多樣性。
圖3 ASV-Subtools在線數據擴充示意圖
【最新結果】
新增的在線訓練模式刷新了此前ASV-Subtools在VoxCeleb數據集上的最優結果,再次取得了SOTA的水平,相關復現腳本均已更新至Github,讀者可以在GitHub上獲得更多測試結果和詳細的實驗配置,感興趣的讀者趕緊上手試試吧!
VoxCeleb2上ResNet34模型的測試結果:
VoxCeleb2上ECAPA模型的測試結果:
【其他更新】
除上述更新以外,此次ASV-Subtools的更新還包括以下內容:
1、XMUSPEECH針對標簽噪聲(Lable Noise)問題的最新研究成果的源碼已更新至ASV-Subtools,該研究成果“When Speaker Recognition Meets Noisy Labels: Optimizations for Front-ends and Back-ends ”已被語音領域國際頂級期刊《IEEE/ACM Transactions on Audio, Speech, and Language Processing》(IEEE/ACM-TASLP)接收。XMUSPEECH針對語速對抗問題的最新研究成果的源碼已更新至ASV-Subtools,該研究成果“Deep Representation Decomposition for Rate-Invariant Speaker Verification”已被國際頂級說話人和語種識別研討會 (Odyssey 2022)接收。
論文原文:https://www.isca-speech.org/archive/odyssey_2022/tong22_odyssey.html
2、新增部分模型,例如RepVGG、RepSPK等。
3、支持JIT模型轉化,并且模型落地的RUNTIME模塊在下一步開源計劃中,敬請期待~
【GitHub】
https://github.com/Snowdar/asv-subtools
歡迎各位讀者關注、點星、提意見~
【參考文獻】
Fuchuan Tong, Miao Zhao, Jianfeng Zhou, Hao Lu, Zheng Li, Lin Li, Qingyang Hong, “ASV-Subtools: Open Source Toolkit for Automatic Speaker Verification”, ICASSP 2021.
https://ieeexplore.ieee.org/document/9414676