基于魔珐星云SDK的AI实时交互教育数字人实战

0 阅读3分钟

【开源】基于魔珐星云SDK的AI实时交互教育数字人实战

tags: 开源 数字人 Vue3 FastAPI Python AI 魔珐星云


需求背景

在做在线教育产品的过程中,我一直思考一个问题:如何让AI教学更有温度?

传统的AI教学助手,要么是纯文字问答,要么是冰冷的对话框。用户流失率高、完课率低——因为缺乏"存在感"。

于是我开始研究数字人技术,想让AI"活"起来。最终选择接入魔珐星云的具身驱动SDK,开发了这个开源项目:

🔗 AI实时交互教育数字人 - 基于魔珐星云SDK + 通义千问的智能教学平台

项目地址:


技术方案

整体架构

┌─────────────────────────────────────────────────────┐
│                    前端 (Vue 3 + TS)                │
│  ┌─────────┐  ┌──────────┐  ┌───────────────────┐  │
│  │ 数字人渲染 │  │ 课程面板   │  │     终端模拟器     │  │
│  └────┬────┘  └────┬─────┘  └─────────┬─────────┘  │
└───────┼────────────┼──────────────────┼────────────┘
        │            │                  │
        ▼            ▼                  ▼
┌─────────────────────────────────────────────────────┐
│              后端 (FastAPI + Python)                │
│  ┌──────────────┐  ┌────────────┐  ┌────────────┐  │
│  │ 魔珐星云SDK   │  │ 通义千问API │  │ 腾讯云ASR   │  │
│  └──────────────┘  └────────────┘  └────────────┘  │
└─────────────────────────────────────────────────────┘

核心技术栈

模块技术选型说明
前端框架Vue 3 + TypeScript组件化开发,类型安全
构建工具Vite极速开发体验
后端框架FastAPI高性能异步API
数字人SDK魔珐星云超写实数字人渲染
大模型通义千问(Qwen)智能对话能力
语音识别腾讯云ASR语音输入支持

核心功能实现

1. 数字人渲染接入

魔珐星云SDK提供了标准化的Web接入方案,核心代码如下:

// 初始化数字人
import { Avatar } from '@xingyun/avatar-sdk';
​
const avatar = new Avatar({
  appId: process.env.AVATAR_APP_ID,
  appSecret: process.env.AVATAR_APP_SECRET,
  container: '#avatar-container'
});
​
// 监听对话事件
avatar.on('speak', (text) => {
  console.log('数字人正在说:', text);
});
​
avatar.on('action', (action) => {
  console.log('执行动作:', action);
});

2. 对接通义千问

# app.py
from fastapi import FastAPI
import httpx
​
app = FastAPI()
​
@app.post("/api/chat")
async def chat(message: str):
    async with httpx.AsyncClient() as client:
        response = await client.post(
            "https://api.modelscope.cn/v1/qwen/chat",
            headers={"Authorization": f"Bearer {os.getenv('MODEL_SCOPE_API_KEY')}"},
            json={"query": message}
        )
        return response.json()

3. 语音识别集成

// 使用腾讯云ASR进行语音转文字
const recognizeSpeech = async (audioBlob: Blob) => {
  const formData = new FormData();
  formData.append('audio', audioBlob);
​
  const response = await fetch('/api/asr', {
    method: 'POST',
    body: formData
  });
​
  const { text } = await response.json();
  return text;
};

项目结构

Magic_Nebula_Digital_Human/
├── app.py                    # FastAPI 后端
├── Dockerfile                # Docker部署
├── README.md
└── 基础接入demo/
    ├── src/
    │   ├── components/       # Vue组件
    │   │   ├── AvatarPlayer.vue   # 数字人播放器
    │   │   ├── ChatPanel.vue     # 对话面板
    │   │   └── Terminal.vue      # 终端模拟器
    │   ├── services/
    │   │   ├── avatar.ts         # 数字人服务
    │   │   ├── llm.ts            # 大模型服务
    │   │   └── asr.ts            # 语音识别
    │   └── stores/               # 状态管理
    └── package.json

快速部署

方式一:ModelScope 创空间(推荐)

# Fork项目到ModelScope
# 在创空间「设置」→「环境变量」中配置:
AVATAR_APP_ID=你的AppID
AVATAR_APP_SECRET=你的AppSecret
MODEL_SCOPE_API_KEY=你的APIKey

方式二:本地开发

# 克隆项目
git clone https://www.modelscope.cn/studios/Joe2yyo/Magic_Nebula_Digital_Human.git
cd Magic_Nebula_Digital_Human/基础接入demo
​
# 安装依赖
npm install
​
# 启动前端
npm run dev
​
# 新开终端,启动后端
cd ..
pip install fastapi uvicorn httpx websockets
python app.py

方式三:Docker

docker build -t magic-nebula-digital-human .
docker run -p 7860:7860 \
  -e AVATAR_APP_ID=xxx \
  -e AVATAR_APP_SECRET=xxx \
  -e MODEL_SCOPE_API_KEY=xxx \
  magic-nebula-digital-human

效果演示

🎬 B站演示视频: m.bilibili.com/video/BV1SR…

视频演示了:

  • 数字人语音对话交互
  • Git/Docker课程实操教学
  • 终端命令执行与AI即时反馈

踩坑总结

1. 跨域问题

后端使用FastAPI,前端Vite开发时需要配置代理:

// vite.config.ts
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:7860',
        changeOrigin: true
      }
    }
  }
})

2. SDK连接稳定性

生产环境建议增加断线重连机制:

avatar.on('disconnect', () => {
  console.log('连接断开,3秒后重连...');
  setTimeout(() => avatar.connect(), 3000);
});

3. 语音延迟优化

使用WebSocket实时传输,避免轮询造成的延迟感。


后续计划

  • 支持更多课程内容(K8s、数据库等)
  • 增加多数字人切换
  • 接入更多国产大模型
  • Web端实时终端

欢迎PR和Star!🙏


写在最后

魔珐星云的具身驱动技术确实让AI"活"了起来。如果你也想做数字人相关的项目,不妨先注册体验一下:

👉 注册链接: c.c1nd.cn/9C9WW 💎 邀请码: J3VA6QNSW2

未来已来,期待与各位在星云中相遇 🌌


如果对你有帮助,欢迎点赞、评论交流!