Update README.md

main
pnmfazke8 3 months ago
parent 8a075accd6
commit 7b07503059

@ -1,136 +1,127 @@
# 基于深度学习的语音情感识别系统
## 1 项目概述
本项目是一个基于深度学习的语音情感识别系统,使用 **PyTorch** 实现。该系统能够从音频中识别 **6种不同的情感状态**愤怒、恐惧、开心、中性、悲伤和惊讶。项目实现了完整的数据处理、模型训练和评估流程并提供了友好的图形用户界面GUI进行实时预测。
### 1.1 数据集
本项目使用的数据集来自 [百度AI Studio 的情感语音数据集](https://aistudio.baidu.com/datasetdetail/221024)。数据集包含以下信息:
- **类别**生气、恐惧、开心、正常、伤心、惊讶共6种类别。
- **样本数量**每类50个样本总计300条数据。
- **格式**:音频文件为 `.wav` 格式。
### 1.2 模型性能概述
| 模型 | 特征类型 | 准确率 | F1得分 | 备注 |
|------|---------|-------|-------|------|
| ResNet18 | MFCC频谱图 | 73.3% | 74.4% | 使用预训练权重 |
| ResNet18 | 原始波形 | 80.0% | 78.0% | 不使用预训练权重 |
### 1.3 目录说明
```
|
|-- checkpoints/ # 保存训练好的模型
| |-- <model_name>_<timestamp>
| | |-- plots/ # 保存训练过程中的图像
| | |-- results.txt # 保存评价指标
| | |-- <model_name>_best.pth # 保存最佳模型
| |-- ...
|
|-- dataset/ # 划分后的数据集根目录
| |-- train/ # 训练集
| | |-- <emotion>/
| | | |-- <audio_file>.wav
| | |-- ...
| |-- val/ # 验证集
| |-- <emotion>/
| | |-- <audio_file>.wav
| |-- ...
|
|-- wav # 原始音频数据集
| |-- <emotion>/
| | |-- <audio_file>.wav
| |-- ...
|
|-- dataset.py # 数据集类
|-- models.py # 模型定义
|-- process_data.py # 数划分数据集
|-- README.md # 项目说明
|-- requirements.txt # 依赖库
|-- SIMSUN.TTC # 字体文件
|-- train.py # 训练脚本
|-- ui.py # 交互界面
```
## 2 环境配置
### 2.1 创建虚拟环境
建议使用 `conda` 创建虚拟环境以避免依赖冲突:
```shell
conda create -n audio_classification python=3.10
conda activate audio_classification
```
### 2.2 安装 `PyTorch` 及相关库
请根据 PyTorch 官方[安装指南](https://pytorch.org/get-started/locally/) 安装适合自己硬件版本的 `torch`、`torchvision` 和 `torchaudio`
### 2.3 安装依赖库
运行以下命令安装项目所需的其他依赖库:
```shell
pip install -r requirements.txt
```
## 3 运行说明
### 3.1 数据集划分
将原始数据集划分为训练集和验证集。运行以下命令:
```shell
python process_data.py
```
您可以通过命令行参数控制数据集根目录、验证集比例等。更多参数说明请参考文档 [process_data.md](doc/process_data.md)。
### 3.2 训练模型
运行以下命令开始训练模型。您可以通过命令行参数灵活调整超参数。
#### 基本运行(使用默认参数)
```python
python train.py
```
#### 调整模型和超参数
例如,使用 MFCC 频谱图作为输入特征,选择 ResNet34 模型,并启用预训练权重:
```python
python train.py --use_mfcc --model spec_resnet34 --pretrained --batch_size 32 --epochs 50 --lr 0.0005 --scheduler
```
完整的参数说明请参考文档 [train.md](doc/train.md)。
### 3.3 交互界面
运行以下命令启动图形用户界面,进行实时预测:
```shell
python ui.py
```
## 4 功能特点
1. **完整的训练流程**
包含数据加载、模型训练、验证和测试的全流程,方便用户快速上手。
2. **多种模型选择**
支持不同规模的 ResNet 模型(如 ResNet18、ResNet34并支持原始音频和 MFCC 频谱图作为输入特征。
3. **超参数控制**
用户可通过命令行参数灵活调整学习率、批量大小、训练轮数等超参数。
4. **丰富的评估指标**
提供准确率、精确度、召回率、F1分数、混淆矩阵等评价指标帮助用户全面评估模型性能。
5. 自动绘图:
- 训练和验证损失曲线
- 准确率曲线
- 精确度曲线
- 召回率曲线
- F1分数曲线
- 混淆矩阵
- PR曲线
## 5 结果展示
![软件界面](doc/images/ui.png)
![混淆矩阵](doc/images/confusion_matrix.png)
![损失曲线](doc/images/loss_plot.png)
![准确率曲线](doc/images/accuracy_plot.png)
![精确度曲线](doc/images/precision_plot.png)
![召回率曲线](doc/images/recall_plot.png)
![F1分数曲线](doc/images/f1_plot.png)
![PR曲线](doc/images/pr_curve.png)
# 基于深度学习的语音情感识别系统
## 1 项目概述
本项目是一个基于深度学习的语音情感识别系统,使用 **PyTorch** 实现。该系统能够从音频中识别 **6种不同的情感状态**愤怒、恐惧、开心、中性、悲伤和惊讶。项目实现了完整的数据处理、模型训练和评估流程并提供了友好的图形用户界面GUI进行实时预测。
### 1.1 数据集
本项目使用的数据集来自 [百度AI Studio 的情感语音数据集](https://aistudio.baidu.com/datasetdetail/221024)。数据集包含以下信息:
- **类别**生气、恐惧、开心、正常、伤心、惊讶共6种类别。
- **样本数量**每类50个样本总计300条数据。
- **格式**:音频文件为 `.wav` 格式。
### 1.2 模型性能概述
| 模型 | 特征类型 | 准确率 | F1得分 | 备注 |
|------|---------|-------|-------|------|
| ResNet18 | MFCC频谱图 | 73.3% | 74.4% | 使用预训练权重 |
| ResNet18 | 原始波形 | 80.0% | 78.0% | 不使用预训练权重 |
### 1.3 目录说明
```
|
|-- checkpoints/ # 保存训练好的模型
| |-- <model_name>_<timestamp>
| | |-- plots/ # 保存训练过程中的图像
| | |-- results.txt # 保存评价指标
| | |-- <model_name>_best.pth # 保存最佳模型
| |-- ...
|
|-- dataset/ # 划分后的数据集根目录
| |-- train/ # 训练集
| | |-- <emotion>/
| | | |-- <audio_file>.wav
| | |-- ...
| |-- val/ # 验证集
| |-- <emotion>/
| | |-- <audio_file>.wav
| |-- ...
|
|-- wav # 原始音频数据集
| |-- <emotion>/
| | |-- <audio_file>.wav
| |-- ...
|
|-- dataset.py # 数据集类
|-- models.py # 模型定义
|-- process_data.py # 数划分数据集
|-- README.md # 项目说明
|-- requirements.txt # 依赖库
|-- SIMSUN.TTC # 字体文件
|-- train.py # 训练脚本
|-- ui.py # 交互界面
```
## 2 环境配置
### 2.1 创建虚拟环境
建议使用 `conda` 创建虚拟环境以避免依赖冲突:
```shell
conda create -n audio_classification python=3.10
conda activate audio_classification
```
### 2.2 安装 `PyTorch` 及相关库
请根据 PyTorch 官方[安装指南](https://pytorch.org/get-started/locally/) 安装适合自己硬件版本的 `torch`、`torchvision` 和 `torchaudio`
### 2.3 安装依赖库
运行以下命令安装项目所需的其他依赖库:
```shell
pip install -r requirements.txt
```
## 3 运行说明
### 3.1 数据集划分
将原始数据集划分为训练集和验证集。运行以下命令:
```shell
python process_data.py
```
您可以通过命令行参数控制数据集根目录、验证集比例等。更多参数说明请参考文档 [process_data.md](doc/process_data.md)。
### 3.2 训练模型
运行以下命令开始训练模型。您可以通过命令行参数灵活调整超参数。
#### 基本运行(使用默认参数)
```python
python train.py
```
#### 调整模型和超参数
例如,使用 MFCC 频谱图作为输入特征,选择 ResNet34 模型,并启用预训练权重:
```python
python train.py --use_mfcc --model spec_resnet34 --pretrained --batch_size 32 --epochs 50 --lr 0.0005 --scheduler
```
完整的参数说明请参考文档 [train.md](doc/train.md)。
### 3.3 交互界面
运行以下命令启动图形用户界面,进行实时预测:
```shell
python ui.py
```
## 4 功能特点
1. **完整的训练流程**
包含数据加载、模型训练、验证和测试的全流程,方便用户快速上手。
2. **多种模型选择**
支持不同规模的 ResNet 模型(如 ResNet18、ResNet34并支持原始音频和 MFCC 频谱图作为输入特征。
3. **超参数控制**
用户可通过命令行参数灵活调整学习率、批量大小、训练轮数等超参数。
4. **丰富的评估指标**
提供准确率、精确度、召回率、F1分数、混淆矩阵等评价指标帮助用户全面评估模型性能。
5. 自动绘图:
- 训练和验证损失曲线
- 准确率曲线
- 精确度曲线
- 召回率曲线
- F1分数曲线
- 混淆矩阵
- PR曲线

Loading…
Cancel
Save