🚀 🎤 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種基本情感。
- 🧠 上下文無關:不考慮語音內容的含義。