许可证:apache-2.0
标签:
- 训练生成
指标:
- 准确率
模型索引:
名称:wav2vec-英语语音情感识别
通过微调Wav2Vec 2.0实现语音情感识别
该模型是基于jonatasgrosman/wav2vec2-large-xlsr-53-english微调的语音情感识别(SER)模型。
微调原始模型使用了以下数据集:
- 萨里视听情感表达数据库(SAVEE) - 4名男性演员的480段音频
- 瑞尔森视听情感语音与歌曲数据库(RAVDESS) - 24名专业演员(12女,12男)的1440段音频
- 多伦多情感语音集(TESS) - 2名女性演员的2800段音频
使用7种情感作为分类标签:
emotions = ['愤怒' '厌恶' '恐惧' '快乐' '中性' '悲伤' '惊讶']
在评估集上取得以下结果:
模型使用
pip install transformers librosa torch
from transformers import *
import librosa
import torch
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("r-f/wav2vec-english-speech-emotion-recognition")
model = Wav2Vec2ForCTC.from_pretrained("r-f/wav2vec-english-speech-emotion-recognition")
def predict_emotion(audio_path):
audio, rate = librosa.load(audio_path, sr=16000)
inputs = feature_extractor(audio, sampling_rate=rate, return_tensors="pt", padding=True)
with torch.no_grad():
outputs = model(inputs.input_values)
predictions = torch.nn.functional.softmax(outputs.logits.mean(dim=1), dim=-1)
predicted_label = torch.argmax(predictions, dim=-1)
emotion = model.config.id2label[predicted_label.item()]
return emotion
emotion = predict_emotion("示例音频.wav")
print(f"预测情感: {emotion}")
>> 预测情感: 愤怒
训练过程
训练超参数
训练使用的超参数:
- 学习率:0.0001
- 训练批大小:4
- 评估批大小:4
- 评估步长:500
- 随机种子:42
- 梯度累积步数:2
- 优化器:Adam(β1=0.9,β2=0.999,ε=1e-08)
- 训练轮次:4
- 最大步数:7500
- 保存步长:1500
训练结果
步数 |
训练损失 |
验证损失 |
准确率 |
500 |
1.8124 |
1.365212 |
48.63% |
1000 |
0.8872 |
0.773145 |
79.70% |
1500 |
0.7035 |
0.574954 |
85.20% |
2000 |
0.6879 |
1.286738 |
77.59% |
2500 |
0.6498 |
0.697455 |
83.30% |
3000 |
0.5696 |
0.33724 |
89.22% |
3500 |
0.4218 |
0.307072 |
91.12% |
4000 |
0.3088 |
0.374443 |
93.02% |
4500 |
0.2688 |
0.260444 |
93.66% |
5000 |
0.2973 |
0.302985 |
92.39% |
5500 |
0.1765 |
0.165439 |
96.19% |
6000 |
0.1475 |
0.170199 |
96.19% |
6500 |
0.1274 |
0.15531 |
96.62% |
7000 |
0.0699 |
0.103882 |
97.67% |
7500 |
0.083 |
0.104075 |
97.46% |