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 .

빠른 시작 (일반적인 워크플로우)

  1. 데이터 준비 – 화자 데이터셋(예: CN-Celeb 또는 VoxCeleb)을 다운로드하여 dataset/ 아래에 배치하고 다음을 실행:
    python create_data.py   # 학습/등록/테스트 목록 파일 생성
    
  2. (선택 사항) 특징 추출 – 학습 속도 향상:
    python extract_features.py --configs=configs/cam++.yml --save_dir=dataset/features
    
    설정 파일의 목록 경로를 *_features.txt 파일로 업데이트하십시오.
  3. 모델 학습 – 설정(예: 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.py
    
    로그는 log/에 기록되며 VisualDL로 시각화할 수 있습니다:
    visualdl --logdir=log --host 0.0.0.0
    
  4. 평가 – 설정에서 do_eval: True로 설정하면 동일한 train.py 스크립트가 평가를 실행하여 EER 및 MinDCF를 보고합니다.
  5. 추론 – 학습 후, 제공된 추론 API(저장소의 inference.py 참조)를 사용하여 새로운 발화를 임베딩하고 등록된 화자와 비교합니다.

데모 및 온라인 서비스

라이선스

이 저장소는 MIT 라이선스 하에 배포됩니다 (README의 LICENSE 배지 참조).

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트