Views
No views yet
1from transformers import HubertForSequenceClassification, Wav2Vec2FeatureExtractor
2import torchaudio
3import torch
4
5feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("facebook/hubert-large-ls960-ft")
6model = HubertForSequenceClassification.from_pretrained("xbgoose/hubert-speech-emotion-recognition-russian-dusha-finetuned")
7num2emotion = {0: 'neutral', 1: 'angry', 2: 'positive', 3: 'sad', 4: 'other'}
8
9filepath = "path/to/audio.wav"
10
11waveform, sample_rate = torchaudio.load(filepath, normalize=True)
12transform = torchaudio.transforms.Resample(sample_rate, 16000)
13waveform = transform(waveform)
14
15inputs = feature_extractor(
16 waveform,
17 sampling_rate=feature_extractor.sampling_rate,
18 return_tensors="pt",
19 padding=True,
20 max_length=16000 * 10,
21 truncation=True
22 )
23
24logits = model(inputs['input_values'][0]).logits
25predictions = torch.argmax(logits, dim=-1)
26predicted_emotion = num2emotion[predictions.numpy()[0]]
27print(predicted_emotion)