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 .
빠른 시작 (일반적인 워크플로우)
- 데이터 준비 – 화자 데이터셋(예: CN-Celeb 또는 VoxCeleb)을 다운로드하여
dataset/아래에 배치하고 다음을 실행:python create_data.py # 학습/등록/테스트 목록 파일 생성 - (선택 사항) 특징 추출 – 학습 속도 향상:
설정 파일의 목록 경로를python extract_features.py --configs=configs/cam++.yml --save_dir=dataset/features*_features.txt파일로 업데이트하십시오. - 모델 학습 – 설정(예:
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.pylog/에 기록되며 VisualDL로 시각화할 수 있습니다:visualdl --logdir=log --host 0.0.0.0 - 평가 – 설정에서
do_eval: True로 설정하면 동일한train.py스크립트가 평가를 실행하여 EER 및 MinDCF를 보고합니다. - 추론 – 학습 후, 제공된 추론 API(저장소의
inference.py참조)를 사용하여 새로운 발화를 임베딩하고 등록된 화자와 비교합니다.
데모 및 온라인 서비스
- 성문 비교 – https://tools.yeyupiaoling.cn/speech/voiceprint_compare
- 화자 식별 – https://tools.yeyupiaoling.cn/speech/voiceprint_recognition
- 화자 분할 – https://tools.yeyupiaoling.cn/speech/speaker_diarization
- README의 QR 코드를 통해 동일한 기능을 제공하는 위챗 미니 프로그램에 접속할 수 있습니다.
라이선스
이 저장소는 MIT 라이선스 하에 배포됩니다 (README의 LICENSE 배지 참조).
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트