speech-emotion-recognition / src /preprocessing /feature_extraction_comparison.py
Laila16's picture
test and change path
e88666e
Raw
History Blame Contribute Delete
1.11 kB
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import librosa
import matplotlib.pyplot as plt
from transformers import Wav2Vec2Processor, Wav2Vec2Model
from config import TRAIN_AUDIO
import torch
sample_file = os.path.join(TRAIN_AUDIO, 'dia47_utt11.mp4')
audio, sr = librosa.load(sample_file, sr=16000)
# 1st Using MFCC with librosa to extract features
# Audio -> Feature Extraction -> CNN/LSTM -> Emotion Recognition
mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=13)
plt.imshow(mfcc, aspect='auto', origin='lower')
plt.title("MFCC Features")
plt.colorbar()
plt.show()
# 2nd Using Modern Feature Extraction models (Wav2Vec2, HuBERT)
# they learn features directly from raw audio and are often more powerful for downstream tasks like emotion recognition
#Audio -> Pretrained Model -> Emotion Classifier
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base")
model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-base")
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
outputs = model(**inputs)
print(outputs.last_hidden_state.shape)