通用语音情感表示模型开源实现
emotion2vec是一个开源的语音情感表示模型,采用自监督预训练方法提取跨任务、跨语言和跨场景的通用情感特征。该模型在IEMOCAP等数据集上取得了领先性能,并在多语言和多任务上展现出优异表现。项目开源了预训练模型、特征提取工具和下游任务训练脚本,为语音情感分析研究提供了有力支持。
GitHub 仓库:emotion2vec
模型 | ⭐Model Scope | 🤗Hugging Face | 微调数据(小时) |
---|---|---|---|
emotion2vec | 链接 | 链接 | / |
emotion2vec+ seed | 链接 | 链接 | 201 |
emotion2vec+ base | 链接 | 链接 | 4788 |
emotion2vec+ large | 链接 | 链接 | 42526 |
emotion2vec+ 是一系列语音情感识别(SER)基础模型。我们旨在训练一个语音情感识别领域的"whisper",通过数据驱动的方法克服语言和录音环境的影响,实现通用、鲁棒的情感识别能力。emotion2vec+ 的性能显著超过了 Hugging Face 上其他下载量很高的开源模型。
我们提供了3个版本的 emotion2vec+,每个版本都是从其前身的数据衍生而来。如果您需要一个专注于语 音情感表征的模型,请参考 emotion2vec:通用语音情感表征模型。
下图illustrates了迭代过程,最终使用160k小时语音情感数据中的40k小时训练得到 emotion2vec+ large 模型。数据工程的详细信息将稍后公布。
在 EmoBox 上对4类主要情感的性能(无需微调)。模型性能的详细信息将稍后公布。
pip install -U funasr modelscope
''' 使用微调后的情感识别模型 rec_result 包含 {'feats', 'labels', 'scores'} extract_embedding=False:9类情感及其得分 extract_embedding=True:9类情感及其得分,以及特征 9类情感: iic/emotion2vec_plus_seed, iic/emotion2vec_plus_base, iic/emotion2vec_plus_large(2024年5月发布) iic/emotion2vec_base_finetuned(2024年1月发布) 0: 愤怒 1: 厌恶 2: 恐惧 3: 高兴 4: 中性 5: 其他 6: 悲伤 7: 惊讶 8: 未知 ''' from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks inference_pipeline = pipeline( task=Tasks.emotion_recognition, model="iic/emotion2vec_large") # 可选:iic/emotion2vec_plus_seed, iic/emotion2vec_plus_base, iic/emotion2vec_plus_large 和 iic/emotion2vec_base_finetuned rec_result = inference_pipeline('https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav', output_dir="./outputs", granularity="utterance", extract_embedding=False) print(rec_result)
模型将自动下载。
pip install -U funasr
''' 使用微调后的情感识别模型 rec_result 包含 {'feats', 'labels', 'scores'} extract_embedding=False:9类情感及其得分 extract_embedding=True:9类情感及其得分,以及特征 9类情感: iic/emotion2vec_plus_seed, iic/emotion2vec_plus_base, iic/emotion2vec_plus_large(2024年5月发布) iic/emotion2vec_base_finetuned(2024年1月发布) 0: 愤怒 1: 厌恶 2: 恐惧 3: 高兴 4: 中性 5: 其他 6: 悲伤 7: 惊讶 8: 未知 ''' from funasr import AutoModel model = AutoModel(model="iic/emotion2vec_base_finetuned") # 可选:iic/emotion2vec_plus_seed, iic/emotion2vec_plus_base, iic/emotion2vec_plus_large 和 iic/emotion2vec_base_finetuned wav_file = f"{model.model_path}/example/test.wav" rec_result = model.generate(wav_file, output_dir="./outputs", granularity="utterance", extract_embedding=False) print(rec_result)
模型将自动下载。
FunASR 支持 wav.scp(kaldi 风格)的文件列表输入:
wav_name1 wav_path1.wav
wav_name2 wav_path2.wav
...
更多详情请参考 FunASR。
emotion2vec 是首个通用语音情感表征模型。通过自监督预训练,emotion2vec 具备跨任务、跨语言、跨场景提取情感表征的能力。
emotion2vec 仅使用线性层就在主流的 IEMOCAP 数据集上取得了最先进的结果。更多详情请参考论文。