# audioProject **Repository Path**: wanyongtao/audioProject ## Basic Information - **Project Name**: audioProject - **Description**: 语音情感识别项目 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2018-07-22 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # audioProject ## 项目介绍 利用声音文件识别情绪的项目 声音数据来源于 http://www.chineseldc.org/resource_info.php?rid=76 采用示例数据 利用pyAudioAnalysis采集了34个语音特征,为了使用方便,我将特征全部存入npy baseline.py则是采用机器学习的方式进行训练,SVM和GBDT上准确度达到60% 采用深度学习方式,main_audio_lstm.py和main_audio_bilstm.py由于数据够少,产生了过拟合 ## 使用方式 下载工程 ```text git clone https://gitee.com/wanyongtao/audioProject ``` 创建和激活虚拟环境 ```text conda create -n audio python=3.6 source activate audio ``` 安装Python依赖库 ```text pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 开发流程 1. 定义自己的数据加载类,继承BaseDataLoader; 2. 定义自己的网络结构类,继承BaseModel; 3. 定义自己的模型训练类,继承BaseTrain; 4. 定义自己的样本预测类,继承BaseEval; 4. 定义自己的配置文件,写入实验的相关参数; 执行训练模型和预测样本操作。 ## 示例工程 识别[MNIST](http://yann.lecun.com/exdb/mnist/)库中手写数字,工程``simple_mnist`` 训练: ```text python main.py -c configs/simple_mnist_config.json ``` 预测: ```text python main_test.py -c configs/simple_mnist_config.json -m simple_mnist.weights.10-0.24.hdf5 ``` 网络结构 ![网络结构](doc/model.png) TensorBoard ```text tensorboard --logdir=experiments/simple_mnist/logs ``` ![TensorBoard](doc/tb.png) ## 工程架构 ### 框架图 ![架构](doc/arc.jpg) ### 文件夹结构 ```text ├── main.py - 训练模型入口 │ │ ├── base │ ├── base_data_loader.py - 数据加载基类 │ ├── base_model.py - 网络结构(模型)基类 │ └── base_train.py - 训练模型基类 │ │ ├── model - 网络结构文件夹 │ └── simple_mnist_model.py │ │ ├── trainer - 训练模型文件夹 │ └── simple_mnist_trainer.py │ | ├── data_loader - 数据加载文件夹 │ └── simple_mnist_data_loader.py │ │ ├── configs - 配置文件夹 │ └── simple_mnist_config.json │ │ ├── data - 放置项目数据集 │ │ ├── experiments - 实验数据文件夹 │   └── simple_mnist - 实验名称 │   ├── checkpoints - 存储的模型和参数 │   │   └── simple_mnist.weights.10-0.24.hdf5 │   ├── images - 图片 │   │   └── model.png │   └── logs - 日志,如TensorBoard │   └── events.out.tfevents.1532586063.local │ │ ├── requirements.txt - 依赖库 │ │ └── utils - 工具文件夹 ├── config.py - 配置工具类 ├── dirs.py - 文件夹工具类 └── utils.py - 其他工具类 ``` ## 主要组件 ### DataLoader 操作步骤: 1. 创建自己的加载数据类,继承BaseDataLoader基类; 2. 覆写``get_train_data()``和``get_test_data()``,返回训练和测试数据; ### Model 操作步骤: 1. 创建自己的网络结构类,继承BaseModel基类; 2. 覆写``build_model()``,创建网络结构; 3. 在构造器中,调用``build_model()``; 注意:``plot_model()``支持绘制网络结构; ### Trainer 操作步骤: 1. 创建自己的训练类,继承BaseTrain基类; 2. 参数:网络结构model、训练数据data; 3. 覆写``train()``,fit数据,训练网络结构; 注意:支持在训练中调用callbacks,额外添加模型存储、TensorBoard、FPR度量等。 ### Infer 操作步骤: 1. 创建自己的预测类,继承BaseInfer基类; 2. 覆写``load_model()``,提供模型加载功能; 3. 覆写``predict()``,提供样本预测功能; ### Config 定义在模型训练过程中所需的参数,JSON格式,支持:学习率、Epoch、Batch等参数。 ### Main 训练: 1. 创建配置文件config; 2. 创建数据加载类dataloader; 3. 创建网络结构类model; 4. 创建训练类trainer,参数是训练和测试数据、模型; 5. 执行训练类trainer的train(); 预测: 1. 创建配置文件config; 2. 处理预测样本test; 3. 创建预测类infer; 4. 执行预测类infer的predict(); ## 感谢 参考[DL-Project-Template](https://github.com/SpikeKing/DL-Project-Template) 参考[Keras-Project-Template](https://github.com/Ahmkel/Keras-Project-Template)