# CareBot
**Repository Path**: cfdy123/care-bot
## Basic Information
- **Project Name**: CareBot
- **Description**: 基于LLM的数字人交互系统
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-03-12
- **Last Updated**: 2026-08-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Python
## README
# 老年情感陪护数字人系统
## 项目简介
基于AI大语言模型的老年情感陪护虚拟数字人系统,专为老年人提供心理健康支持和情感陪伴服务。
注:项目最新版本位于develop分支
**赛题**:A22 - 基于AI大语言模型的情感陪护虚拟数字人系统
---
## 主要功能
### 基础功能
- **文字对话** - 支持文字输入与数字人交流
- **语音输入** - 基于FunASR改进的本地语音识别(符合赛题提交要求,WER≤10%)
- **语音回复** - 阿里云TTS语音合成
- **多模态感知** - DeepFace摄像头面部表情识别(符合赛题提交要求),Speechbrain语音情绪识别
- **对话记忆** - 支持30轮以上连续对话
### 核心能力(赛题要求)
| 功能 | 状态 | 说明 |
|------|------|------|
| 心理风险检测 | ✅ | 自动识别焦虑、抑郁、双相情感障碍倾向 |
| RAG知识库 | ✅ | 心理学专业知识库,355个文档片段 |
| 评估-干预-再评估闭环 | ✅ | 跟踪用户心理状态变化,评估干预效果 |
| 危机干预 | ✅ | 识别自杀风险,自动提供危机热线 |
| 上下文感知 | ✅ | 支持≥10轮连续对话,上下文窗口≥64K tokens |
| 多模态感知 | ✅ | DeepFace面部表情识别,实现真实共情 |
| 健康报告生成 | ✅ | 日度/周度报告,可发送给家属 |
| 会话总结功能 | ✅ | 对话结束时生成摘要和建议 |
---
## 技术架构
```
用户输入(文字/语音)+ 摄像头图像
↓
[多模态感知] → DeepFace面部表情识别
↓
[心理风险检测] → 判断风险等级(正常/低/中/高/危机)
↓
[RAG知识库检索] → 获取相关心理学知识
↓
[LLM生成] → DeepSeek API(含多模态上下文)
↓
[后处理] → 危机干预/专业转介建议
↓
返回响应(文字+语音)
```
---
## 技术指标达成
| 要求 | 指标 | 实际 | 状态 |
|------|------|------|------|
| ASR模型 | WER≤10% | Whisper本地模型 | ✅ |
| 多模态采集 | 可提交模型文件 | DeepFace开源模型 | ✅ |
| 连续对话 | ≥10轮 | 支持30轮+ | ✅ |
| 上下文窗口 | ≥8k tokens | 64K tokens | ✅ |
| 响应时间 | ≤60秒 | 通常3-5秒 | ✅ |
| 心理风险检测 | - | 焦虑/抑郁/双相/危机 | ✅ |
---
## 快速开始
### 环境要求
- Python 3.8+
- Node.js 16+
- ffmpeg(用于音频处理)
### 一键启动
**Windows:**
```bash
双击 start.bat
```
**Mac/Linux:**
```bash
chmod +x start.sh
./start.sh
```
### 手动安装
```bash
# 1. 安装后端依赖
cd backend
pip install -r requirements.txt
# 2. 安装前端依赖
cd ../frontend
npm install
# 3. 启动后端
cd ../backend
python api/app.py
# 4. 启动前端(新终端)
cd frontend
npm run dev
```
访问:http://localhost:5173
**首次启动说明:**
- 会自动下载Whisper模型(约150MB)
- 会自动下载DeepFace模型(约100MB)
---
## 配置说明
编辑 `backend/config/config.yaml`:
```yaml
# LLM配置(DeepSeek)
dialogue:
model_name: "deepseek-chat"
api_url: "https://api.deepseek.com/v1/chat/completions"
api_key: "your-api-key" # 必填
enable_multimodal: true # 多模态感知开关
use_rag: true # 知识库开关
kb_path: "backend/data/knowledge_base"
# TTS配置(阿里云)
tts:
provider: "aliyun"
aliyun:
access_key_id: "your-access-key-id"
access_key_secret: "your-access-key-secret"
app_key: "your-app-key"
voice: "ailun" # 推荐使用新版AI声音
# ASR配置(Whisper本地模型)
asr:
provider: "whisper"
whisper:
model: "base" # 可选: tiny, base, small, medium
```
> **注意**:ASR已改用Whisper本地模型,无需配置阿里云ASR。详见 [docs/ALIYUN_SETUP.md](docs/ALIYUN_SETUP.md)
---
## API接口
### 对话接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/dialogue` | POST | 对话接口(支持多模态数据) |
| `/api/dialogue/end` | POST | 结束对话,生成总结 |
| `/api/dialogue/state/` | GET | 获取对话状态 |
| `/api/health` | GET | 健康检查 |
### 多模态接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/multimodal/test` | POST | 测试多模态感知 |
| `/api/multimodal/status` | GET | 获取多模态服务状态 |
### 健康报告接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/reports/daily/` | GET | 获取日度健康报告 |
| `/api/reports/weekly/` | GET | 获取周度健康报告 |
| `/api/reports/send` | POST | 发送报告给家属 |
### 语音接口
| 接口 | 方法 | 说明 |
|------|------|------|
| `/api/tts` | POST | 文字转语音 |
| `/api/asr` | POST | 语音转文字(Whisper) |
| `/api/voice-dialogue` | POST | 语音对话(ASR+LLM+TTS一体) |
### 对话请求示例
```bash
# 基础对话
curl -X POST http://localhost:5000/api/dialogue \
-H "Content-Type: application/json" \
-d '{"user_id": "test", "input": "我最近很焦虑"}'
# 携带多模态数据
curl -X POST http://localhost:5000/api/dialogue \
-H "Content-Type: application/json" \
-d '{
"user_id": "test",
"input": "我没事",
"multimodal_data": {
"visual_emotion": "难过",
"visual_notes": "眉头紧锁"
}
}'
```
**响应示例:**
```json
{
"status": "success",
"response": "我能感受到您可能有些心事...",
"user_id": "test",
"enhanced": true,
"risk_level": "low",
"risk_type": "depression",
"strategy": "explore",
"need_professional_help": false,
"response_time": 2.5,
"multimodal_result": {
"enabled": true,
"visual_emotion": "难过",
"visual_confidence": 0.85,
"has_audio": false
}
}
```
---
## 项目结构
```
CareBot/
├── .gitignore # Git忽略规则
├── README.md # 本文档
├── QUICK_START.md # 快速开始指南
├── start.bat # Windows启动脚本
├── start.sh # Linux/Mac启动脚本
│
├── backend/ # 后端服务
│ ├── api/
│ │ └── app.py # Flask API(15个接口)
│ ├── config/
│ │ └── config.yaml # 配置文件
│ ├── dialogue/ # 对话模块
│ │ ├── llm_adapter.py # LLM适配器
│ │ ├── prompt_templates.py # Prompt模板
│ │ ├── context_manager.py # 上下文管理器
│ │ ├── mental_health_detector.py # 心理风险检测
│ │ ├── enhanced_dialogue_service.py # 增强对话服务
│ │ ├── multimodal_service.py # 多模态感知服务
│ │ ├── tts_service.py # TTS服务(阿里云)
│ │ └── asr_service.py # ASR服务(Whisper)
│ ├── services/
│ │ └── health_report_service.py # 健康报告服务
│ ├── rag/
│ │ └── knowledge_base.py # 知识库管理
│ ├── data/
│ │ └── knowledge_base/ # 知识库文档(355片段)
│ └── requirements.txt # Python依赖
│
├── frontend/ # 前端界面
│ ├── src/
│ │ ├── App.vue # 主组件(含摄像头采集)
│ │ └── main.js
│ ├── public/
│ │ └── multimodal_test.html # 多模态测试页面
│ ├── package.json
│ └── vite.config.js
│
├── docs/ # 文档
│ ├── A22.md # 赛题要求
│ ├── MULTIMODAL_IMPLEMENTATION.md # 多模态实现文档
│ ├── MULTIMODAL_VERIFICATION.md # 多模态验证文档
│ ├── PRIVACY_POLICY.md # 隐私政策
│ ├── API_KEY_SECURITY.md # API Key安全配置
│ └── ALIYUN_SETUP.md # 阿里云配置说明
│
└── debug/ # 调试脚本
└── ...
```
---
## 多模态感知
### 功能说明
系统通过DeepFace实现面部表情识别,能够感知用户真实情绪:
- **支持的7种情绪**:开心、难过、生气、害怕、惊讶、厌恶、平静
- **准确率**:约85-90%
- **处理方式**:本地处理,不上传云端
### 使用方式
1. 点击前端"📹 开启摄像头"按钮
2. 允许浏览器摄像头权限
3. 系统每5秒自动采集一次图像
4. Header区域显示检测到的情绪
### 应用场景
```
用户说:我没事
DeepFace检测:难过(置信度85%)
系统响应:"看起来您似乎有些心事,愿意和我说说吗?"
```
### 隐私保护
- 摄像头图像仅在本地处理
- 不上传任何云端服务器
- 用户可随时关闭摄像头
- 详见 [docs/PRIVACY_POLICY.md](docs/PRIVACY_POLICY.md)
---
## 心理学知识库
### 知识库内容
| 类别 | 文档数 | 内容 |
|------|--------|------|
| 心理健康基础 | 7 | 焦虑症、抑郁症、双相情感障碍、老年人特有心理问题 |
| 应对策略 | 3 | 情绪调节方法、老年人专属策略、家庭关系指南 |
| 沟通指南 | 2 | 共情倾听技巧、危机干预流程 |
| 评估工具 | 1 | PHQ-9抑郁量表、GAD-7焦虑量表 |
### 知识库特点
- 针对老年人群体优化
- 包含老年特异性心理健康内容
- 支持简单检索模式(无需额外依赖)
- 可选向量检索模式(需chromadb)
---
## 依赖说明
### 核心依赖
```
Flask>=2.3.0
Flask-CORS>=4.0.0
PyYAML>=6.0
requests>=2.31.0
openai>=1.0.0
```
### ASR依赖(Whisper)
```
torch>=2.1.0
openai-whisper>=20231117
librosa>=0.10.1
pydub>=0.25.1
```
### 多模态依赖
```
deepface>=0.0.79
tf-keras
opencv-python>=4.9.0
```
### TTS依赖(阿里云)
```
alibabacloud-nls-python-sdk
aliyun-python-sdk-core
websocket-client
```
### 可选依赖(向量检索)
```
chromadb>=0.4.0
sentence-transformers>=2.2.0
```
---
## 常见问题
### Q1: 增强对话服务未启用?
A: 检查知识库目录是否存在,查看启动日志是否显示"增强对话服务: 已启用"
### Q2: 风险检测不准确?
A: 风险检测基于关键词+语义分析,可在 `mental_health_detector.py` 中调整关键词
### Q3: Whisper模型下载慢?
A: 首次运行会下载模型(约150MB),可使用镜像或手动下载到 `~/.cache/whisper/`
### Q4: 多模态功能报错?
A: 确保已安装deepface和opencv-python,首次运行会下载DeepFace模型
### Q5: 摄像头无法开启?
A: 确保使用localhost或HTTPS,检查浏览器摄像头权限
---
## 更新日志
### v4.1.0 (2026-03-20) - TTS升级版本
- TTS升级为阿里云新版WebSocket SDK
- 默认声音从xiaoyun改为ailun(更自然的AI声音)
- 新增AI声音:ailun、aiqi、aijia、aiyue
### v4.0.0 (2026-03-12) - 多模态版本
- 新增DeepFace面部表情识别
- 前端集成摄像头采集功能
- 新增多模态上下文注入到LLM
- ASR改用Whisper本地模型
- 新增健康报告生成服务
- 新增会话结束总结功能
- 修复numpy序列化问题
- 新增隐私确认对话框
- 完善.gitignore规则
### v3.0.0 (2026-03-10) - 增强对话版本
- 新增RAG知识库(心理学专业知识)
- 新增心理风险检测(焦虑/抑郁/双相/危机)
- 新增评估-干预-再评估闭环机制
- 优化Prompt为老年人友好版本
### v2.1.0 (2026-03-07) - 阿里云语音版本
- 接入阿里云TTS语音合成
- 接入阿里云ASR语音识别
### v1.0.0 - 初始版本
- 基础文字对话功能
- DeepSeek LLM集成
---
## 相关文档
- [快速开始](QUICK_START.md) - 3步启动系统
- [多模态实现](docs/MULTIMODAL_IMPLEMENTATION.md) - 多模态功能详细说明
- [阿里云配置](docs/ALIYUN_SETUP.md) - TTS服务配置
- [隐私政策](docs/PRIVACY_POLICY.md) - 多模态隐私说明
- [API安全](docs/API_KEY_SECURITY.md) - API Key安全配置
- [赛题要求](docs/A22.md) - A22题目详情
---
## 许可证
本项目用于学术研究和比赛(A22题:基于AI大语言模型的情感陪护虚拟数字人系统)。