🚀 🎤 Wav2Vec2英文语音情感识别
本项目基于Wav2Vec2架构,专注于英文语音的情感识别。通过对特定模型的微调,能够准确识别多种常见情感,为语音情感分析提供了有效的解决方案。
🚀 快速开始
🔌 安装
pip install transformers torch torchaudio
💻 使用示例
以下是使用该模型对 .wav 格式的英文音频文件进行情感分类的示例代码:
import torch
from transformers import Wav2Vec2ForSequenceClassification, Wav2Vec2FeatureExtractor
import torchaudio
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print("Using device:", device)
model_name = "dihuzz/wav2vec2-ser-english-finetuned"
model = Wav2Vec2ForSequenceClassification.from_pretrained(model_name).to(device)
feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(model_name)
model.eval()
def predict_emotion(audio_path):
waveform, sample_rate = torchaudio.load(audio_path)
if sample_rate != 16000:
resampler = torchaudio.transforms.Resample(orig_freq=sample_rate, new_freq=16000)
waveform = resampler(waveform)
if waveform.shape[0] > 1:
waveform = torch.mean(waveform, dim=0, keepdim=True)
inputs = feature_extractor(
waveform.squeeze().numpy(),
sampling_rate=16000,
return_tensors="pt",
padding=True
)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class_id = torch.argmax(logits, dim=-1).item()
label = model.config.id2label[predicted_class_id]
return label
audio_file = "/path/to/your/audio.wav"
predicted_emotion = predict_emotion(audio_file)
print(f"Predicted Emotion: {predicted_emotion}")
📝 示例输出
模型会返回一个表示预测情感的字符串:
Predicted Emotion: <emotion_label>
✨ 主要特性
- 情感识别能力:能够识别悲伤、愤怒、厌恶、恐惧、快乐和中性六种常见情感。
- 高精度表现:在相关数据集上达到了 92.42% 的准确率。
📦 安装指南
使用以下命令安装所需的库:
pip install transformers torch torchaudio
📚 详细文档
🧠 模型概述
- 模型名称:
dihuzz/wav2vec2-ser-english-finetuned
- 模型功能:该模型基于Wav2Vec2架构进行微调,用于识别英文语音中的情感。可检测的情感包括:
- 😢 悲伤
- 😠 愤怒
- 🤢 厌恶
- 😨 恐惧
- 😊 快乐
- 😐 中性
- 模型创建方式:通过在多个包含英文情感语音样本的著名语音情感识别数据集上微调
r-f/wav2vec-english-speech-emotion-recognition
模型而创建。
📊 性能指标:
🏋️ 训练过程
⚙️ 训练详情
- 基础模型:
r-f/wav2vec-english-speech-emotion-recognition
- 💻 硬件:Kaggle上的P100 GPU
- ⏱ 训练时长:10个epoch
- 📚 学习率:5e-4
- 🧩 批量大小:4
- 📈 梯度累积步数:8
- ⚖️ 优化器:AdamW (β₁=0.9, β₂=0.999)
- 📉 损失函数:交叉熵损失
- ⏳ 学习率调度器:无
📜 训练结果
轮次 |
损失 |
准确率 |
1 |
1.0257 |
61.20% |
2 |
0.7025 |
73.88% |
3 |
0.5901 |
78.25% |
4 |
0.4960 |
81.56% |
5 |
0.4105 |
85.04% |
6 |
0.3516 |
87.70% |
7 |
0.3140 |
88.87% |
8 |
0.2649 |
90.45% |
9 |
0.2178 |
92.42% |
10 |
0.2187 |
92.29% |
🔧 技术细节
该模型基于Wav2Vec2架构,通过在特定数据集上的微调,使其能够适应英文语音情感识别任务。在训练过程中,采用了AdamW优化器和交叉熵损失函数,经过10个epoch的训练,达到了较高的准确率。
⚠️ 局限性
⚠️ 重要提示
该模型存在以下重要局限性:
- 🌐 语言特定性:仅支持英文。
- 🗣️ 方言敏感性:在不同口音上的性能表现有所差异。
- 🎧 音频质量要求:需要干净、清晰的录音。
- ⚖️ 潜在偏差:可能反映训练数据中的文化偏差。
- 6️⃣ 类别有限:仅能检测6种基本情感。
- 🧠 上下文无关:不考虑语音内容的含义。