项目简介
wav2vec2-xlsr-53-russian-emotion-recognition 是一个音频情感识别项目,专注于通过分析俄语语音识别说话者的情感。该项目由Nikita Davidchuk开发,旨在提高机器学习在语音情感分类任务中的准确性。
项目背景
该项目使用的主要技术是Wav2Vec2,是一种与音频相关的深度学习模型,能够捕获音频特征。该模型适用于情感识别任务,能够区分如愤怒、厌恶、热情、恐惧、快乐、中性和悲伤等情感。
数据集
项目使用的数据集是Russian Emotional Speech Dialogs(俄罗斯情感语音对话)。这个数据集包含丰富的音频数据和相应的情感标签,通过这些数据训练模型,以实现对情感的准确分类。
性能指标
wav2vec2-xlsr-53-russian-emotion-recognition的情感识别准确率为72%。其性能指标包括准确度(accuracy)、精确度(precision)、召回率(recall)以及F1值等,具体如下:
- 愤怒识别的F1值为0.92
- 厌恶识别的F1值为0.74
- 热情识别的F1值为0.62
- 恐惧识别的F1值为0.70
- 快乐识别的F1值为0.68
- 中性识别的F1值为0.72
- 悲伤识别的F1值为0.68
使用说明
项目需借助Python编程环境进行实施,涉及到库如torch、torchaudio、transformers等,并需要通过代码加载模型和特征提取器:
import torch
import torch.nn as nn
import torchaudio
from transformers import AutoConfig, AutoModel, Wav2Vec2FeatureExtractor
def predict(path, sampling_rate):
speech = speech_file_to_array_fn(path, sampling_rate)
inputs = feature_extractor(speech, sampling_rate=sampling_rate, return_tensors="pt", padding=True)
inputs = {key: inputs[key].to(device) for key in inputs}
with torch.no_grad():
logits = model_(**inputs).logits
scores = F.softmax(logits, dim=1).detach().cpu().numpy()[0]
outputs = [{"Emotion": config.id2label[i], "Score": f"{round(score * 100, 3):.1f}%"} for i, score in enumerate(scores)]
return outputs
通过上述代码,用户可以使用项目对语音音频进行情感识别,并输出情感及对应的概率评分。
应用案例
用户可以将存储在路径"/path/to/russian_audio_speech.wav"中的音频文件提交给模型进行情感分析。模型将返回情感识别结果及各情感出现的概率。
result = predict("/path/to/russian_audio_speech.wav", 16000)
print(result)
此简单优雅的实现方案不仅适合科研用途,还可以扩展应用于实际的情感分析任务。
结语
wav2vec2-xlsr-53-russian-emotion-recognition利用强大的音频特征提取技术,帮助计算机更好地理解人类情感,是情感识别研究的重要工具之一。其开源性和高达72%的识别准确率使其具有广泛的应用潜力。