CoolFace
Modelpublic

Songhun/wav2vec2-large-960h-lv60-contrastive

sourceHugging Facemitupdated 2y agoView on Hugging Face
1likes4downloads
Model Card

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 화자 인식 데이터셋

사용 방법

  1. 1.Library import
shell
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
  1. 1.Load Model
shell
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)
  1. 1.Calculate Voice Similarity
shell
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