Interactive Avatar 是一个前后端分离的交互式数字人原型系统: 用户可以创建 3D 角色(文本/图片/预设),完成辅助绑骨与场景配置,并在交互页通过语音与手势进行实时会话,最后在 Dashboard 查看模型、会话历史和录屏。
- 多入口建模:文本生成、图片生成、预设角色
- 辅助绑骨流程:8 点位标注 + 任务轮询 + 动作预览
- 场景系统:图库选择、背景上传、文生图、提示词润色
- 实时交互:挥手触发、语音会话、中断与自动结束
- 数据沉淀:模型记录、会话事件、摘要、录屏上传与回看
- 形象生成(
/create) - 辅助绑定(
/rig-preview) - 场景预览(
/scene-preview) - 交互会话(
/interact)
会话结果可在 Dashboard(/dashboard)中检索与回看。
- Frontend: Vite + React 19 + React Router + Three.js + React Three Fiber + MediaPipe
- Backend: FastAPI + SQLAlchemy 2 + Alembic + SQLite + WebSocket
- External Services:
- Meshy(文本/图片生成 3D)
- DashScope / Qwen(实时语音、ASR、提示词润色、文生图)
- Unsplash(可选图库来源)
Interactive Avatar/
├─ frontend/ # React 前端
│ ├─ src/
│ └─ public/
├─ backend/ # FastAPI 后端
│ ├─ app/
│ ├─ alembic/
│ └─ assets/
├─ README.md
cd backend
python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1
# Windows CMD: .venv\Scripts\activate.bat
pip install -r requirements.txt
copy .env.example .env
python -m alembic upgrade head
uvicorn app.main:app --host 0.0.0.0 --port 8788 --reload后端默认地址:http://localhost:8788
cd frontend
npm install
npm run dev前端默认地址:http://localhost:5178
- 访问
http://localhost:5178 - 注册/登录后进入主流程
后端从 backend/.env 读取配置;可先由 .env.example 复制。
DATABASE_URL:数据库连接(默认 SQLite)JWT_SECRET/JWT_ALGORITHM/JWT_EXPIRE_HOURS:鉴权配置MESHY_API_KEY:Meshy 密钥(文本/图片建模)DASHSCOPE_API_KEY:DashScope 密钥(语音、润色、文生图)
QWEN_RT_URL:实时语音 WS 地址QWEN_MODEL:实时语音模型QWEN_VOICE:语音音色QWEN_TEXT_MODEL:文本润色模型QWEN_IMAGE_MODEL:文生图模型QWEN_ASR_MODEL:语音转文字模型QWEN_DEBUG:调试开关(1开启)SYSTEM_PROMPT:会话系统提示词
UNSPLASH_ACCESS_KEY:配置后GET /scenes/library优先走 Unsplash 搜图
预设目录:backend/assets/presets/<name>/
<name>/
├─ avatar.fbx
├─ background.png
├─ view.png # 可选
├─ animations/*.fbx
└─ meta.json # 可选
meta.json 可选字段:
display_name: 预设展示名description: 预设描述hidden: 是否在预设列表中隐藏(true表示隐藏)
- Auth:
POST /auth/register,POST /auth/login,GET /auth/me - Presets:
GET /presets,GET /presets/{name},GET /presets/{name}/animations - Pipeline:
GET/POST /pipeline/textPOST /pipeline/imagePOST /pipeline/presetPOST /pipeline/retryPOST /pipeline/rig,GET /pipeline/rig/{task_id}POST /pipeline/polish-text
- Scene:
GET /scenes/libraryPOST /scenes/generatePOST /scenes/polish-textGET /scenes/proxy-image
- Speech:
POST /speech/transcribe,WS /ws/audio - Records:
GET /models/my,POST /models/saveGET /history/my,GET /history/{session_id}POST /recordings/upload,GET /recordings/my
- 语音输入不可用:确认浏览器允许麦克风权限,且页面运行在
https或localhost。 - 语音转写失败:检查
DASHSCOPE_API_KEY和QWEN_ASR_MODEL。 - 图库未返回在线图片:配置
UNSPLASH_ACCESS_KEY,否则会回退到本地场景。 - 前后端跨域/地址错误:确认前端
VITE_API_BASE(默认http://localhost:8788)。
- 后端静态资源通过
/assets挂载,模型/背景/录屏 URL 均为相对路径。 - 默认数据库文件:
backend/interactive_avatar.db。 - 生产前请替换
JWT_SECRET,并收紧 CORS 策略。
- Start backend on
:8788(uvicorn app.main:app --reload). - Start frontend on
:5178(npm run dev). - Configure API keys in
backend/.envfor Meshy and DashScope features. - Open
http://localhost:5178and run the 4-step flow.