ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

emotion-recognition-using-speech原理深挖:音频信号如何一步步转化为情感预测结果

emotion-recognition-using-speech原理深挖:音频信号如何一步步转化为情感预测结果 emotion-recognition-using-speech原理深挖音频信号如何一步步转化为情感预测结果【免费下载链接】emotion-recognition-using-speechBuilding and training Speech Emotion Recognizer that predicts human emotions using Python, Sci-kit learn and Keras项目地址: https://gitcode.com/gh_mirrors/em/emotion-recognition-using-speech你是否好奇过机器凭什么能听出一个人说话时是开心还是难过emotion-recognition-using-speech 就是一个用 Python、Sci-kit learn 和 Keras 构建的语音情感识别开源项目它把一段普通的 WAV 音频经过特征提取、模型训练、概率预测等环节最终输出 happy、sad、neutral 这样的情感标签。本文不贴大段代码只带你走一遍这条从声波到情绪的完整流水线搞懂语音情感识别原理的全过程。上图就是本项目绘制的性能对比图横轴是训练集大小1%、10%、100%分别展示训练时间、准确率与 F-score可以直观看到不同算法在数据量增长后的表现差异——这正是下面要拆解的模型选择环节。第一步数据从哪来语音情感识别数据集准备任何机器学习项目都始于数据。本项目准备了四大语音情感识别数据集全部放在data目录下EMO-DB柏林情感语音库位于data/emodb/wav/文件名第 6 个字符就是情感编码如 Fhappy、Tsad、Nneutral。RAVDESS 与 TESS英文情感语音库按演员分目录存放在data/training/与data/validation/。自定义数据集data/train-custom/与data/test-custom/只需在文件名末尾用下划线标注情感如soumaya3_happy.wav即可自动识别方便你录自己的声音扩充语料。create_csv.py 负责把这些散落的音频文件扫描一遍生成记录音频路径 情感标签的 CSV 元数据文件相当于给数据建了个索引。默认支持 9 种情感neutral中性、calm平静、happy开心、sad悲伤、angry愤怒、fear恐惧、disgust厌恶、ps惊喜和 boredom无聊。第二步音频特征提取——机器听懂语音的关键环节音频文件对计算机来说只是一长串数字采样直接喂给模型效果很差。因此特征提取是语音情感识别系统的核心步骤本项目用 librosa 从每个音频里抽取多种特征核心逻辑在 utils.py 的extract_feature()函数中MFCC梅尔频率倒谱系数模拟人耳听觉特性是语音情感识别最常用的特征取 40 维。Chroma色度特征刻画音高与和弦结构对旋律情绪敏感。MEL 频谱梅尔刻度的频谱能量分布体现音色与响度变化。此外还支持 Contrast频谱对比度和 Tonnetz音调质心作为可选项。所有特征按帧计算后取均值拼成一维向量。加载音频时若格式不标准非 16kHz 单声道还会自动用 ffmpeg 转换确保输入统一。第三步特征缓存与数据平衡data_extractor.py 里的AudioExtractor类负责读取 CSV、批量提取特征并把结果缓存为.npy文件存放在features/目录——比如train_mfcc-chroma-mel_HNS_2473.npy文件名里就包含了特征组合、情感类别首字母和样本数量。下次运行时直接加载缓存省去重复计算。同时项目会对数据集做平衡处理以样本最少的类别为基准截取各情感等量的样本避免模型被多数类带偏这一步对分类准确率影响很大。第四步模型训练与网格搜索选出最优分类器特征就绪后进入模型环节。emotion_recognition.py 定义了核心类EmotionRecognizer支持 SVC、随机森林、梯度提升、KNN、MLP、Bagging 等 7 种分类器也支持回归版本。但到底哪个模型最合适这要靠 grid_search.py 配合 parameters.py 里的参数表做 GridSearchCV 交叉验证遍历每种算法的超参数组合如 SVM 的 C 与 kernel、随机森林的树数量与深度耗时可能长达数小时。搜索结束后最佳模型会被序列化保存到grid/best_classifiers.pickle和grid/best_regressors.pickle之后determine_best_model()会自动加载并在测试集上选出表现最优的一个。第五步预测一条音频的完整流程训练完成后预测单条音频的流程非常清晰predict()方法内部就三步用同样的参数对音频执行特征提取把特征向量 reshape 成模型期望的形状调用model.predict()得到情感标签。更进一步predict_proba()还能输出每个情感的概率分布例如{angry: 0.99, neutral: 0.01, ...}让结果不仅是什么更有多确定。深度玩法用 LSTM 循环神经网络做语音情感识别传统机器学习之外deep_emotion_recognition.py 提供了基于 Keras 的DeepEmotionRecognizer它继承了前面的类但把模型换成了LSTM / GRU 循环神经网络默认 2 层 RNN每层 128 个单元 2 层全连接配合 Dropout 防止过拟合输出层用 softmax 得到情感概率。因为语音本质上是时序信号RNN 能捕捉前后文的情感起伏在 5 类情感任务上测试准确率约 77%。模型训练时还接入了 ModelCheckpoint 与 TensorBoard 回调自动保存最优权重也方便在浏览器里观察训练曲线。实战用麦克风实时测你的情绪想亲身体验运行python test.py对着麦克风说一句话程序会先用 pyaudio 采集声音、做静音检测与音量归一化保存为test.wav再交给模型预测几秒后屏幕上就打出你的情绪标签。你也可以用-e参数自定义要识别的情感集合用-m切换不同模型。小结从 WAV 声波到情感结论emotion-recognition-using-speech 走完了标准的数据整理 → 特征提取 → 特征缓存 → 网格搜索选模 → 训练预测链路。理解这条流水线后你完全可以替换成自己的数据集、自定义特征组合甚至用DeepEmotionRecognizer改造成更复杂的深度学习模型。想动手实践把仓库 clone 下来按requirements.txt装好依赖从三分类的sad / neutral / happy开始你的语音情感识别之旅吧。【免费下载链接】emotion-recognition-using-speechBuilding and training Speech Emotion Recognizer that predicts human emotions using Python, Sci-kit learn and Keras项目地址: https://gitcode.com/gh_mirrors/em/emotion-recognition-using-speech创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表