项目简介
本项目基于Python和Pytorch实现声纹识别系统。新版本支持pip安装,且将预处理使用模型算子实现,能利用GPU计算,使预处理速度大幅提升,预计可达10 - 20倍。项目采用EcapaTdnn模型进行声纹识别,未来可能支持更多模型。同时支持多种数据预处理方法,损失函数参考人脸识别项目使用了ArcFace Loss。
项目的主要特性和功能
特性
- 支持EcapaTdnn、TDNN、Res2Net、ResNetSE等多模型。
- 支持AttentiveStatsPool(ASP)、SelfAttentivePooling(SAP)、TemporalStatisticsPooling(TSP)、TemporalAveragePooling(TAP)等多样池化层。
- 支持AAMLoss、AMLoss、ARMLoss、CELoss等丰富损失函数。
- 支持MelSpectrogram、Spectrogram、MFCC等多种预处理方法。
功能
- 数据准备:支持创建数据列表,便于读取不同语音数据集,可将mp3格式音频转换为wav格式。
- 模型训练:支持单卡和多卡训练,训练过程用VisualDL保存日志,可随时查看训练结果。
- 数据增强:提供随机裁剪、添加背景噪声、调节语速、调节音量和SpecAugment等音频增强操作。
- 模型评估:训练结束后,可对预测模型进行评估,计算tpr、fpr、eer等指标。
- 声纹对比:输入两个语音,通过预测函数获取特征数据,计算对角余弦值得到相似度。
- 声纹识别:实现声纹注册和识别功能,将用户语音与声纹库中的语音对比完成识别。
安装使用步骤
安装环境
- 若未安装Pytorch的GPU版本,执行以下命令:
shell conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
- 安装ppvector库:
- 使用pip安装:
shell python -m pip install mvector -U -i https://pypi.tuna.tsinghua.edu.cn/simple
- 建议源码安装:
shell cd VoiceprintRecognition_Pytorch/ python setup.py install
- 使用pip安装:
创建数据
使用create_data.py
创建数据列表,若使用zhvoice数据集,需全部解压,可将mp3格式音频转换为wav格式(也可设置to_wav=False
不转换)。
shell
python create_data.py
修改预处理方法
可在配置文件中修改预处理方法,如MelSpectrogram
、Spectrogram
、MFCC
,并根据需要调整对应参数。
训练模型
使用train.py
训练模型,可通过configs/ecapa_tdnn.yml
配置文件指定预处理方式和数据增强方式。
shell
CUDA_VISIBLE_DEVICES=0 python train.py
CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc_per_node=2 train.py
评估模型
训练结束后,使用eval.py
评估模型。
shell
python eval.py
声纹对比
使用infer_contrast.py
进行声纹对比。
shell
python infer_contrast.py --audio_path1=audio/a_1.wav --audio_path2=audio/b_2.wav
声纹识别
使用infer_recognition.py
进行声纹识别。
shell
python infer_recognition.py
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】