Views
No views yet
1import librosa
2import torch
3import torch.nn.functional as F
4from transformers import Wav2Vec2Model
5from transformers import Wav2Vec2FeatureExtractor
6from torch.nn.functional import cosine_similarity1from transformers import Wav2Vec2Model, AutoFeatureExtractor
2
3device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
4model_name = "Songhun/wav2vec2-base-960h-contrastive"
5model = Wav2Vec2Model.from_pretrained(model_name).to(device)
6feature_extractor = AutoFeatureExtractor.from_pretrained(model_name)1file_path1 = './test1.wav'
2file_path2 = './test2.wav'
3
4feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
5def load_and_process_audio(file_path, feature_extractor, max_length=4.0):
6 audio, sampling_rate = librosa.load(file_path, sr=16000)
7 inputs = feature_extractor(audio, sampling_rate=sampling_rate, return_tensors="pt", padding="max_length", truncation=True, max_length=int(max_length * sampling_rate))
8 return inputs.input_values
9
10audio_input1 = load_and_process_audio(file_path1, feature_extractor).to(device)
11audio_input2 = load_and_process_audio(file_path2, feature_extractor).to(device)
12
13embedding1 = model(audio_input1).last_hidden_state.mean(dim=1)
14embedding2 = model(audio_input2).last_hidden_state.mean(dim=1)
15
16similarity = F.cosine_similarity(embedding1, embedding2).item()
17print(f"Similarity between the two audio files: {similarity}")