让每一次对话都充满温度
SofterPlease 是一款基于AI语音情绪识别的家庭沟通辅助工具。通过实时分析语音中的情绪特征(语调、语速、音量、用词等),帮助家庭成员在沟通中及时感知情绪变化,获得温和的改善建议,长期建立更和谐的家庭氛围。
spk_xxx ID。用户可重命名显示名称;后续相同音色及历史同 ID 数据会自动归入该档案。/v2 地址,后端直连而不继承电脑 VPN/代理环境,并提供 180 秒读取超时、服务商错误详情及手机端连接测试。┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Web App │ │ iOS App │ │ Android App │ │
│ │ (Vue3) │ │ (Flutter) │ │ (Flutter) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ FastAPI (Python) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ API服务 │ │ WebSocket │ │ 定时任务 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ 对象存储 (S3/OSS) │ │
│ │ (主数据库) │ │ (缓存/队列) │ │ (音频文件) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
SofterPlease/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── main.py # FastAPI主入口
│ │ ├── models.py # SQLAlchemy数据模型
│ │ ├── db.py # 数据库配置
│ │ └── emotion_engine/ # 情绪识别引擎
│ │ ├── emotion_analyzer.py # 情绪分析器
│ │ ├── voice_recognition.py # 声纹识别
│ │ ├── feedback_generator.py # 反馈生成
│ │ └── audio_processor.py # 音频处理
│ ├── requirements.txt
│ └── Dockerfile
├── web/ # Web前端
│ ├── index.html
│ ├── style.css
│ └── main.js
├── mobile/ # 移动端
│ └── flutter_app/ # Flutter应用
│ ├── lib/
│ │ ├── main.dart
│ │ ├── screens/
│ │ ├── widgets/
│ │ ├── providers/
│ │ ├── services/
│ │ ├── models/
│ │ └── utils/
│ └── pubspec.yaml
├── docs/ # 文档
│ ├── DEPLOYMENT.md # 部署手册
│ └── MARKETING.md # 市场推广方案
└── README.md
在项目根目录执行:
# Windows CMD
start.bat
# Windows PowerShell
.\start.ps1
# macOS / Linux
sh start.sh
默认会启动:
http://localhost:8000http://localhost:8000/docshttp://localhost:8080常用参数:
# 首次启动时顺便安装后端依赖
python start.py --install
# 切换情绪识别后端
python start.py --emotion-backend sensevoice
# 修改端口
python start.py --backend-port 8000 --web-port 8080
# 1. 进入后端目录
cd backend
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件配置数据库等信息
# 5. 初始化数据库
alembic upgrade head
# 6. 启动服务
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
cd web
# 直接用浏览器打开 index.html
# 或使用本地服务器
python -m http.server 8080
cd mobile/flutter_app
# 安装依赖
flutter pub get
# 运行
flutter run
# 构建
flutter build apk --release
flutter build ios --release
系统从多个维度分析语音情绪:
声学特征
语义特征
情绪维度
| 等级 | 分数范围 | 颜色 | 状态 |
|---|---|---|---|
| 平静 | 0.0 - 0.3 | 🟢 绿色 | 正常沟通 |
| 轻微 | 0.3 - 0.5 | 🟡 浅绿 | 略有波动 |
| 中等 | 0.5 - 0.7 | 🟠 黄色 | 需要注意 |
| 较高 | 0.7 - 0.85 | 🟠 橙色 | 建议调整 |
| 极高 | 0.85 - 1.0 | 🔴 红色 | 立即干预 |
启动后端服务后访问:http://localhost:8000/docs
POST /v1/users - 创建用户POST /v1/auth/login - 用户登录POST /v1/families - 创建家庭POST /v1/sessions/start - 开始会话POST /v1/sessions/{id}/analyze - 情绪分析POST /v1/sessions/{id}/analyze-long - 长录音 VAD、逐句情绪与说话人分离GET /v1/sessions/{id}/segments - 获取逐句完整记录POST /v1/conversation-segments/{id}/confirm-speaker - 确认角色并学习声纹PATCH /v1/families/{family_id}/speakers/{speaker_id} - 重命名并稳定归类说话人GET /v1/families/{family_id}/speaker-stats - 按说话人和日期统计情绪GET /v1/families/{family_id}/speaker-records - 查询说话人逐句详情POST /v1/advice/generate - 生成家庭沟通与长期趋势建议GET /v1/reports/daily/{family_id} - 日报数据WS /v1/realtime/ws - WebSocket实时通信详细部署文档请参考 DEPLOYMENT.md
| 组件 | 配置 | 数量 |
|---|---|---|
| Web服务器 | 4核8G | 3台 |
| 应用服务器 | 8核16G | 5台 |
| 数据库服务器 | 16核64G | 2台 |
| Redis服务器 | 4核16G | 2台 |
详细推广方案请参考 MARKETING.md
让家庭沟通更温柔
欢迎提交Issue和Pull Request!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)感谢所有为这个项目做出贡献的开发者、设计师和测试人员!
让每一次对话都充满温度 ❤️
27 commits
Python
60.0%
Dart
17.2%
JavaScript
12.3%
HTML
5.2%
CSS
5.0%
让每一次对话都充满温度
SofterPlease 是一款基于AI语音情绪识别的家庭沟通辅助工具。通过实时分析语音中的情绪特征(语调、语速、音量、用词等),帮助家庭成员在沟通中及时感知情绪变化,获得温和的改善建议,长期建立更和谐的家庭氛围。
spk_xxx ID。用户可重命名显示名称;后续相同音色及历史同 ID 数据会自动归入该档案。/v2 地址,后端直连而不继承电脑 VPN/代理环境,并提供 180 秒读取超时、服务商错误详情及手机端连接测试。┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Web App │ │ iOS App │ │ Android App │ │
│ │ (Vue3) │ │ (Flutter) │ │ (Flutter) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ FastAPI (Python) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ API服务 │ │ WebSocket │ │ 定时任务 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ 对象存储 (S3/OSS) │ │
│ │ (主数据库) │ │ (缓存/队列) │ │ (音频文件) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
SofterPlease/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── main.py # FastAPI主入口
│ │ ├── models.py # SQLAlchemy数据模型
│ │ ├── db.py # 数据库配置
│ │ └── emotion_engine/ # 情绪识别引擎
│ │ ├── emotion_analyzer.py # 情绪分析器
│ │ ├── voice_recognition.py # 声纹识别
│ │ ├── feedback_generator.py # 反馈生成
│ │ └── audio_processor.py # 音频处理
│ ├── requirements.txt
│ └── Dockerfile
├── web/ # Web前端
│ ├── index.html
│ ├── style.css
│ └── main.js
├── mobile/ # 移动端
│ └── flutter_app/ # Flutter应用
│ ├── lib/
│ │ ├── main.dart
│ │ ├── screens/
│ │ ├── widgets/
│ │ ├── providers/
│ │ ├── services/
│ │ ├── models/
│ │ └── utils/
│ └── pubspec.yaml
├── docs/ # 文档
│ ├── DEPLOYMENT.md # 部署手册
│ └── MARKETING.md # 市场推广方案
└── README.md
在项目根目录执行:
# Windows CMD
start.bat
# Windows PowerShell
.\start.ps1
# macOS / Linux
sh start.sh
默认会启动:
http://localhost:8000http://localhost:8000/docshttp://localhost:8080常用参数:
# 首次启动时顺便安装后端依赖
python start.py --install
# 切换情绪识别后端
python start.py --emotion-backend sensevoice
# 修改端口
python start.py --backend-port 8000 --web-port 8080
# 1. 进入后端目录
cd backend
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件配置数据库等信息
# 5. 初始化数据库
alembic upgrade head
# 6. 启动服务
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
cd web
# 直接用浏览器打开 index.html
# 或使用本地服务器
python -m http.server 8080
cd mobile/flutter_app
# 安装依赖
flutter pub get
# 运行
flutter run
# 构建
flutter build apk --release
flutter build ios --release
系统从多个维度分析语音情绪:
声学特征
语义特征
情绪维度
| 等级 | 分数范围 | 颜色 | 状态 |
|---|---|---|---|
| 平静 | 0.0 - 0.3 | 🟢 绿色 | 正常沟通 |
| 轻微 | 0.3 - 0.5 | 🟡 浅绿 | 略有波动 |
| 中等 | 0.5 - 0.7 | 🟠 黄色 | 需要注意 |
| 较高 | 0.7 - 0.85 | 🟠 橙色 | 建议调整 |
| 极高 | 0.85 - 1.0 | 🔴 红色 | 立即干预 |
启动后端服务后访问:http://localhost:8000/docs
POST /v1/users - 创建用户POST /v1/auth/login - 用户登录POST /v1/families - 创建家庭POST /v1/sessions/start - 开始会话POST /v1/sessions/{id}/analyze - 情绪分析POST /v1/sessions/{id}/analyze-long - 长录音 VAD、逐句情绪与说话人分离GET /v1/sessions/{id}/segments - 获取逐句完整记录POST /v1/conversation-segments/{id}/confirm-speaker - 确认角色并学习声纹PATCH /v1/families/{family_id}/speakers/{speaker_id} - 重命名并稳定归类说话人GET /v1/families/{family_id}/speaker-stats - 按说话人和日期统计情绪GET /v1/families/{family_id}/speaker-records - 查询说话人逐句详情POST /v1/advice/generate - 生成家庭沟通与长期趋势建议GET /v1/reports/daily/{family_id} - 日报数据WS /v1/realtime/ws - WebSocket实时通信详细部署文档请参考 DEPLOYMENT.md
| 组件 | 配置 | 数量 |
|---|---|---|
| Web服务器 | 4核8G | 3台 |
| 应用服务器 | 8核16G | 5台 |
| 数据库服务器 | 16核64G | 2台 |
| Redis服务器 | 4核16G | 2台 |
详细推广方案请参考 MARKETING.md
让家庭沟通更温柔
欢迎提交Issue和Pull Request!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)感谢所有为这个项目做出贡献的开发者、设计师和测试人员!
让每一次对话都充满温度 ❤️
27 commits
Python
60.0%
Dart
17.2%
JavaScript
12.3%
HTML
5.2%
CSS
5.0%