🚀 使用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許可證。