Songhun/wav2vec2-large-960h-lv60-contrastive
14
Speech Verification Repository
이 저장소는 음성 데이터를 기반으로 화자 인식 모델을 학습하고 사용하는 방법을 제공합니다. 한국어 음성 데이터셋인 AIHub의 화자 인식용 음성 데이터셋을 사용하여 학습이 진행된 모델입니다.
모델 개요
- 모델 이름: wav2vec2-large-960h-lv60-contrastive
- 모델 설명: 이 모델은 Wav2Vec 2.0 아키텍처를 기반으로 한 화자 인식 모델입니다. 대조 학습(Contrastive Learning)을 통해 동일 화자에 대한 음성 데이터의 특징을 효과적으로 학습할 수 있습니다.
- 활용 분야: 음성 인식, 화자 분류등의 태스크에 활용될 수 있습니다.
The original model can be found wav2vec2-large-960h-lv60
학습 데이터
- AIHub의 화자 인식용 음성 데이터셋 사용
- 한국어 음성 데이터로 구성되어 있으며, 다양한 화자의 음성 샘플을 포함
- 원본 데이터 링크: AIHub 화자 인식 데이터셋
사용 방법
- Library import
import librosa
import torch
import torch.nn.functional as F
from transformers import Wav2Vec2Model
from transformers import Wav2Vec2FeatureExtractor
from torch.nn.functional import cosine_similarity- Load Model
from transformers import Wav2Vec2Model, AutoFeatureExtractor
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name = "Songhun/wav2vec2-large-960h-lv60-contrastive"
model = Wav2Vec2Model.from_pretrained(model_name).to(device)
feature_extractor = AutoFeatureExtractor.from_pretrained(model_name)- Calculate Voice Similarity
file_path1 = './sample_data/voice1.mp3'
file_path2 = './sample_data/voice2.mp3'
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
def load_and_process_audio(file_path, feature_extractor, max_length=4.0):
audio, sampling_rate = librosa.load(file_path, sr=16000)
inputs = feature_extractor(audio, sampling_rate=sampling_rate, return_tensors="pt", padding="max_length", truncation=True, max_length=int(max_length * sampling_rate))
return inputs.input_values
audio_input1 = load_and_process_audio(file_path1, feature_extractor).to(device)
audio_input2 = load_and_process_audio(file_path2, feature_extractor).to(device)
embedding1 = model(audio_input1).last_hidden_state.mean(dim=1)
embedding2 = model(audio_input2).last_hidden_state.mean(dim=1)
similarity = F.cosine_similarity(embedding1, embedding2).item()
print(f"Similarity between the two audio files: {similarity}")Threshold: 0.3728 is Youden's J statistic optimal threshold
