/audio_dataset_vpr

A voiceprint recognition classifier for audio dataset

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Audio Dataset VPR Classifier

音频数据集声纹识别分类器

简体中文 | 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

创建虚拟环境(可选,以Anaconda为例)

conda create -n ad-vpr python=3.8
conda activate ad-vpr

安装PyTorch

  • 根据需求安装 PyTorch,详见官网,以下为 pip 安装 PyTorch-CUDA 版本的示例。如果已经安装,请跳过。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

安装其他依赖

pip install -r requirements.txt

配置声纹识别模型

默认参数下,你需要将模型文件model.ptmodel.stateoptimizer.pt及配置文件config.yml置于model目录。你也可以通过指定-m-c参数读取其他路径下的模型及配置文件。

声纹识别模型的质量与识别效果直接相关,你可以自行尝试摸索最佳的模型。

🗝 使用方法

准备音频特征库

  • 对于每个说话人,选取几段最具代表性的语音片段,按以下文件结构放入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}
}