Skip to content

Commit 4aba1a2

Browse files
author
shijiashuai
committed
Merge branch 'master' of https://github.com/LessUp/MetaHuman
# Conflicts: # server/app/main.py # src/components/BehaviorControlPanel.tsx # src/components/DigitalHumanViewer.tsx # src/components/VoiceInteractionPanel.tsx # src/core/audio/audioService.ts # src/core/avatar/DigitalHumanEngine.ts # src/core/vision/visionMapper.ts # src/core/vision/visionService.ts # src/pages/AdvancedDigitalHumanPage.tsx # src/pages/DigitalHumanPage.tsx
2 parents 2a7d83d + d6d7789 commit 4aba1a2

22 files changed

+2697
-495
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ dist-ssr
2121
*.ntvs*
2222
*.njsproj
2323
*.sln
24-
*.sw?
24+
*.sw?
25+
26+
__pycache__/
27+
*.pyc
Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
# MetaHuman 功能完善更新
2+
3+
**日期**: 2025-11-25
4+
**类型**: 功能增强、逻辑可靠性提升
5+
6+
---
7+
8+
## 概述
9+
10+
本次更新主要针对项目已有功能进行完善,增强逻辑可靠性和产品功能完整性。
11+
12+
---
13+
14+
## 变更详情
15+
16+
### 1. 状态管理增强 (`digitalHumanStore.ts`)
17+
18+
- **新增字段**:
19+
- `currentBehavior`: 当前行为状态
20+
- `sessionId`: 持久化会话ID(localStorage)
21+
- `chatHistory`: 聊天历史记录
22+
- `connectionStatus`: 连接状态(connected/connecting/disconnected/error)
23+
- `lastErrorTime`: 最后错误时间
24+
25+
- **新增类型定义**:
26+
- `EmotionType`: 情感类型枚举
27+
- `ExpressionType`: 表情类型枚举
28+
- `BehaviorType`: 行为类型枚举
29+
- `ConnectionStatus`: 连接状态枚举
30+
31+
- **新增方法**:
32+
- `setBehavior()`: 设置行为状态
33+
- `setConnectionStatus()`: 设置连接状态
34+
- `clearError()`: 清除错误
35+
- `initSession()`: 初始化新会话
36+
- `addChatMessage()`: 添加聊天消息
37+
- `clearChatHistory()`: 清除聊天历史
38+
39+
---
40+
41+
### 2. 语音服务重构 (`audioService.ts`)
42+
43+
#### TTSService 增强
44+
- 添加配置接口 `TTSConfig`
45+
- `speak()` 方法改为 Promise 接口
46+
- 自动同步行为状态(speaking/idle)
47+
- 添加 `pause()`/`resume()` 方法
48+
- 改进语音选择逻辑
49+
50+
#### ASRService 重构
51+
- 添加回调接口 `ASRCallbacks`
52+
- 添加配置接口 `ASRConfig`
53+
- **整合对话服务**: 语音识别结果自动发送到后端
54+
- 本地命令优先处理(播放、暂停、重置等)
55+
- 改进错误消息(中文友好提示)
56+
- 新增预设动作方法:
57+
- `performGreeting()`: 打招呼
58+
- `performDance()`: 跳舞
59+
- `performNod()`: 点头
60+
- `performShakeHead()`: 摇头
61+
- `performThinking()`: 思考
62+
63+
---
64+
65+
### 3. 对话服务增强 (`dialogueService.ts`)
66+
67+
- **重试机制**: 最多3次重试,指数退避
68+
- **超时处理**: 15秒请求超时
69+
- **降级响应**: 服务不可用时返回本地响应
70+
- **连接状态管理**: 自动更新 store 中的连接状态
71+
- **错误类**: `DialogueApiError` 带状态码和可重试标志
72+
- **健康检查**: `checkServerHealth()` 函数
73+
74+
---
75+
76+
### 4. 数字人引擎增强 (`DigitalHumanEngine.ts`)
77+
78+
- 添加类型验证(表情、情感、行为)
79+
- 情感与表情自动映射
80+
- 动作自动恢复到 idle 状态
81+
- 新增组合动作方法:
82+
- `performGreeting()`
83+
- `performThinking()`
84+
- `performListening()`
85+
86+
---
87+
88+
### 5. 视觉服务增强 (`visionService.ts`)
89+
90+
- 状态管理: `VisionStatus` 类型
91+
- FPS 计算
92+
- 摄像头权限检查
93+
- 详细错误消息(权限拒绝、设备未找到等)
94+
- 回调接口: `VisionServiceCallbacks`
95+
- 新增方法: `getStatus()`, `getFps()`, `isRunning()`
96+
97+
---
98+
99+
### 6. 页面逻辑完善 (`AdvancedDigitalHumanPage.tsx`)
100+
101+
- 使用 store 的 `chatHistory` 替代本地状态
102+
- 使用 store 的 `sessionId`
103+
- 服务器连接状态检查(启动时和定期检查)
104+
- 错误自动清除(5秒后)
105+
- HUD 显示连接状态、行为状态、会话数量
106+
- 重新连接按钮
107+
- 输入框状态反馈(加载中、录音中)
108+
- 错误提示条
109+
- **Quick Actions 实现**: 打招呼、跳舞、说话、表情
110+
111+
---
112+
113+
### 7. 后端增强 (`server/app/main.py`)
114+
115+
- CORS 中间件配置
116+
- 增强的健康检查端点(返回运行时间、服务状态)
117+
- 根路径信息端点
118+
119+
---
120+
121+
## 文件变更列表
122+
123+
| 文件 | 变更类型 |
124+
|------|----------|
125+
| `src/store/digitalHumanStore.ts` | 重构 |
126+
| `src/core/audio/audioService.ts` | 重构 |
127+
| `src/core/dialogue/dialogueService.ts` | 重构 |
128+
| `src/core/avatar/DigitalHumanEngine.ts` | 重构 |
129+
| `src/core/vision/visionService.ts` | 增强 |
130+
| `src/pages/AdvancedDigitalHumanPage.tsx` | 增强 |
131+
| `server/app/main.py` | 增强 |
132+
133+
---
134+
135+
## 测试建议
136+
137+
1. **语音交互测试**:
138+
- 测试语音识别是否正确发送到后端
139+
- 测试本地命令("打招呼"、"跳舞"等)
140+
- 测试静音状态下的行为
141+
142+
2. **错误处理测试**:
143+
- 关闭后端测试离线模式
144+
- 测试网络超时情况
145+
- 测试摄像头权限拒绝
146+
147+
3. **状态同步测试**:
148+
- 验证会话ID持久化
149+
- 验证聊天历史保持
150+
- 验证连接状态显示
151+
152+
---
153+
154+
## 自动检查修复 (第二轮)
155+
156+
### 修复内容
157+
158+
1. **DigitalHumanPage.tsx**
159+
- 移除所有 `console.log` 调试语句
160+
- 移除 `alert()` 调用,改用 toast 提示
161+
- 移除测试按钮
162+
- 实现 `handleVoiceCommand` 真正功能
163+
- 集成 `connectionStatus` 状态显示
164+
165+
2. **BehaviorControlPanel.tsx**
166+
- 移除未使用的 `learningRate` 变量
167+
- 移除未使用的 `setDecisionInterval`
168+
169+
3. **ExpressionControlPanel.tsx**
170+
- 移除未使用的 `customColor` 变量
171+
172+
4. **VoiceInteractionPanel.tsx**
173+
- 移除 `console.log` 调试语句
174+
- 集成 `useDigitalHumanStore` 状态同步
175+
- 语音状态与全局 store 同步
176+
177+
5. **digitalHumanStore.ts**
178+
- 移除所有 `console.log` 调试语句
179+
- 录音超时从 10 秒改为 30 秒
180+
181+
---
182+
183+
## 功能完善 (第三轮)
184+
185+
### 1. ControlPanel 系统状态显示
186+
187+
- **问题**: Diagnostics 部分使用硬编码值
188+
- **修复**:
189+
- 连接状态从 store 实时获取
190+
- 显示当前行为状态
191+
- 显示语音引擎状态
192+
- 显示录音状态
193+
194+
### 2. visionMapper 情感识别增强
195+
196+
- **新增情感**: `sad`(悲伤)、`angry`(愤怒)
197+
- **改进算法**:
198+
- 添加眼睛开合度检测
199+
- 添加眉毛位置检测
200+
- 添加嘴角上扬/下拉检测
201+
- **新增调试函数**: `analyzeFaceFeatures()` 用于调试
202+
203+
### 3. 键盘快捷键支持
204+
205+
| 快捷键 | 功能 |
206+
|--------|------|
207+
| `空格` | 播放/暂停 |
208+
| `R` | 重置 |
209+
| `M` | 静音切换 |
210+
| `V` | 录音切换 |
211+
| `S` | 设置面板 |
212+
| `ESC` | 关闭设置 |
213+
| `1` | 打招呼 |
214+
| `2` | 跳舞 |
215+
| `3` | 说话 |
216+
| `4` | 表情 |
217+
218+
### 4. 后端对话服务增强
219+
220+
- **会话历史管理**: 自动保存和加载会话历史
221+
- **智能 Mock 回复**: 根据用户输入生成合理的本地回复
222+
- **LLM 上下文**: 将历史对话作为 LLM 上下文
223+
- **新增 API**:
224+
- `clear_session()`: 清除会话历史
225+
- `get_session_history()`: 获取会话历史
226+
227+
---
228+
229+
## 用户体验增强 (第四轮)
230+
231+
### 1. VisionMirrorPanel 增强
232+
233+
- **情感颜色映射**: 5种情感对应不同颜色
234+
- **情感标签**: 中文+emoji显示
235+
- **加载状态**: 启动摄像头时显示加载动画
236+
- **错误处理**: 摄像头启动失败时显示友好提示
237+
- **FPS 显示**: 实时显示处理帧率
238+
- **可访问性**: 添加 `aria-label`
239+
240+
### 2. 新增 UI 组件
241+
242+
#### LoadingSpinner (`/components/ui/LoadingSpinner.tsx`)
243+
- 支持三种尺寸: `sm`/`md`/`lg`
244+
- 支持自定义文本
245+
- 支持全屏遮罩模式
246+
247+
#### ErrorBoundary (`/components/ui/ErrorBoundary.tsx`)
248+
- 捕获组件渲染错误
249+
- 显示友好的错误界面
250+
- 支持重试和刷新操作
251+
- 开发环境显示详细堆栈
252+
253+
### 3. 新增 Hooks
254+
255+
#### useTouch (`/hooks/useTouch.ts`)
256+
- 滑动检测 (左/右/上/下)
257+
- 点击和双击检测
258+
- 长按检测
259+
- 可配置阈值
260+
261+
### 4. App 架构优化
262+
263+
- **懒加载**: 页面组件使用 `React.lazy()` 按需加载
264+
- **错误边界**: 全局错误捕获和恢复
265+
- **加载状态**: 页面切换时显示加载动画
266+
267+
### 文件新增/变更
268+
269+
| 文件 | 类型 |
270+
|------|------|
271+
| `src/components/ui/LoadingSpinner.tsx` | 新增 |
272+
| `src/components/ui/ErrorBoundary.tsx` | 新增 |
273+
| `src/components/ui/index.ts` | 新增 |
274+
| `src/hooks/useTouch.ts` | 新增 |
275+
| `src/components/VisionMirrorPanel.tsx` | 增强 |
276+
| `src/App.tsx` | 重构 |
277+
278+
---
279+
280+
## 后续优化建议
281+
282+
1. 添加会话历史导出功能
283+
2. 实现流式对话响应
284+
3. 添加更多预设动作和表情
285+
4. 优化 3D 模型动画系统
286+
5. 添加用户设置持久化
287+
6. 增加更专业的数字人模型
288+
7. PWA 离线支持

0 commit comments

Comments
 (0)