Skip to content

LEE5J/speaker_recogintion_research

Repository files navigation

화자 인식 경량화를 위한 검증 및 테스트 코드

fast test

python speaker_test.py audio1.wav audio2.wav

사용 방법

speaker_embed_{모델명}.py 와 같이 각 모델 별 코드가 존재 이 코드는 audio 폴더 안에 있는 오디오 파일을 임베딩 차원으로 변환하는 코드 이 코드를 활용하여서 음성 파일을 임베딩으로 변환후 딕셔너리 형태로 저장해서 pkl 파일로 변환 speaker_embed_{모델명}.pkl 파일이 생성됨 이것을 eer_test.py 에서 사용하여 테스트 진행 코드안의 model={모델명} 을 바꾸는 방식으로 사용 라벨링 데이터는 labels_consensus.csv 파일을 사용하였는데 'SpkrID' , 'FileName' 이 두 컬럼을 사용하였음 다른 파일을 사용할 경우 eer_test.py 에서 라벨링 데이터 파일을 바꾸는 방식으로 사용

주요 코드 설명

eer_test.py : 추출된 임베딩 차원을 바탕으로 EER 계산 및 최적 임계값 찾기, 이때 임베딩 양식은 speaker_embed_{모델명}.pkl 이며 안에는 dictionary 형태로 저장 compute_eer.py : EER 계산을 위한 코드들 실제로 사용시에는 eer_test.py 에서 모델 명을 바꾸는 방식으로 사용

speaker_embed_{모델명}.py : 오디오 파일을 임베딩 차원으로 변환하는 코드 이 코드를 활용하여서 음성 파일을 임베딩으로 변환후 딕셔너리 형태로 저장해서 pkl 파일로 변환

구현 내용

테스트 방식은 두 가지 방식으로 진행

  1. 코사인 유사도 계산
  2. 유클리드 거리 계산 동일한 스피커 ID를 기준으로 동일 쌍을 만들고 동일 쌍을 만든 갯수 만큼 랜덤으로 다른 쌍을 제작, 1대 1로 데이터 비율을 맞추었으며, 코드 안에 랜덤 시드가 고정되어있음, 멀티코어는 12코어를 기준으로 설정이 되어 있으며 환경에 따라 자유롭게 사용가능. pyannote 모델을 토치 구버전이 필요하여 CPU 환경에서 진행 넘파이를 통해서 데이터 처리 및 임계값 계산 16개로 구간을 분할후 FAR FRR 계산 후에 EER 계산 -> 최고 EER 을 가진 임계값 기준으로 다시 16개 구간을 분할후 EER 계산 이 과정을 5번 반복, 파라미터를 직접 주입할 경우 이 또한 변경 가능

evaluation result

1M 짜리 B0 모델도 pyannote 보다 좋은 성능을 보여줌 크기보다는 데이터셋이 주요하게 작용한듯하고 3M 사이즈의 S_ft_mix 모델을 권장 유클리드 거리 계산보다 cosine 유사도 계산이 더 주요하게 작용

모델 코사인EER 코사인임계값 유클리드EER 유클리드임계값
B0_ft_lm 0.1258 0.8406 0.1434 38.5771
B0_ptn 0.1238 0.7968 0.1374 32.5217
S_ft_mix 0.1185 0.8564 0.1293 77.1924
M_ft_mix 0.1176 0.8565 0.1277 78.2829
B6(sota) 0.1243 0.8413 0.1365 31.2410
Pyannote 0.1320 0.8741 X(0.1940) X(1156.17)

redimnet 관련

hubconf.py : redimnet 모델 파라미터를 받아오는 코드 redimnet 폴더는 각종 모델 구조가 정의되어 있음 이것은 원본 깃허브 코드와 동일하지 않음

프로젝트와 무관하지만 테스팅 환경을 위한 코드

extract_melfilter.py : 오디오 파일을 임베딩 차원으로 변환하는 코드 extract_mfcc.py : 오디오 파일을 임베딩 차원으로 변환하는 코드 gpu_bandwidth.py : GPU 대역폭 테스트 코드

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages