🚀 使用WavLM-Base进行语音情感识别
本模型是基于microsoft/wavlm-base
微调的语音情感识别模型,能够将音频分类为7种不同的情感:愤怒、厌恶、恐惧、快乐、中性、悲伤和惊讶。
🚀 快速开始
以下是使用该模型进行语音情感识别的示例代码:
from transformers import Wav2Vec2FeatureExtractor, Wav2Vec2ForSequenceClassification
import torch
import librosa
model_name = "jihedjabnoun/wavlm-base-emotion"
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
model = Wav2Vec2ForSequenceClassification.from_pretrained(model_name)
audio_path = "path_to_your_audio.wav"
audio, sr = librosa.load(audio_path, sr=16000, mono=True)
inputs = feature_extractor(audio, sampling_rate=16000, return_tensors="pt", padding=True)
with torch.no_grad():
logits = model(**inputs).logits
predicted_id = torch.argmax(logits, dim=-1).item()
emotions = ['Anger', 'Disgust', 'Fear', 'Happiness', 'Neutral', 'Sadness', 'Surprise']
predicted_emotion = emotions[predicted_id]
print(f"Predicted emotion: {predicted_emotion}")
probabilities = torch.softmax(logits, dim=-1)
confidence_scores = {emotion: prob.item() for emotion, prob in zip(emotions, probabilities[0])}
print(f"Confidence scores: {confidence_scores}")
✨ 主要特性
- 基于
microsoft/wavlm-base
微调,可对语音音频进行7种情感分类。
- 支持多数据集训练,具有一定的泛化能力。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
📚 详细文档
模型详情
属性 |
详情 |
模型类型 |
用于序列分类的WavLM-Base |
基础模型 |
microsoft/wavlm-base |
参数数量 |
约9500万个参数 |
语言 |
英语 |
任务 |
从语音音频进行多类情感分类 |
最终训练准确率 |
30.3% |
训练数据
该模型在多样化的多数据集上进行训练,总共使用了18,687个训练样本,并在4,672个验证样本上进行验证:
- MELD:8,906个样本
- CREMA-D:5,950个样本
- TESS:2,305个样本
- RAVDESS:1,145个样本
- SAVEE:381个样本
情感分布(训练集)
- 中性:5,659个样本(30.3%)
- 快乐:3,063个样本(16.4%)
- 愤怒:2,548个样本(13.6%)
- 悲伤:2,173个样本(11.6%)
- 恐惧:1,785个样本(9.6%)
- 厌恶:1,773个样本(9.5%)
- 惊讶:1,686个样本(9.0%)
说话人多样性
- 训练集:380个独特的说话人
- 验证集:283个独特的说话人
- 主要说话人:Ross、Joey、Rachel、Phoebe(来自MELD数据集)
训练过程
训练超参数
- 训练轮数:5
- 批量大小:4
- 学习率:3e-5
- 优化器:AdamW
- 调度器:带热身的线性调度器
- 混合精度:FP16
- 梯度检查点:启用以提高内存效率
数据预处理
- 采样率:16kHz
- 音频长度:填充/截断至最大10秒
- 归一化:应用峰值归一化
- 特征提取:使用Wav2Vec2FeatureExtractor
性能表现
该模型经过5个训练轮次,在验证集上最终准确率达到30.3%。
⚠️ 重要提示
相对较低的准确率表明该模型可能需要:
- 更多的训练轮次
- 不同的超参数
- 额外的数据预处理
- 类别平衡技术
训练历史
轮次 |
训练损失 |
验证损失 |
准确率 |
1 |
1.875 |
1.848 |
30.29% |
2 |
1.877 |
1.847 |
30.29% |
3 |
1.799 |
1.848 |
30.29% |
4 |
1.827 |
1.846 |
30.29% |
5 |
1.877 |
1.846 |
30.29% |
使用的数据集
- MELD(多模态情感对话数据集):用于电视剧对话中的情感识别
- CREMA-D:众包情感多模态演员数据集
- TESS:多伦多情感语音集
- RAVDESS:瑞尔森情感语音和歌曲视听数据库
- SAVEE:萨里视听表达情感数据库
局限性
- 主要在英语语音上进行训练。
- 在训练数据中未充分体现的不同口音或说话风格上,性能可能会有所不同。
- 音频质量和背景噪音会影响性能。
- 模型显示出潜在过拟合的迹象(验证准确率趋于平稳)。
- 由于类别不平衡,可能对中性情感存在偏差。
改进建议
- 延长训练时间:尝试更多的训练轮次,并使用早停策略。
- 学习率调度:使用余弦退火或在性能平稳时降低学习率。
- 数据增强:添加噪声、速度扰动或音高变换。
- 类别平衡:使用加权损失或过采样技术。
- 正则化:添加丢弃层或权重衰减。
伦理考量
本模型应负责任地使用,不得用于以下方面:
- 未经授权的情感检测或监控。
- 在没有适当验证的情况下对个人做出关键决策。
- 可能损害用户隐私或福祉的应用。
引用
如果使用此模型,请引用原始数据集和基础模型:
@article{chen2022wavlm,
title={WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing},
author={Chen, Sanyuan and Wang, Chengyi and Chen, Zhengyang and Wu, Yu and Liu, Shujie and Chen, Zhuo and Li, Jinyu and Kanda, Naoyuki and Yoshioka, Takuya and Xiao, Xiong and others},
journal={IEEE Journal of Selected Topics in Signal Processing},
volume={16},
number={6},
pages={1505--1518},
year={2022},
publisher={IEEE}
}
📄 许可证
本模型采用MIT许可证。