# 基于PaddlePaddle实现的声纹识别系统
![python version](https://img.shields.io/badge/python-3.8+-orange.svg)
![GitHub forks](https://img.shields.io/github/forks/yeyupiaoling/VoiceprintRecognition-PaddlePaddle)
![GitHub Repo stars](https://img.shields.io/github/stars/yeyupiaoling/VoiceprintRecognition-PaddlePaddle)
![GitHub](https://img.shields.io/github/license/yeyupiaoling/VoiceprintRecognition-PaddlePaddle)
![支持系统](https://img.shields.io/badge/支持系统-Win/Linux/MAC-9cf)
本分支为1.0版本,如果要使用之前的0.3版本请在[0.x分支](https://github.com/yeyupiaoling/VoiceprintRecognition-PaddlePaddle/tree/release/0.x)使用。本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,不排除以后会支持更多模型,同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对应项目中的AAMLoss,对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接,除此之外,还支持AMLoss、ARMLoss、CELoss等多种损失函数。
使用环境:
- Anaconda 3
- Python 3.11
- PaddlePaddle 2.5.1
- Windows 10 or Ubuntu 18.04
# 项目特性
1. 支持模型:EcapaTdnn、TDNN、Res2Net、ResNetSE、ERes2Net、CAM++
2. 支持池化层:AttentiveStatsPool(ASP)、SelfAttentivePooling(SAP)、TemporalStatisticsPooling(TSP)、TemporalAveragePooling(TAP)、TemporalStatsPool(TSTP)
3. 支持损失函数:AAMLoss、SphereFace2、AMLoss、ARMLoss、CELoss
4. 支持预处理方法:MelSpectrogram、Spectrogram、MFCC、Fbank
**模型论文:**
- EcapaTdnn:[ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification](https://arxiv.org/abs/2005.07143v3)
- TDNN:[Prediction of speech intelligibility with DNN-based performance measures](https://arxiv.org/abs/2203.09148)
- Res2Net:[Res2Net: A New Multi-scale Backbone Architecture](https://arxiv.org/abs/1904.01169)
- ResNetSE:[Squeeze-and-Excitation Networks](https://arxiv.org/abs/1709.01507)
- CAMPPlus:[CAM++: A Fast and Efficient Network for Speaker Verification Using Context-Aware Masking](https://arxiv.org/abs/2303.00332v3)
- ERes2Net:[An Enhanced Res2Net with Local and Global Feature Fusion for Speaker Verification](https://arxiv.org/abs/2305.12838v1)
# 模型下载
### 训练CN-Celeb数据,共有2796个说话人。
| 模型 | Params(M) | 预处理方法 | 数据集 | train speakers | threshold | EER | MinDCF | 模型下载 |
|:----------:|:---------:|:-----:|:----------------------------------:|:--------------:|:---------:|:-------:|:-------:|:--------:|
| CAM++ | 6.8 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.25 | 0.09485 | 0.56214 | 加入知识星球获取 |
| ERes2Net | 6.6 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.22 | 0.09637 | 0.52627 | 加入知识星球获取 |
| ResNetSE | 7.8 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.19 | 0.10222 | 0.57981 | 加入知识星球获取 |
| EcapaTdnn | 6.1 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.25 | 0.10465 | 0.58521 | 加入知识星球获取 |
| TDNN | 2.6 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.23 | 0.11804 | 0.61070 | 加入知识星球获取 |
| Res2Net | 5.0 | Fbank | [CN-Celeb](http://openslr.org/82/) | 2796 | 0.18 | 0.14126 | 0.68511 | 加入知识星球获取 |
| CAM++ | 6.8 | Fbank | 更大数据集 | 2W+ | 0.34 | 0.07884 | 0.52738 | 加入知识星球获取 |
| CAM++ | 6.8 | Flank | 其他数据集 | 20W | 0.29 | 0.04768 | 0.31429 | 加入知识星球获取 |
| ERes2NetV2 | 56.2 | Fbank | 其他数据集 | 20W+ | 0.36 | 0.03847 | 0.24318 | 加入知识星球获取 |
| ERes2Net | 55.1 | Fbank | 其他数据集 | 20W | 0.36 | 0.02939 | 0.18355 | 加入知识星球获取 |
说明:
1. 评估的测试集为[CN-Celeb的测试集](https://aistudio.baidu.com/aistudio/datasetdetail/233361),包含196个说话人。
2. 使用语速增强分类大小翻三倍`speed_perturb_3_class: True`。
3. 参数数量不包含了分类器的参数数量。
### 训练VoxCeleb1&2数据,共有7205个说话人。
| 模型 | Params(M) | 预处理方法 | 数据集 | train speakers | threshold | EER | MinDCF | 模型下载 |
|:----------:|:---------:|:-----:|:-----------:|:--------------:|:---------:|:-------:|:-------:|:--------:|
| CAM++ | 6.8 | Fbank | VoxCeleb1&2 | 7205 | 0.27 | 0.03350 | 0.25726 | 加入知识星球获取 |
| ERes2Net | 6.6 | Fbank | VoxCeleb1&2 | 7205 | 0.21 | 0.03997 | 0.30614 | 加入知识星球获取 |
| ResNetSE | 7.8 | Fbank | VoxCeleb1&2 | 7205 | 0.21 | 0.03758 | 0.27625 | 加入知识星球获取 |
| EcapaTdnn | 6.1 | Fbank | VoxCeleb1&2 | 7205 | 0.27 | 0.02852 | 0.19432 | 加入知识星球获取 |
| TDNN | 2.6 | Fbank | VoxCeleb1&2 | 7205 | 0.25 | 0.03541 | 0.28130 | 加入知识星球获取 |
| Res2Net | 5.0 | Fbank | VoxCeleb1&2 | 7205 | 0.21 | 0.04749 | 0.44950 | 加入知识星球获取 |
| CAM++ | 6.8 | Fbank | 更大数据集 | 2W+ | 0.28 | 0.03192 | 0.22032 | 加入知识星球获取 |
| CAM++ | 6.8 | Fbank | 其他数据集 | 20W+ | 0.49 | 0.10331 | 0.71206 | 加入知识星球获取 |
| ERes2NetV2 | 56.2 | Fbank | 其他数据集 | 20W+ | 0.52 | 0.08649 | 0.64201 | 加入知识星球获取 |
| ERes2Net | 55.1 | Fbank | 其他数据集 | 20W+ | 0.53 | 0.08903 | 0.62131 | 加入知识星球获取 |
说明:
1. 评估的测试集为[VoxCeleb1&2的测试集](https://aistudio.baidu.com/aistudio/datasetdetail/255977),包含158个说话人。
2. 使用语速增强分类大小翻三倍`speed_perturb_3_class: True`。
3. 参数数量不包含了分类器的参数数量。
## 安装环境
- 首先安装的是PaddlePaddle的GPU版本,如果已经安装过了,请跳过。
```shell
conda install paddlepaddle-gpu==2.4.1 cudatoolkit=10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
```
- 安装ppvector库。
使用pip安装,命令如下:
```shell
python -m pip install ppvector -U -i https://pypi.tuna.tsinghua.edu.cn/simple
```
**建议源码安装**,源码安装能保证使用最新代码。
```shell
git clone https://github.com/yeyupiaoling/VoiceprintRecognition-PaddlePaddle.git
cd VoiceprintRecognition-PaddlePaddle/
pip install .
```
# 创建数据
本教程笔者使用的是[CN-Celeb](https://openslr.elda.org/resources/82),这个数据集一共有约3000个人的语音数据,有65W+条语音数据,下载之后要解压数据集到`dataset`目录,另外如果要评估,还需要下载[CN-Celeb的测试集](https://aistudio.baidu.com/aistudio/datasetdetail/233361)。如果读者有其他更好的数据集,可以混合在一起使用,但最好是要用python的工具模块aukit处理音频,降噪和去除静音。
首先是创建一个数据列表,数据列表的格式为`<语音文件路径\t语音分类标签>`,创建这个列表主要是方便之后的读取,也是方便读取使用其他的语音数据集,语音分类标签是指说话人的唯一ID,不同的语音数据集,可以通过编写对应的生成数据列表的函数,把这些数据集都写在�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于python开发使用EcapaTdnn、ResNetSE、ERes2Net、CAM++先进声纹识别模型,并支持多种数据预处理,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,不排除以后会支持更多模型,同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法,使用了ArcFace Loss,ArcFace loss:Additive Angular Margin Loss(加性角度间隔损失函数),对应项目中的AAMLoss,对特征向量和权重归一化,对θ加上角度间隔m,角度间隔比余弦间隔在对角度的影响更加直接,除此之外,还支持AMLoss、ARMLoss、CELoss等多种损失函数。
资源推荐
资源详情
资源评论
收起资源包目录
先进的声纹识别模型.zip (56个子文件)
先进的声纹识别模型
VoiceprintRecognition-PaddlePaddle-develop
infer_recognition_gui.py 7KB
eval.py 1KB
setup.py 2KB
extract_features.py 626B
create_data.py 2KB
LICENSE 11KB
audio_db
沙瑞金
0.wav 576KB
李达康
0.wav 536KB
configs
cam++.yml 3KB
ecapa_tdnn.yml 3KB
res2net.yml 3KB
tdnn.yml 3KB
resnet_se.yml 3KB
eres2net.yml 3KB
infer_contrast_gui.py 4KB
infer_recognition.py 2KB
dataset
b_1.wav 158KB
a_2.wav 69KB
a_1.wav 115KB
b_2.wav 162KB
docs
images
contrast.jpg 29KB
recognition.jpg 23KB
log.jpg 141KB
infer_contrast.py 1KB
ppvector
metric
__init__.py 0B
metrics.py 1KB
__init__.py 145B
data_utils
utils.py 4KB
__init__.py 0B
featurizer.py 4KB
collate_fn.py 924B
reader.py 7KB
spec_aug.py 2KB
audio.py 21KB
predict.py 17KB
trainer.py 36KB
utils
utils.py 3KB
__init__.py 0B
scheduler.py 3KB
record.py 1KB
logger.py 3KB
models
utils.py 5KB
__init__.py 0B
loss.py 9KB
ecapa_tdnn.py 10KB
campplus.py 12KB
eres2net.py 17KB
pooling.py 5KB
resnet_se.py 5KB
res2net.py 7KB
fc.py 4KB
tdnn.py 3KB
requirements.txt 235B
.gitignore 99B
train.py 1KB
README.md 31KB
共 56 条
- 1
资源评论
梦回阑珊
- 粉丝: 3548
- 资源: 1154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功