简体中文 | English
一个基于声纹识别模型对音频数据集按说话人自动分类的数据集筛选辅助工具,仅需为每个说话人准备数条代表性的语音片段,可用于辅助 VITS/SoVITS/Diff-SVC/RVC/DDSP-SVC 等语音模型数据集的制作。
基于 yeyupiaoling/VoiceprintRecognition-Pytorch 修改,增加了批量声纹识别功能,优化了说话人的判定机制,并能将识别结果保存为可导入 2DIPW/audio_dataset_screener 中进行进一步手工筛选的 JSON 工程文件。相比原项目删除了所有与模型训练相关的源码,故如需训练自己的模型请使用原项目。
此项目为实验性项目,不保证使用效果,仅供学习与交流,并非为生产环境准备。
git clone https://github.com/2DIPW/audio_dataset_vpr.git
cd audio_dataset_vpr
conda create -n ad-vpr python=3.8
conda activate ad-vpr
- 根据需求安装 PyTorch,详见官网,以下为 pip 安装 PyTorch-CUDA 版本的示例。如果已经安装,请跳过。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
默认参数下,你需要将模型文件model.pt
、model.state
、optimizer.pt
及配置文件config.yml
置于model
目录。你也可以通过指定-m
和-c
参数读取其他路径下的模型及配置文件。
- 你可以从 Hugging Face 下载我基于 zhvoice 数据集训练的 EcapaTdnn 模型:2DIPW/VPR_zhvoice_EcapaTdnn
- 或者下载原项目作者 yeyupiaoling 训练的更多模型
- 或者基于原项目训练自己的模型
声纹识别模型的质量与识别效果直接相关,你可以自行尝试摸索最佳的模型。
-
对于每个说话人,选取几段最具代表性的语音片段,按以下文件结构放入
labels
目录。每个说话人建立一个子目录,目录名为说话人名称,文件名不做要求。 -
由于代码是根据相似度大于给定阈值的特征片段数量来判定说话人的,请保证每个说话人特征语音片段数量相等。
-
如果你想将声纹识别结果用于 Audio Dataset Screener 的后续手工筛选,说话人不应超过5位,否则序号大于5的说话人会被 Audio Dataset Screener 自动忽略。
labels ├───speaker1 │ ├───xxx1-xxx1.wav │ ├───... │ └───xxx1-xxx4.wav └───speaker2 ├───xxx2-xxx1.wav ├───... └───xxx2-xxx4.wav
- 默认参数下,你需要将所有待分类的音频片段(wav格式)放入
input
目录。你也可以通过指定-i
参数读取其他路径下的音频片段。
-
使用
infer.py
python infer.py
可指定的参数:
-m
|--model_path
: 存放声纹识别模型的目录。默认值:model/
-c
|--configs
: 模型配置文件的路径。默认值:model/config.yml
-d
|--device
: 推理设备,gpu或cpu。默认值:gpu
-l
|--label_path
: 存放音频特征库的目录。默认值:labels/
-t
|--threshold
: 判定阈值,若置信度大于该值则认为特征相符。默认值:0.6
-i
|--input_path
: 存放待分类音频文件的目录。默认值:input/
-o
|--output_path
: 存放分类结果的目录。默认值:output/
-k
|--keep_unrecognized
: 不移动未识别的音频文件。默认值:不启用
-
识别结束后,输入的音频文件将会被移动至
output
目录下的以VPR_Result_YYYYMMDD_HHMMSS
格式命名的目录中,识别为不同说话人的音频文件将会移动至对应说话人名称的目录,未被识别的音频文件会移至Unrecognized
文件夹。 -
识别结果也将保存为
result.json
文件,可使用 Audio Dataset Screener 导入进行进一步的手工筛选。
原项目基于 Apache License 2.0 开源,按照该协议,本项目中原项目的源码附带文件修改说明(MODIFICATION_STATEMENT)。
本项目基于 GNU General Public License v3.0 开源
世界因开源更精彩
@inproceedings{desplanques2020ecapa,
title={{ECAPA-TDNN: Emphasized Channel Attention, propagation and aggregation in TDNN based speaker verification}},
author={Desplanques, Brecht and Thienpondt, Jenthe and Demuynck, Kris},
booktitle={Interspeech 2020},
pages={3830--3834},
year={2020}
}