Speech-Emotion-Recognition
Speech-Emotion-Recognition 是一个基于 Keras 和 TensorFlow 2 构建的开源项目,旨在让计算机“听懂”人类语音中的情绪。它通过深度学习算法分析音频文件,自动识别出说话人当下的情感状态,如愤怒、快乐、悲伤或惊讶等,有效解决了传统方法在语音情感特征提取不充分、识别准确率偏低的问题。
该项目不仅支持 LSTM、CNN 等主流深度神经网络,还集成了 SVM 和 MLP 等多种机器学习模型,为开发者提供了丰富的对比实验选择。其核心亮点在于改进了特征提取流程,兼容 Librosa 和 OpenSMILE 工具,能够灵活调用多种国际标准的声学特征集,将识别准确率提升至 80% 左右。此外,项目结构清晰,内置了从数据预处理、模型训练到结果预测的完整流水线,并支持 RAVDESS、EMO-DB 等多个多语言公开数据集。
Speech-Emotion-Recognition 非常适合人工智能研究人员、算法工程师以及希望探索语音交互技术的开发者使用。无论是用于学术研究中的模型对比,还是作为智能客服、情感陪伴机器人等应用的原型开发基础,它都能提供坚实的技术支撑和便捷的复现环境。
使用场景
某智能客服团队正在优化其语音质检系统,试图从海量通话录音中自动识别客户的情绪波动,以发现潜在的服务风险。
没有 Speech-Emotion-Recognition 时
- 人工抽检效率低下:质检员只能依靠肉眼听录音、手动打标签,每天仅能处理几十条数据,无法覆盖全量通话,大量愤怒或失望的客户声音被遗漏。
- 情绪判断主观性强:不同质检员对“生气”和“烦躁”的界定标准不一,导致统计结果波动大,难以形成客观的数据报表供管理层决策。
- 技术落地门槛高:若想自研算法,团队需从头搭建 LSTM 或 CNN 模型并调试特征提取(如 Librosa/OpenSMILE),开发周期长达数月且准确率难以保证。
- 多模型对比困难:缺乏统一框架快速验证 SVM、MLP 等不同算法在特定业务数据上的表现,难以找到最优解。
使用 Speech-Emotion-Recognition 后
- 全量自动化分析:利用预置的 LSTM 和 CNN 模型批量处理录音,几分钟内即可完成数千条通话的情感分类(如愤怒、悲伤、中性),实现 100% 覆盖。
- 标准化量化输出:基于改进的特征提取方式,系统将模糊的语气转化为准确率约 80% 的客观标签,统一了“愤怒”等情绪的判定标准。
- 快速部署与验证:通过简单的 YAML 配置即可切换 Librosa 或 OpenSMILE 特征集,并直接调用训练好的权重进行预测,将原本数月的研发工作缩短至几天。
- 灵活模型优选:内置 DNN、SVM、MLP 等多种架构,团队可迅速在自有数据集上对比效果,轻松锁定最适合当前业务场景的模型。
Speech-Emotion-Recognition 将原本依赖人工经验的感性判断,转化为高效、客观且可规模化的数据洞察,显著提升了客服质量管理的响应速度与精度。
运行环境要求
未说明
未说明

快速开始
语音情感识别
使用 LSTM、CNN、SVM 和 MLP 进行语音情感识别,基于 Keras 实现。
通过改进特征提取方法,识别准确率提升至约 80%。原始版本的代码已归档在 First-Version 分支。
英文文档 | 中文文档
环境
- Python 3.8
- Keras & TensorFlow 2
结构
├── models/ // 模型实现
│ ├── common.py // 所有模型的基类
│ ├── dnn // 神经网络模型
│ │ ├── dnn.py // 所有神经网络模型的基类
│ │ ├── cnn.py // CNN
│ │ └── lstm.py // LSTM
│ └── ml.py // SVM & MLP
├── extract_feats/ // 特征提取
│ ├── librosa.py // librosa 提取特征
│ └── opensmile.py // Opensmile 提取特征
├── utils/
│ ├── files.py // 用于整理数据集(分类、批量重命名)
│ ├── opts.py // 使用 argparse 从命令行读入参数
│ └── plot.py // 绘图(雷达图、频谱图、波形图)
├── config/ // 配置参数(.yaml)
├── features/ // 存储提取好的特征
├── checkpoints/ // 存储训练好的模型权重
├── train.py // 训练模型
├── predict.py // 用训练好的模型预测指定音频的情感
└── preprocess.py // 数据预处理(提取数据集中音频的特征并保存)
依赖
Python
- TensorFlow 2 / Keras:LSTM & CNN (
tensorflow.keras) - scikit-learn:SVM & MLP 模型,划分训练集和测试集
- joblib:保存和加载用 scikit-learn 训练的模型
- librosa:提取特征、波形图
- SciPy:频谱图
- pandas:加载特征
- Matplotlib:绘图
- NumPy
工具
- [可选] Opensmile:提取特征
数据集
-
英文,24 个人(12 名男性,12 名女性)的大约 1500 个音频,表达了 8 种不同的情绪(第三位数字表示情绪类别):01 = neutral,02 = calm,03 = happy,04 = sad,05 = angry,06 = fearful,07 = disgust,08 = surprised。
-
英文,4 个人(男性)的大约 500 个音频,表达了 7 种不同的情绪(第一个字母表示情绪类别):a = anger,d = disgust,f = fear,h = happiness,n = neutral,sa = sadness,su = surprise。
-
德语,10 个人(5 名男性,5 名女性)的大约 500 个音频,表达了 7 种不同的情绪(倒数第二个字母表示情绪类别):N = neutral,W = angry,A = fear,F = happy,T = sad,E = disgust,L = boredom。
CASIA
汉语,4 个人(2 名男性,2 名女性)的大约 1200 个音频,表达了 6 种不同的情绪:neutral,happy,sad,angry,fearful,surprised。
使用方法
准备
安装依赖:
pip install -r requirements.txt
(可选)安装 Opensmile。
配置
在 configs/ 文件夹中的配置文件(YAML)里配置参数。
其中 Opensmile 标准特征集目前只支持:
IS09_emotion:The INTERSPEECH 2009 Emotion Challenge,384 个特征;IS10_paraling:The INTERSPEECH 2010 Paralinguistic Challenge,1582 个特征;IS11_speaker_state:The INTERSPEECH 2011 Speaker State Challenge,4368 个特征;IS12_speaker_trait:The INTERSPEECH 2012 Speaker Trait Challenge,6125 个特征;IS13_ComParE:The INTERSPEECH 2013 ComParE Challenge,6373 个特征;ComParE_2016:The INTERSPEECH 2016 Computational Paralinguistics Challenge,6373 个特征。
如果需要用其他特征集,可以自行修改 extract_feats/opensmile.py 中的 FEATURE_NUM 项。
预处理
首先需要提取数据集中音频的特征并保存到本地。Opensmile 提取的特征会被保存在 .csv 文件中,librosa 提取的特征会被保存在 .p 文件中。
python preprocess.py --config configs/example.yaml
其中,configs/example.yaml 是你的配置文件路径。
训练
数据集路径可以在 configs/ 中配置,相同情感的音频放在同一个文件夹里(可以参考 utils/files.py 整理数据),如:
└── datasets
├── angry
├── happy
├── sad
...
然后:
python train.py --config configs/example.yaml
预测
用训练好的模型来预测指定音频的情感。checkpoints/里有一些已经训练好的模型。
python predict.py --config configs/example.yaml
功能
雷达图
绘制预测概率的雷达图。
来源:Radar
import utils
"""
Args:
data_prob (np.ndarray): 概率数组
class_labels (list): 情感标签
"""
utils.radar(data_prob, class_labels)
播放音频
播放一段音频
import utils
utils.play_audio(file_path)
绘制曲线
绘制训练过程中的准确率曲线和损失曲线。
import utils
"""
Args:
train (list): 训练集损失值或准确率数组
val (list): 测试集损失值或准确率数组
title (str): 图像标题
y_label (str): y 轴标题
"""
utils.curve(train, val, title, y_label)
波形图
绘制音频的波形图。
import utils
utils.waveform(file_path)
音频频谱图
绘制音频的频谱图。
import utils
utils.spectrogram(file_path)
其他贡献者
常见问题
相似工具推荐
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
Real-Time-Voice-Cloning
Real-Time-Voice-Cloning 是一款开源的实时语音克隆工具,旨在通过短短 5 秒的音频样本,快速复刻说话人的声音特征,并即时生成任意文本的语音内容。它有效解决了传统语音合成需要大量训练数据且无法实时响应的痛点,让个性化语音生成变得轻量且高效。 该项目的核心技术基于 SV2TTS(从说话人验证到多说话人文本转语音的迁移学习)深度学习框架。其工作流程分为三个阶段:首先从少量音频中提取说话人的数字声纹表示,随后将其作为参考,结合 Tacotron 合成器与 WaveRNN 声码器,高质量地生成目标语音。这种架构不仅实现了端到端的语音合成,还保证了在普通硬件上的实时运行能力。 Real-Time-Voice-Cloning 非常适合开发者、人工智能研究人员以及对语音技术感兴趣的技术爱好者使用。开发者可以将其集成到互动应用中,研究人员可借此探索语音迁移学习的前沿进展,而具备一定动手能力的普通用户也能通过提供的图形界面工具箱,轻松体验“声音复制”的乐趣。尽管目前已有商业服务在音质上表现更佳,但作为一款免费开源项目,它依然是理解和学习实时语音合成技术的绝佳入门资源。
GPT-SoVITS
GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。
MoneyPrinterTurbo
MoneyPrinterTurbo 是一款利用 AI 大模型技术,帮助用户一键生成高清短视频的开源工具。只需输入一个视频主题或关键词,它就能全自动完成从文案创作、素材匹配、字幕合成到背景音乐搭配的全过程,最终输出完整的竖屏或横屏短视频。 这款工具主要解决了传统视频制作流程繁琐、门槛高以及素材版权复杂等痛点。无论是需要快速产出内容的自媒体创作者,还是希望尝试视频生成的普通用户,无需具备专业的剪辑技能或昂贵的硬件配置(普通电脑即可运行),都能轻松上手。同时,其清晰的 MVC 架构和对多种主流大模型(如 DeepSeek、Moonshot、通义千问等)的广泛支持,也使其成为开发者进行二次开发或技术研究的理想底座。 MoneyPrinterTurbo 的独特亮点在于其高度的灵活性与本地化友好性。它不仅支持中英文双语及多种语音合成,允许用户精细调整字幕样式和画面比例,还特别优化了国内网络环境下的模型接入方案,让用户无需依赖 VPN 即可使用高性能国产大模型。此外,工具提供批量生成模式,可一次性产出多个版本供用户择优,极大地提升了内容创作的效率与质量。
oh-my-openagent
oh-my-openagent(简称 omo)是一款强大的开源智能体编排框架,前身名为 oh-my-opencode。它致力于打破单一模型供应商的生态壁垒,解决开发者在构建 AI 应用时面临的“厂商锁定”难题。不同于仅依赖特定模型的封闭方案,omo 倡导开放市场理念,支持灵活调度多种主流大模型:利用 Claude、Kimi 或 GLM 进行任务编排,调用 GPT 处理复杂推理,借助 Minimax 提升响应速度,或发挥 Gemini 的创意优势。 这款工具特别适合希望摆脱平台限制、追求极致性能与成本平衡的开发者及研究人员使用。通过统一接口,用户可以轻松组合不同模型的长处,构建更高效、更具适应性的智能体系统。其独特的技术亮点在于“全模型兼容”架构,让用户不再受制于某一家公司的策略变动或定价调整,真正实现对前沿模型资源的自由驾驭。无论是构建自动化编码助手,还是开发多步骤任务处理流程,oh-my-openagent 都能提供灵活且稳健的基础设施支持,助力用户在快速演进的 AI 生态中保持技术主动权。