[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-Renovamen--Speech-Emotion-Recognition":3,"similar-Renovamen--Speech-Emotion-Recognition":105},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":9,"readme_en":10,"readme_zh":11,"quickstart_zh":12,"use_case_zh":13,"hero_image_url":14,"owner_login":15,"owner_name":16,"owner_avatar_url":17,"owner_bio":18,"owner_company":19,"owner_location":20,"owner_email":21,"owner_twitter":22,"owner_website":23,"owner_url":24,"languages":25,"stars":30,"forks":31,"last_commit_at":32,"license":33,"difficulty_score":34,"env_os":35,"env_gpu":36,"env_ram":36,"env_deps":37,"category_tags":51,"github_topics":54,"view_count":34,"oss_zip_url":61,"oss_zip_packed_at":61,"status":62,"created_at":63,"updated_at":64,"faqs":65,"releases":104},10030,"Renovamen\u002FSpeech-Emotion-Recognition","Speech-Emotion-Recognition","Speech emotion recognition implemented in Keras (LSTM, CNN, SVM, MLP) | 语音情感识别","Speech-Emotion-Recognition 是一个基于 Keras 和 TensorFlow 2 构建的开源项目，旨在让计算机“听懂”人类语音中的情绪。它通过深度学习算法分析音频文件，自动识别出说话人当下的情感状态，如愤怒、快乐、悲伤或惊讶等，有效解决了传统方法在语音情感特征提取不充分、识别准确率偏低的问题。\n\n该项目不仅支持 LSTM、CNN 等主流深度神经网络，还集成了 SVM 和 MLP 等多种机器学习模型，为开发者提供了丰富的对比实验选择。其核心亮点在于改进了特征提取流程，兼容 Librosa 和 OpenSMILE 工具，能够灵活调用多种国际标准的声学特征集，将识别准确率提升至 80% 左右。此外，项目结构清晰，内置了从数据预处理、模型训练到结果预测的完整流水线，并支持 RAVDESS、EMO-DB 等多个多语言公开数据集。\n\nSpeech-Emotion-Recognition 非常适合人工智能研究人员、算法工程师以及希望探索语音交互技术的开发者使用。无论是用于学术研究中的模型对比，还是作为智能客服、情感陪伴机器人等应用的原型开发基础，它都能提供坚实的技术支撑和便","Speech-Emotion-Recognition 是一个基于 Keras 和 TensorFlow 2 构建的开源项目，旨在让计算机“听懂”人类语音中的情绪。它通过深度学习算法分析音频文件，自动识别出说话人当下的情感状态，如愤怒、快乐、悲伤或惊讶等，有效解决了传统方法在语音情感特征提取不充分、识别准确率偏低的问题。\n\n该项目不仅支持 LSTM、CNN 等主流深度神经网络，还集成了 SVM 和 MLP 等多种机器学习模型，为开发者提供了丰富的对比实验选择。其核心亮点在于改进了特征提取流程，兼容 Librosa 和 OpenSMILE 工具，能够灵活调用多种国际标准的声学特征集，将识别准确率提升至 80% 左右。此外，项目结构清晰，内置了从数据预处理、模型训练到结果预测的完整流水线，并支持 RAVDESS、EMO-DB 等多个多语言公开数据集。\n\nSpeech-Emotion-Recognition 非常适合人工智能研究人员、算法工程师以及希望探索语音交互技术的开发者使用。无论是用于学术研究中的模型对比，还是作为智能客服、情感陪伴机器人等应用的原型开发基础，它都能提供坚实的技术支撑和便捷的复现环境。","# Speech Emotion Recognition \n\n用 LSTM、CNN、SVM、MLP 进行语音情感识别，Keras 实现。\n\n改进了特征提取方式，识别准确率提高到了 80% 左右。原来的版本的存档在 [First-Version 分支](https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Ftree\u002FFirst-Version)。\n\n[English Document](README_EN.md) | 中文文档\n\n\n&nbsp;\n\n## Environments\n\n- Python 3.8\n- Keras & TensorFlow 2\n\n\n&nbsp;\n\n## Structure\n\n```\n├── models\u002F                \u002F\u002F 模型实现\n│   ├── common.py          \u002F\u002F 所有模型的基类\n│   ├── dnn                \u002F\u002F 神经网络模型\n│   │   ├── dnn.py         \u002F\u002F 所有神经网络模型的基类\n│   │   ├── cnn.py         \u002F\u002F CNN\n│   │   └── lstm.py        \u002F\u002F LSTM\n│   └── ml.py              \u002F\u002F SVM & MLP\n├── extract_feats\u002F         \u002F\u002F 特征提取\n│   ├── librosa.py         \u002F\u002F librosa 提取特征\n│   └── opensmile.py       \u002F\u002F Opensmile 提取特征\n├── utils\u002F\n│   ├── files.py           \u002F\u002F 用于整理数据集（分类、批量重命名）\n│   ├── opts.py            \u002F\u002F 使用 argparse 从命令行读入参数\n│   └── plot.py            \u002F\u002F 绘图（雷达图、频谱图、波形图）\n├── config\u002F                \u002F\u002F 配置参数（.yaml）\n├── features\u002F              \u002F\u002F 存储提取好的特征\n├── checkpoints\u002F           \u002F\u002F 存储训练好的模型权重\n├── train.py               \u002F\u002F 训练模型\n├── predict.py             \u002F\u002F 用训练好的模型预测指定音频的情感\n└── preprocess.py          \u002F\u002F 数据预处理（提取数据集中音频的特征并保存）\n```\n\n\n&nbsp;\n\n## Requirments\n\n### Python\n\n- [TensorFlow 2](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensorflow) \u002F [Keras](https:\u002F\u002Fgithub.com\u002Fkeras-team\u002Fkeras)：LSTM & CNN (`tensorflow.keras`)\n- [scikit-learn](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn)：SVM & MLP 模型，划分训练集和测试集\n- [joblib](https:\u002F\u002Fgithub.com\u002Fjoblib\u002Fjoblib)：保存和加载用 scikit-learn 训练的模型\n- [librosa](https:\u002F\u002Fgithub.com\u002Flibrosa\u002Flibrosa)：提取特征、波形图\n- [SciPy](https:\u002F\u002Fgithub.com\u002Fscipy\u002Fscipy)：频谱图\n- [pandas](https:\u002F\u002Fgithub.com\u002Fpandas-dev\u002Fpandas)：加载特征\n- [Matplotlib](https:\u002F\u002Fgithub.com\u002Fmatplotlib\u002Fmatplotlib)：绘图\n- [NumPy](https:\u002F\u002Fgithub.com\u002Fnumpy\u002Fnumpy)\n\n### Tools\n\n- [可选] [Opensmile](https:\u002F\u002Fgithub.com\u002Fnaxingyu\u002Fopensmile)：提取特征\n\n\n&nbsp;\n\n## Datasets\n\n1. [RAVDESS](https:\u002F\u002Fzenodo.org\u002Frecord\u002F1188976)\n\n   英文，24 个人（12 名男性，12 名女性）的大约 1500 个音频，表达了 8 种不同的情绪（第三位数字表示情绪类别）：01 = neutral，02 = calm，03 = happy，04 = sad，05 = angry，06 = fearful，07 = disgust，08 = surprised。\n\n2. [SAVEE](http:\u002F\u002Fkahlan.eps.surrey.ac.uk\u002Fsavee\u002FDownload.html)\n\n   英文，4 个人（男性）的大约 500 个音频，表达了 7 种不同的情绪（第一个字母表示情绪类别）：a = anger，d = disgust，f = fear，h = happiness，n = neutral，sa = sadness，su = surprise。\n\n3. [EMO-DB](http:\u002F\u002Fwww.emodb.bilderbar.info\u002Fdownload\u002F)\n\n   德语，10 个人（5 名男性，5 名女性）的大约 500 个音频，表达了 7 种不同的情绪（倒数第二个字母表示情绪类别）：N = neutral，W = angry，A = fear，F = happy，T = sad，E = disgust，L = boredom。\n\n4. CASIA\n\n   汉语，4 个人（2 名男性，2 名女性）的大约 1200 个音频，表达了 6 种不同的情绪：neutral，happy，sad，angry，fearful，surprised。\n\n\n&nbsp;\n\n## Usage\n\n### Prepare\n\n安装依赖：\n\n```python\npip install -r requirements.txt\n```\n\n（可选）安装 [Opensmile](https:\u002F\u002Fgithub.com\u002Fnaxingyu\u002Fopensmile)。\n\n&nbsp;\n\n### Configuration\n\n在 [`configs\u002F`](https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Ftree\u002Fmaster\u002Fconfigs) 文件夹中的配置文件（YAML）里配置参数。\n\n其中 Opensmile 标准特征集目前只支持：\n\n- `IS09_emotion`：[The INTERSPEECH 2009 Emotion Challenge](http:\u002F\u002Fmediatum.ub.tum.de\u002Fdoc\u002F980035\u002F292947.pdf)，384 个特征；\n- `IS10_paraling`：[The INTERSPEECH 2010 Paralinguistic Challenge](https:\u002F\u002Fsail.usc.edu\u002Fpublications\u002Ffiles\u002Fschuller2010_interspeech.pdf)，1582 个特征；\n- `IS11_speaker_state`：[The INTERSPEECH 2011 Speaker State Challenge](https:\u002F\u002Fwww.phonetik.uni-muenchen.de\u002Fforschung\u002Fpublikationen\u002FSchuller-IS2011.pdf)，4368 个特征；\n- `IS12_speaker_trait`：[The INTERSPEECH 2012 Speaker Trait Challenge](http:\u002F\u002Fwww5.informatik.uni-erlangen.de\u002FForschung\u002FPublikationen\u002F2012\u002FSchuller12-TI2.pdf)，6125 个特征；\n- `IS13_ComParE`：[The INTERSPEECH 2013 ComParE Challenge](http:\u002F\u002Fwww.dcs.gla.ac.uk\u002F~vincia\u002Fpapers\u002Fcompare.pdf)，6373 个特征；\n- `ComParE_2016`：[The INTERSPEECH 2016 Computational Paralinguistics Challenge](http:\u002F\u002Fwww.tangsoo.de\u002Fdocuments\u002FPublications\u002FSchuller16-TI2.pdf)，6373 个特征。\n\n如果需要用其他特征集，可以自行修改 [`extract_feats\u002Fopensmile.py`](extract_feats\u002Fopensmile.py) 中的 `FEATURE_NUM` 项。\n\n&nbsp;\n\n### Preprocess\n\n首先需要提取数据集中音频的特征并保存到本地。Opensmile 提取的特征会被保存在 `.csv` 文件中，librosa 提取的特征会被保存在 `.p` 文件中。\n\n```python\npython preprocess.py --config configs\u002Fexample.yaml\n```\n其中，`configs\u002Fexample.yaml` 是你的配置文件路径。\n\n&nbsp;\n\n### Train\n\n数据集路径可以在 [`configs\u002F`](configs) 中配置，相同情感的音频放在同一个文件夹里（可以参考 [`utils\u002Ffiles.py`](utils\u002Ffiles.py) 整理数据），如：\n\n```\n└── datasets\n    ├── angry\n    ├── happy\n    ├── sad\n    ...\n```\n\n然后：\n\n```python\npython train.py --config configs\u002Fexample.yaml\n```\n\n&nbsp;\n\n### Predict\n\n用训练好的模型来预测指定音频的情感。[`checkpoints\u002F`](checkpoints)里有一些已经训练好的模型。\n\n```python\npython predict.py --config configs\u002Fexample.yaml\n```\n\n\n&nbsp;\n\n### Functions\n\n#### Radar Chart\n\n画出预测概率的雷达图。\n\n来源：[Radar](https:\u002F\u002Fgithub.com\u002FZhaofan-Su\u002FSpeechEmotionRecognition\u002Fblob\u002Fmaster\u002Fleidatu.py)\n\n```python\nimport utils\n\n\"\"\"\nArgs:\n    data_prob (np.ndarray): 概率数组\n    class_labels (list): 情感标签\n\"\"\"\nutils.radar(data_prob, class_labels)\n```\n\n&nbsp;\n\n#### Play Audio\n\n播放一段音频\n\n```python\nimport utils\n\nutils.play_audio(file_path)\n```\n\n&nbsp;\n\n#### Plot Curve\n\n画训练过程的准确率曲线和损失曲线。\n\n```python\nimport utils\n\n\"\"\"\nArgs:\n    train (list): 训练集损失值或准确率数组\n    val (list): 测试集损失值或准确率数组\n    title (str): 图像标题\n    y_label (str): y 轴标题\n\"\"\"\nutils.curve(train, val, title, y_label)\n```\n\n&nbsp;\n\n#### Waveform\n\n画出音频的波形图。\n\n```python\nimport utils\n\nutils.waveform(file_path)\n```\n\n&nbsp;\n\n#### Spectrogram\n\n画出音频的频谱图。\n\n```python\nimport utils\n\nutils.spectrogram(file_path)\n```\n\n\n&nbsp;\n\n## Other Contributors\n\n- [@Zhaofan-Su](https:\u002F\u002Fgithub.com\u002FZhaofan-Su)\n- [@Guo Hui](https:\u002F\u002Fgithub.com\u002Fguohui15661353950)\n","# 语音情感识别\n\n使用 LSTM、CNN、SVM 和 MLP 进行语音情感识别，基于 Keras 实现。\n\n通过改进特征提取方法，识别准确率提升至约 80%。原始版本的代码已归档在 [First-Version 分支](https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Ftree\u002FFirst-Version)。\n\n[英文文档](README_EN.md) | 中文文档\n\n\n&nbsp;\n\n## 环境\n\n- Python 3.8\n- Keras & TensorFlow 2\n\n\n&nbsp;\n\n## 结构\n\n```\n├── models\u002F                \u002F\u002F 模型实现\n│   ├── common.py          \u002F\u002F 所有模型的基类\n│   ├── dnn                \u002F\u002F 神经网络模型\n│   │   ├── dnn.py         \u002F\u002F 所有神经网络模型的基类\n│   │   ├── cnn.py         \u002F\u002F CNN\n│   │   └── lstm.py        \u002F\u002F LSTM\n│   └── ml.py              \u002F\u002F SVM & MLP\n├── extract_feats\u002F         \u002F\u002F 特征提取\n│   ├── librosa.py         \u002F\u002F librosa 提取特征\n│   └── opensmile.py       \u002F\u002F Opensmile 提取特征\n├── utils\u002F\n│   ├── files.py           \u002F\u002F 用于整理数据集（分类、批量重命名）\n│   ├── opts.py            \u002F\u002F 使用 argparse 从命令行读入参数\n│   └── plot.py            \u002F\u002F 绘图（雷达图、频谱图、波形图）\n├── config\u002F                \u002F\u002F 配置参数（.yaml）\n├── features\u002F              \u002F\u002F 存储提取好的特征\n├── checkpoints\u002F           \u002F\u002F 存储训练好的模型权重\n├── train.py               \u002F\u002F 训练模型\n├── predict.py             \u002F\u002F 用训练好的模型预测指定音频的情感\n└── preprocess.py          \u002F\u002F 数据预处理（提取数据集中音频的特征并保存）\n```\n\n\n&nbsp;\n\n## 依赖\n\n### Python\n\n- [TensorFlow 2](https:\u002F\u002Fgithub.com\u002Ftensorflow\u002Ftensorflow) \u002F [Keras](https:\u002F\u002Fgithub.com\u002Fkeras-team\u002Fkeras)：LSTM & CNN (`tensorflow.keras`)\n- [scikit-learn](https:\u002F\u002Fgithub.com\u002Fscikit-learn\u002Fscikit-learn)：SVM & MLP 模型，划分训练集和测试集\n- [joblib](https:\u002F\u002Fgithub.com\u002Fjoblib\u002Fjoblib)：保存和加载用 scikit-learn 训练的模型\n- [librosa](https:\u002F\u002Fgithub.com\u002Flibrosa\u002Flibrosa)：提取特征、波形图\n- [SciPy](https:\u002F\u002Fgithub.com\u002Fscipy\u002Fscipy)：频谱图\n- [pandas](https:\u002F\u002Fgithub.com\u002Fpandas-dev\u002Fpandas)：加载特征\n- [Matplotlib](https:\u002F\u002Fgithub.com\u002Fmatplotlib\u002Fmatplotlib)：绘图\n- [NumPy](https:\u002F\u002Fgithub.com\u002Fnumpy\u002Fnumpy)\n\n### 工具\n\n- [可选] [Opensmile](https:\u002F\u002Fgithub.com\u002Fnaxingyu\u002Fopensmile)：提取特征\n\n\n&nbsp;\n\n## 数据集\n\n1. [RAVDESS](https:\u002F\u002Fzenodo.org\u002Frecord\u002F1188976)\n\n   英文，24 个人（12 名男性，12 名女性）的大约 1500 个音频，表达了 8 种不同的情绪（第三位数字表示情绪类别）：01 = neutral，02 = calm，03 = happy，04 = sad，05 = angry，06 = fearful，07 = disgust，08 = surprised。\n\n2. [SAVEE](http:\u002F\u002Fkahlan.eps.surrey.ac.uk\u002Fsavee\u002FDownload.html)\n\n   英文，4 个人（男性）的大约 500 个音频，表达了 7 种不同的情绪（第一个字母表示情绪类别）：a = anger，d = disgust，f = fear，h = happiness，n = neutral，sa = sadness，su = surprise。\n\n3. [EMO-DB](http:\u002F\u002Fwww.emodb.bilderbar.info\u002Fdownload\u002F)\n\n   德语，10 个人（5 名男性，5 名女性）的大约 500 个音频，表达了 7 种不同的情绪（倒数第二个字母表示情绪类别）：N = neutral，W = angry，A = fear，F = happy，T = sad，E = disgust，L = boredom。\n\n4. CASIA\n\n   汉语，4 个人（2 名男性，2 名女性）的大约 1200 个音频，表达了 6 种不同的情绪：neutral，happy，sad，angry，fearful，surprised。\n\n\n&nbsp;\n\n## 使用方法\n\n### 准备\n\n安装依赖：\n\n```python\npip install -r requirements.txt\n```\n\n（可选）安装 [Opensmile](https:\u002F\u002Fgithub.com\u002Fnaxingyu\u002Fopensmile)。\n\n&nbsp;\n\n### 配置\n\n在 [`configs\u002F`](https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Ftree\u002Fmaster\u002Fconfigs) 文件夹中的配置文件（YAML）里配置参数。\n\n其中 Opensmile 标准特征集目前只支持：\n\n- `IS09_emotion`：[The INTERSPEECH 2009 Emotion Challenge](http:\u002F\u002Fmediatum.ub.tum.de\u002Fdoc\u002F980035\u002F292947.pdf)，384 个特征；\n- `IS10_paraling`：[The INTERSPEECH 2010 Paralinguistic Challenge](https:\u002F\u002Fsail.usc.edu\u002Fpublications\u002Ffiles\u002Fschuller2010_interspeech.pdf)，1582 个特征；\n- `IS11_speaker_state`：[The INTERSPEECH 2011 Speaker State Challenge](https:\u002F\u002Fwww.phonetik.uni-muenchen.de\u002Fforschung\u002Fpublikationen\u002FSchuller-IS2011.pdf)，4368 个特征；\n- `IS12_speaker_trait`：[The INTERSPEECH 2012 Speaker Trait Challenge](http:\u002F\u002Fwww5.informatik.uni-erlangen.de\u002FForschung\u002FPublikationen\u002F2012\u002FSchuller12-TI2.pdf)，6125 个特征；\n- `IS13_ComParE`：[The INTERSPEECH 2013 ComParE Challenge](http:\u002F\u002Fwww.dcs.gla.ac.uk\u002F~vincia\u002Fpapers\u002Fcompare.pdf)，6373 个特征；\n- `ComParE_2016`：[The INTERSPEECH 2016 Computational Paralinguistics Challenge](http:\u002F\u002Fwww.tangsoo.de\u002Fdocuments\u002FPublications\u002FSchuller16-TI2.pdf)，6373 个特征。\n\n如果需要用其他特征集，可以自行修改 [`extract_feats\u002Fopensmile.py`](extract_feats\u002Fopensmile.py) 中的 `FEATURE_NUM` 项。\n\n&nbsp;\n\n### 预处理\n\n首先需要提取数据集中音频的特征并保存到本地。Opensmile 提取的特征会被保存在 `.csv` 文件中，librosa 提取的特征会被保存在 `.p` 文件中。\n\n```python\npython preprocess.py --config configs\u002Fexample.yaml\n```\n其中，`configs\u002Fexample.yaml` 是你的配置文件路径。\n\n&nbsp;\n\n### 训练\n\n数据集路径可以在 [`configs\u002F`](configs) 中配置，相同情感的音频放在同一个文件夹里（可以参考 [`utils\u002Ffiles.py`](utils\u002Ffiles.py) 整理数据），如：\n\n```\n└── datasets\n    ├── angry\n    ├── happy\n    ├── sad\n    ...\n```\n\n然后：\n\n```python\npython train.py --config configs\u002Fexample.yaml\n```\n\n&nbsp;\n\n### 预测\n\n用训练好的模型来预测指定音频的情感。[`checkpoints\u002F`](checkpoints)里有一些已经训练好的模型。\n\n```python\npython predict.py --config configs\u002Fexample.yaml\n```\n\n\n&nbsp;\n\n### 功能\n\n#### 雷达图\n\n绘制预测概率的雷达图。\n\n来源：[Radar](https:\u002F\u002Fgithub.com\u002FZhaofan-Su\u002FSpeechEmotionRecognition\u002Fblob\u002Fmaster\u002Fleidatu.py)\n\n```python\nimport utils\n\n\"\"\"\nArgs:\n    data_prob (np.ndarray): 概率数组\n    class_labels (list): 情感标签\n\"\"\"\nutils.radar(data_prob, class_labels)\n```\n\n&nbsp;\n\n#### 播放音频\n\n播放一段音频\n\n```python\nimport utils\n\nutils.play_audio(file_path)\n```\n\n&nbsp;\n\n#### 绘制曲线\n\n绘制训练过程中的准确率曲线和损失曲线。\n\n```python\nimport utils\n\n\"\"\"\nArgs:\n    train (list): 训练集损失值或准确率数组\n    val (list): 测试集损失值或准确率数组\n    title (str): 图像标题\n    y_label (str): y 轴标题\n\"\"\"\nutils.curve(train, val, title, y_label)\n```\n\n&nbsp;\n\n#### 波形图\n\n绘制音频的波形图。\n\n```python\nimport utils\n\nutils.waveform(file_path)\n```\n\n&nbsp;\n\n#### 音频频谱图\n\n绘制音频的频谱图。\n\n```python\nimport utils\n\nutils.spectrogram(file_path)\n```\n\n\n&nbsp;\n\n## 其他贡献者\n\n- [@Zhaofan-Su](https:\u002F\u002Fgithub.com\u002FZhaofan-Su)\n- [@Guo Hui](https:\u002F\u002Fgithub.com\u002Fguohui15661353950)","# Speech-Emotion-Recognition 快速上手指南\n\n本指南帮助开发者快速部署并使用基于 LSTM、CNN、SVM 和 MLP 的语音情感识别工具。该工具改进了特征提取方式，识别准确率可达 80% 左右。\n\n## 1. 环境准备\n\n### 系统要求\n- **操作系统**：Linux \u002F macOS \u002F Windows\n- **Python 版本**：Python 3.8\n\n### 前置依赖\n确保已安装以下核心库（可通过 `requirements.txt` 一键安装）：\n- **深度学习框架**：TensorFlow 2 & Keras (`tensorflow.keras`)\n- **机器学习库**：scikit-learn (SVM & MLP), joblib\n- **音频处理**：librosa, SciPy\n- **数据处理与绘图**：pandas, Matplotlib, NumPy\n- **可选工具**：OpenSMILE（用于提取更丰富的声学特征，非必须但推荐）\n\n> **国内加速建议**：安装 Python 包时，推荐使用清华或阿里镜像源以提升下载速度。\n> 例如：`pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 2. 安装步骤\n\n### 第一步：克隆项目\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition.git\ncd Speech-Emotion-Recognition\n```\n\n### 第二步：安装 Python 依赖\n```bash\npip install -r requirements.txt\n```\n*(如需使用国内镜像源，请参照上文“环境准备”中的命令)*\n\n### 第三步：安装 OpenSMILE（可选）\n若需使用 OpenSMILE 提取特征，请前往 [OpenSMILE GitHub](https:\u002F\u002Fgithub.com\u002Fnaxingyu\u002Fopensmile) 下载编译好的二进制文件并配置环境变量，或根据官方文档自行编译。\n\n## 3. 基本使用\n\n### 步骤一：配置参数\n在 `configs\u002F` 目录下创建或修改配置文件（如 `example.yaml`），设置数据集路径、模型类型及特征提取方式。\n- 若使用 OpenSMILE，需在配置中指定特征集（如 `IS09_emotion`, `ComParE_2016` 等）。\n\n### 步骤二：数据预处理\n将原始音频按情感类别放入不同文件夹（参考 `datasets` 结构），然后运行预处理脚本提取特征：\n```bash\npython preprocess.py --config configs\u002Fexample.yaml\n```\n*注：Librosa 特征保存为 `.p` 文件，OpenSMILE 特征保存为 `.csv` 文件。*\n\n### 步骤三：训练模型\n使用预处理好的特征训练模型：\n```bash\npython train.py --config configs\u002Fexample.yaml\n```\n训练完成后，模型权重将保存在 `checkpoints\u002F` 目录。\n\n### 步骤四：情感预测\n使用训练好的模型对单个音频文件进行情感预测：\n```bash\npython predict.py --config configs\u002Fexample.yaml\n```\n\n### 进阶功能（代码调用）\n你可以在 Python 脚本中直接调用工具函数进行可视化分析：\n\n**绘制预测概率雷达图：**\n```python\nimport utils\nutils.radar(data_prob, class_labels)\n```\n\n**绘制音频波形图：**\n```python\nimport utils\nutils.waveform(file_path)\n```\n\n**绘制频谱图：**\n```python\nimport utils\nutils.spectrogram(file_path)\n```\n\n**绘制训练损失\u002F准确率曲线：**\n```python\nimport utils\nutils.curve(train_loss, val_loss, \"Training Loss\", \"Loss\")\n```","某智能客服团队正在优化其语音质检系统，试图从海量通话录音中自动识别客户的情绪波动，以发现潜在的服务风险。\n\n### 没有 Speech-Emotion-Recognition 时\n- **人工抽检效率低下**：质检员只能依靠肉眼听录音、手动打标签，每天仅能处理几十条数据，无法覆盖全量通话，大量愤怒或失望的客户声音被遗漏。\n- **情绪判断主观性强**：不同质检员对“生气”和“烦躁”的界定标准不一，导致统计结果波动大，难以形成客观的数据报表供管理层决策。\n- **技术落地门槛高**：若想自研算法，团队需从头搭建 LSTM 或 CNN 模型并调试特征提取（如 Librosa\u002FOpenSMILE），开发周期长达数月且准确率难以保证。\n- **多模型对比困难**：缺乏统一框架快速验证 SVM、MLP 等不同算法在特定业务数据上的表现，难以找到最优解。\n\n### 使用 Speech-Emotion-Recognition 后\n- **全量自动化分析**：利用预置的 LSTM 和 CNN 模型批量处理录音，几分钟内即可完成数千条通话的情感分类（如愤怒、悲伤、中性），实现 100% 覆盖。\n- **标准化量化输出**：基于改进的特征提取方式，系统将模糊的语气转化为准确率约 80% 的客观标签，统一了“愤怒”等情绪的判定标准。\n- **快速部署与验证**：通过简单的 YAML 配置即可切换 Librosa 或 OpenSMILE 特征集，并直接调用训练好的权重进行预测，将原本数月的研发工作缩短至几天。\n- **灵活模型优选**：内置 DNN、SVM、MLP 等多种架构，团队可迅速在自有数据集上对比效果，轻松锁定最适合当前业务场景的模型。\n\nSpeech-Emotion-Recognition 将原本依赖人工经验的感性判断，转化为高效、客观且可规模化的数据洞察，显著提升了客服质量管理的响应速度与精度。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FRenovamen_Speech-Emotion-Recognition_55ef644e.png","Renovamen","Xiaohan Zou","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FRenovamen_f5d95906.jpg","A dragon lost in human world","CSE PhD @ Penn State","State College, PA","renovamenzxh@gmail.com","renovamen_zxh","zxh.me","https:\u002F\u002Fgithub.com\u002FRenovamen",[26],{"name":27,"color":28,"percentage":29},"Python","#3572A5",100,1304,228,"2026-04-16T09:34:15","MIT",2,"","未说明",{"notes":38,"python":39,"dependencies":40},"该工具支持 LSTM、CNN、SVM 和 MLP 模型。若使用 Opensmile 进行特征提取，需单独安装该工具并配置相应的特征集（如 IS09_emotion, ComParE_2016 等）。数据集需按情感类别分文件夹存放。","3.8",[41,42,43,44,45,46,47,48,49,50],"TensorFlow 2","Keras","scikit-learn","joblib","librosa","SciPy","pandas","Matplotlib","NumPy","Opensmile (可选)",[52,53],"音频","视频",[55,56,57,58,59,60],"speech-emotion-recognition","lstm","svm","mlp","opensmile","cnn",null,"ready","2026-03-27T02:49:30.150509","2026-04-20T16:47:35.296552",[66,71,76,81,86,91,95,100],{"id":67,"question_zh":68,"answer_zh":69,"source_url":70},45061,"如何在本地环境成功运行代码？","请按照以下步骤操作：\n1. 新建一个 Python 3.8 的环境。\n2. 运行 `pip install -r requirements.txt` 安装依赖。\n3. 按照 README 中的说明整理数据集结构。\n4. [可选] 如果需要使用 OpenSMILE 抽取特征，请安装 OpenSMILE；若使用 librosa 抽取特征则无需安装。\n完成上述步骤后，`preprocess.py`、`train.py` 和 `predict.py` 均可正常运行。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F27",{"id":72,"question_zh":73,"answer_zh":74,"source_url":75},45062,"项目是否支持 Windows 系统？如何安装 OpenSMILE？","项目可以在 Windows 上运行。关于 OpenSMILE 的安装：\n- OpenSMILE 2.3 版本似乎只有 Linux 版。\n- OpenSMILE 3.0 版本提供了 win64 版。\n- 官方文档中包含了 Windows 上的安装方法（参考 openSMILE_book.pdf）。\n注意：在 Windows 下使用 librosa 时可能会遇到 llvmite 相关报错，需检查环境配置。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F15",{"id":77,"question_zh":78,"answer_zh":79,"source_url":80},45063,"运行时报错 'ImportError: cannot import name Train' 或命令行参数错误如何解决？","这通常是由于命令行输入参数处理不当引起的。建议尝试不使用命令行输入参数，而是直接在 `cmd.py` 文件中硬编码赋值。例如：\n```python\noption = 't'\nmodel_type = 'lstm'\nmodel_name = 'LSTM_OPENSMILE'\nload = 1\nfeature = 'o'\naudio = 'default.wav' # 或者指定具体音频路径\n```\n修改后直接运行脚本即可避免该错误。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F2",{"id":82,"question_zh":83,"answer_zh":84,"source_url":85},45064,"预训练模型是基于什么数据集训练的？准确率是如何得出的？","参考模型是在 CASIA 完整数据集上训练出来的。具体的实验设置是将 CASIA 数据按 8:2 的比例划分为训练集和测试集，在训练集上进行训练，并在测试集上进行测试验证。该准确率结果同样适用于其他提到的数据集。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F14",{"id":87,"question_zh":88,"answer_zh":89,"source_url":90},45065,"使用 MLP 或 SVM 模型训练时为什么立刻就结束了？","这是正常现象。因为数据量较小，SVM 或 MLP 模型的训练速度非常快，所以看起来像是“立刻结束”。\n- 输出的数字实际上是模型在测试集上的验证结果。\n- 如果希望程序运行时间更长，可以尝试增大 SVM 或 MLP 的最大迭代次数（`max_iter` 参数）。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F7",{"id":92,"question_zh":93,"answer_zh":94,"source_url":90},45066,"运行时出现 'UnboundLocalError: local variable model referenced before assignment' 错误怎么办？","这个问题通常出现在处理命令行输入时。维护者已更新代码修复了命令行输入部分的逻辑。\n解决方案：\n1. 拉取最新代码再次尝试。\n2. 如果问题依旧，建议放弃命令行输入方式，直接在代码中调用相关函数进行训练或预测（具体方法可参考更新后的文档）。",{"id":96,"question_zh":97,"answer_zh":98,"source_url":99},45067,"遇到 'No module named sklearn.preprocessing.data' 报错如何解决？","该错误通常由 scikit-learn 版本不兼容引起。虽然 `requirements.txt` 可能指定了特定版本，但在新版 scikit-learn（如 1.0.2+）中，`sklearn.preprocessing.data` 模块已被移除或重构。\n建议检查并调整 scikit-learn 的版本，确保与项目中保存的模型文件（如 `.m` 文件或 joblib 文件）兼容，或者尝试降级 scikit-learn 到旧版本（如 0.24.x）以匹配旧的序列化对象。","https:\u002F\u002Fgithub.com\u002FRenovamen\u002FSpeech-Emotion-Recognition\u002Fissues\u002F29",{"id":101,"question_zh":102,"answer_zh":103,"source_url":80},45068,"在哪里可以获取测试集？代码中是否有单独的测试数据？","代码中没有单独提供测试集文件。测试流程是将下载的数据集（如 CASIA）按比例（通常为 8:2）自行划分为训练集和测试集。模型在训练集上训练完成后，会使用划分出的测试集部分进行评估和预测。用户需要自行下载原始数据集并进行划分。",[],[106,118,130,138,146,154],{"id":107,"name":108,"github_repo":109,"description_zh":110,"stars":111,"difficulty_score":112,"last_commit_at":113,"category_tags":114,"status":62},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,3,"2026-04-06T03:28:53",[115,116,117,53],"开发框架","图像","Agent",{"id":119,"name":120,"github_repo":121,"description_zh":122,"stars":123,"difficulty_score":34,"last_commit_at":124,"category_tags":125,"status":62},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85267,"2026-04-18T11:00:28",[116,126,53,127,117,128,129,115,52],"数据工具","插件","其他","语言模型",{"id":131,"name":132,"github_repo":133,"description_zh":134,"stars":135,"difficulty_score":112,"last_commit_at":136,"category_tags":137,"status":62},8436,"Real-Time-Voice-Cloning","CorentinJ\u002FReal-Time-Voice-Cloning","Real-Time-Voice-Cloning 是一款开源的实时语音克隆工具，旨在通过短短 5 秒的音频样本，快速复刻说话人的声音特征，并即时生成任意文本的语音内容。它有效解决了传统语音合成需要大量训练数据且无法实时响应的痛点，让个性化语音生成变得轻量且高效。\n\n该项目的核心技术基于 SV2TTS（从说话人验证到多说话人文本转语音的迁移学习）深度学习框架。其工作流程分为三个阶段：首先从少量音频中提取说话人的数字声纹表示，随后将其作为参考，结合 Tacotron 合成器与 WaveRNN 声码器，高质量地生成目标语音。这种架构不仅实现了端到端的语音合成，还保证了在普通硬件上的实时运行能力。\n\nReal-Time-Voice-Cloning 非常适合开发者、人工智能研究人员以及对语音技术感兴趣的技术爱好者使用。开发者可以将其集成到互动应用中，研究人员可借此探索语音迁移学习的前沿进展，而具备一定动手能力的普通用户也能通过提供的图形界面工具箱，轻松体验“声音复制”的乐趣。尽管目前已有商业服务在音质上表现更佳，但作为一款免费开源项目，它依然是理解和学习实时语音合成技术的绝佳入门资源。",59627,"2026-04-16T23:06:58",[52,115],{"id":139,"name":140,"github_repo":141,"description_zh":142,"stars":143,"difficulty_score":112,"last_commit_at":144,"category_tags":145,"status":62},4128,"GPT-SoVITS","RVC-Boss\u002FGPT-SoVITS","GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具，旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点，实现了“零样本”和“少样本”的快速建模：用户只需提供 5 秒参考音频即可即时生成语音，或使用 1 分钟数据进行微调，从而获得高度逼真且相似度极佳的声音效果。\n\n该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能，极大地降低了数据准备和模型训练的技术门槛，让非专业人士也能轻松上手。\n\n在技术亮点方面，GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成，还具备卓越的推理速度，在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音，还是进行多语言语音交互研究，GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。",56375,"2026-04-05T22:15:46",[52],{"id":147,"name":148,"github_repo":149,"description_zh":150,"stars":151,"difficulty_score":112,"last_commit_at":152,"category_tags":153,"status":62},3833,"MoneyPrinterTurbo","harry0703\u002FMoneyPrinterTurbo","MoneyPrinterTurbo 是一款利用 AI 大模型技术，帮助用户一键生成高清短视频的开源工具。只需输入一个视频主题或关键词，它就能全自动完成从文案创作、素材匹配、字幕合成到背景音乐搭配的全过程，最终输出完整的竖屏或横屏短视频。\n\n这款工具主要解决了传统视频制作流程繁琐、门槛高以及素材版权复杂等痛点。无论是需要快速产出内容的自媒体创作者，还是希望尝试视频生成的普通用户，无需具备专业的剪辑技能或昂贵的硬件配置（普通电脑即可运行），都能轻松上手。同时，其清晰的 MVC 架构和对多种主流大模型（如 DeepSeek、Moonshot、通义千问等）的广泛支持，也使其成为开发者进行二次开发或技术研究的理想底座。\n\nMoneyPrinterTurbo 的独特亮点在于其高度的灵活性与本地化友好性。它不仅支持中英文双语及多种语音合成，允许用户精细调整字幕样式和画面比例，还特别优化了国内网络环境下的模型接入方案，让用户无需依赖 VPN 即可使用高性能国产大模型。此外，工具提供批量生成模式，可一次性产出多个版本供用户择优，极大地提升了内容创作的效率与质量。",54991,"2026-04-05T12:23:02",[115,129,117,53,116],{"id":155,"name":156,"github_repo":157,"description_zh":158,"stars":159,"difficulty_score":34,"last_commit_at":160,"category_tags":161,"status":62},2179,"oh-my-openagent","code-yeongyu\u002Foh-my-openagent","oh-my-openagent（简称 omo）是一款强大的开源智能体编排框架，前身名为 oh-my-opencode。它致力于打破单一模型供应商的生态壁垒，解决开发者在构建 AI 应用时面临的“厂商锁定”难题。不同于仅依赖特定模型的封闭方案，omo 倡导开放市场理念，支持灵活调度多种主流大模型：利用 Claude、Kimi 或 GLM 进行任务编排，调用 GPT 处理复杂推理，借助 Minimax 提升响应速度，或发挥 Gemini 的创意优势。\n\n这款工具特别适合希望摆脱平台限制、追求极致性能与成本平衡的开发者及研究人员使用。通过统一接口，用户可以轻松组合不同模型的长处，构建更高效、更具适应性的智能体系统。其独特的技术亮点在于“全模型兼容”架构，让用户不再受制于某一家公司的策略变动或定价调整，真正实现对前沿模型资源的自由驾驭。无论是构建自动化编码助手，还是开发多步骤任务处理流程，oh-my-openagent 都能提供灵活且稳健的基础设施支持，助力用户在快速演进的 AI 生态中保持技术主动权。",52697,"2026-04-19T11:36:11",[53,129,115,116,117]]