Skip to content

waterdoog/realtime_speech_emotion_recognisation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

实时语音情绪识别系统 / Real-time Speech Emotion Recognition System

基于 SigWavNet 模型的实时语音情绪识别 Demo

项目简介 / Project Introduction

本项目实现了一个基于 SigWavNet 模型的实时语音情绪识别系统,包含完整的前后端实现。

功能特性 / Features:

  • 🎤 实时语音捕获
  • 🧠 基于 SigWavNet 的情绪识别
  • 📊 实时情绪可视化
  • 🌐 Web 界面

技术栈 / Tech Stack

后端 / Backend:

  • Python 3.8+
  • Flask + Flask-SocketIO (WebSocket)
  • PyTorch
  • PyAudio (音频捕获)
  • librosa (音频处理)

前端 / Frontend:

  • HTML5 + CSS3 + JavaScript
  • Web Audio API
  • Chart.js (可视化)

模型 / Models:

  • SigWavNet (默认) - 多分辨率小波网络,高准确率
  • LSTM (备选) - 长短期记忆网络,快速实时处理

项目结构 / Project Structure

realtime_speech_emotion_recognisation/
├── backend/                  # 后端代码
│   ├── app.py               # Flask主应用
│   ├── audio_processor.py   # 音频处理模块
│   ├── emotion_model.py     # 模型封装
│   ├── model.py             # SigWavNet模型定义
│   ├── lstm_model.py        # LSTM模型定义
│   ├── custom_layers.py     # 自定义层
│   ├── utils.py             # 工具函数
│   ├── train_sigwavnet.py   # 训练脚本
│   ├── requirements.txt     # Python依赖
│   └── models/              # 预训练模型目录
├── frontend/                # 前端代码
│   ├── index.html          # 主页面
│   ├── style.css           # 样式文件
│   ├── app.js              # 前端逻辑
│   └── assets/             # 静态资源
├── docs/                    # 文档目录
│   ├── setup/              # 设置相关文档
│   ├── installation/       # 安装相关文档
│   ├── training/           # 训练相关文档
│   └── model/              # 模型相关文档
├── tests/                   # 测试文件
│   └── backend/            # 后端测试
├── scripts/                 # 脚本文件
│   └── backend/            # 后端脚本
├── README.md               # 项目说明
└── .gitignore             # Git忽略文件

快速开始 / Quick Start

1. 环境准备 / Environment Setup

# 创建虚拟环境
conda create -n ser-env python=3.8
conda activate ser-env

# 安装依赖
cd backend
pip install -r requirements.txt

Windows用户注意: PyAudio安装可能需要额外步骤,参考 docs/setup/SETUP.md

2. 模型准备 / Model Preparation

选项A: 使用未训练模型(快速演示)

  • 可以直接运行,无需模型文件
  • 准确率较低,仅用于功能演示

选项B: 使用训练好的模型

  • 参考 docs/model/MODEL_SETUP.md 获取模型
  • 将模型文件放置在 backend/models/sigwavnet_model.pth

3. 启动系统 / Start System

使用默认模型 (SigWavNet):

cd backend
python app.py

使用LSTM模型:

cd backend
python app.py --model lstm

后端将在 http://localhost:5000 启动。

更多模型选择选项请参考 docs/model/MODEL_COMPARISON.md

4. 使用系统 / Use System

  1. 在浏览器中访问: http://localhost:5000
  2. 点击"开始录音"按钮
  3. 允许浏览器访问麦克风
  4. 对着麦克风说话
  5. 查看实时情绪识别结果

详细说明请参考 docs/setup/SETUP.mddocs/setup/QUICK_START.md

使用说明 / Usage

  1. 点击"开始录音"按钮
  2. 对着麦克风说话
  3. 系统实时识别并显示情绪结果
  4. 点击"停止录音"结束

情绪类别 / Emotion Categories

  • Happy (快乐)
  • Sad (悲伤)
  • Angry (愤怒)
  • Neutral (中性)
  • 其他 (根据训练数据)

方法评估 / Method Evaluation

SigWavNet 优势 / Advantages

高性能: 在IEMOCAP和EMO-DB数据集上表现优异
端到端: 直接从原始波形提取特征,无需复杂预处理
多分辨率: 小波变换捕获不同时间尺度的特征
注意力机制: 空间和时间注意力提升识别准确率

实时适配 / Real-time Adaptation

本项目对原始SigWavNet进行了以下适配:

  1. 流式处理: 支持实时音频流输入
  2. WebSocket通信: 低延迟的前后端通信
  3. 优化推理: 针对实时场景优化模型推理
  4. 错误处理: 增强的异常处理和降级策略

性能考虑 / Performance Considerations

  • CPU模式: 适合演示和小规模使用
  • GPU加速: 可通过设置 device='cuda' 启用
  • 延迟: 当前实现约0.5-1秒延迟(可优化)

参考资源 / References

SigWavNet

LSTM模型

许可证 / License

本项目基于 SigWavNet 的 BSD-3-Clause 许可证。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors