yeyupiaoling/VoiceprintRecognition-Pytorch
This project uses a variety of advanced voiceprint recognition models such as EcapaTdnn, ResNetSE, ERes2Net, CAM++, etc. It is not excluded that more models will be supported in the future. At the same time, this project also supports MelSpectrogram, Spectrogram data preprocessing methods
VoiceprintRecognition-Pytorch
一個基於 PyTorch 的 聲紋識別 / 說話人驗證 工具包。它讓你可以訓練、評估和部署模型,從音訊片段中識別說話者。
功能特點
- 實現了一系列最先進的聲紋識別骨幹網絡 (Ecapa-Tdnn, TDNN, Res2Net, ResNetSE, ERes2Net, CAM++)。
- 提供多種池化層 (ASP, SAP, TSP, TAP, TSTP) 和一系列損失函數 (AAMLoss/ArcFace, SphereFace2, AMLoss, ARMLoss, CELoss 等)。
- 支援多種前端:經典聲學特徵 (MelSpectrogram, Spectrogram, MFCC, Fbank) 以及來自 Hugging-Face 的預訓練語音模型 (wav2vec2, wavLM 等)。
- 包含數據增強工具 (速度、音量、噪聲、混響、SpecAugment)。
- 提供數據準備、特徵提取、模型訓練、評估和推理 API 的腳本。
- 附帶開箱即用的網頁和微信小程序演示,用於聲紋比對、說話人識別和說話人分離。
關鍵特性
| 特性 | 詳細資訊 |
|---|---|
| 骨幹網絡 | EcapaTdnn, TDNN, Res2Net, ResNetSE, ERes2Net, CAM++ |
| 池化層 | AttentiveStatsPool, SelfAttentivePooling, TemporalStatisticsPooling, TemporalAveragePooling, TemporalStatsPool |
| 損失函數 | AAMLoss (ArcFace), SphereFace2, AMLoss, ARMLoss, CELoss, SubCenterLoss, TripletAngularMarginLoss |
| 前端 | MelSpectrogram, Spectrogram, MFCC, Fbank, wav2vec2.0, wavLM |
| 數據增強 | 速度擾動, 音量增益, 加性噪聲, 混響, SpecAugment |
| 支援數據集 | CN-Celeb, VoxCeleb1/2 (以及任何用戶提供的列表) |
| 評估指標 | EER, MinDCF |
| 演示 | 用於聲紋比對 / 識別 / 分離的線上網頁和微信小程序 |
安裝
# PyTorch GPU (CUDA 11.8) – 如有需要請調整版本
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=11.8 -c pytorch -c nvidia
# 安裝項目使用的輔助庫
python -m pip install mvector -U -i https://pypi.tuna.tsinghua.edu.cn/simple
# 克隆並安裝包 (建議使用可編輯安裝)
git clone https://github.com/yeyupiaoling/VoiceprintRecognition-Pytorch.git
cd VoiceprintRecognition-Pytorch
pip install .
快速開始 (典型工作流程)
- 準備數據 – 下載說話人數據集 (例如 CN-Celeb 或 VoxCeleb),放置在
dataset/下,並運行:python create_data.py # 創建訓練/註冊/測試列表文件 - (可選) 提取特徵 – 加快訓練速度:
將配置中的列表路徑更新為python extract_features.py --configs=configs/cam++.yml --save_dir=dataset/features*_features.txt文件。 - 訓練模型 – 選擇一個配置 (例如
configs/ecapa_tdnn.yml) 並運行:
日誌會寫入CUDA_VISIBLE_DEVICES=0 python train.py # 單 GPU # 或多 GPU CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc_per_node=2 train.pylog/並可以使用 VisualDL 可視化:visualdl --logdir=log --host 0.0.0.0 - 評估 – 如果配置中設置
do_eval: True,相同的train.py腳本會運行評估,報告 EER 和 MinDCF。 - 推理 – 訓練後,使用提供的推理 API (參見倉庫中的
inference.py) 來嵌入新的語音片段並與已註冊的說話人進行比對。
演示與線上服務
- 聲紋比對 – https://tools.yeyupiaoling.cn/speech/voiceprint_compare
- 說話人識別 – https://tools.yeyupiaoling.cn/speech/voiceprint_recognition
- 說話人分離 – https://tools.yeyupiaoling.cn/speech/speaker_diarization
- README 中的二維碼鏈接至提供相同功能的微信小程序。
許可證
本倉庫在 MIT 許可證下發布 (參見 README 中的 LICENSE 徽章)。
相關
- 專案
- 專案
- 專案
- 專案