22 KiB
华为云交互数字人 MetaStudio 配置完整指南
本文档详细说明如何在华为云 MetaStudio 平台配置交互数字人,涵盖从创建到发布的全流程操作。
目录
一、基础概念
1.1 交互数字人类型
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 2D 数字人 | 真人录制驱动,成本低,部署快 | 客服、讲解、播报 |
| 3D 数字人 | 高精度建模,交互强,表现力丰富 | 品牌代言、展厅展示 |
1.2 核心组件
- 数字人模型:2D/3D 虚拟形象
- 智能语音对话:与数字人实时语音/文字交互
- 知识库:数字人回答的知识来源
- 互动文档:数字人主动播报的内容脚本
- 终端渠道:数字人落地展示的平台
1.3 名词解释
| 名词 | 说明 |
|---|---|
| 知识库 | 数字人回答问题的语料来源,支持文档上传、网页抓取等 |
| 互动文档 | 数字人主动播报的脚本,可配置触发时机 |
| 对话技能 | 控制数字人在特定场景下的对话逻辑 |
| 终端 | 数字人对外展示的渠道,如网页、H5、APP |
| WebRTC | 实时音视频通信协议,用于数字人实时交互 |
二、前置准备
2.1 开通华为云服务
登录 华为云官网,依次开通以下服务:
-
MetaStudio(数字内容生产线)
- 进入 MetaStudio 控制台
- 开通服务,按需选择资源包
-
语音交互服务(可选)
- 如需语音对话,开通 "语音合成 TTS" 和 "语音识别 ASR"
-
IEF(智能边缘平台,可选)
- 如需本地部署数字人终端
2.2 准备资源
- 华为云账号 + IAM 用户(建议创建子账号授权)
- 已备案的域名(生产环境)
- Dify 平台账号(用于对接数字人中转服务)
三、创建数字人项目
3.1 进入 MetaStudio 控制台
- 登录 MetaStudio 控制台
- 左侧菜单选择 数字人 → 交互数字人
- 点击 创建项目
3.2 项目基础信息
| 字段 | 说明 |
|---|---|
| 项目名称 | 如:公司官网数字人客服 |
| 项目描述 | 简要描述项目用途 |
| 地域 | 选择最近地域(如:华北-北京四) |
| 数字人类型 | 2D / 3D,根据需求选择 |
3.3 选择数字人模板
华为 MetaStudio 提供以下模板类型:
| 模板 | 特点 | 适用场景 |
|---|---|---|
| 客服助手模板 | 开箱即用,配置简单 | 官网客服、产品咨询 |
| 讲解员模板 | 支持主动播报内容 | 展厅导览、品牌讲解 |
| 虚拟主播模板 | 支持内容自动播报 | 新闻播报、活动主持 |
| 自定义模板 | 从零配置,灵活度高 | 深度定制需求 |
建议首次使用选择 客服助手模板,快速熟悉流程。
四、角色选择与配置
4.1 选择数字人形象
在 角色配置 页面,选择数字人的外观形象:
方式一:使用平台预设形象
MetaStudio 提供多种预设形象,分为:
| 分类 | 说明 |
|---|---|
| 2D 预设形象 | 真人模特,覆盖多种性别、肤色、服装风格 |
| 3D 预设形象 | 二次元、仿真人、超写实等多种风格 |
选择步骤:
- 在 形象市场 中浏览预设形象
- 点击 预览,查看数字人在不同场景下的表现
- 点击 使用,将形象添加到当前项目
方式二:定制专属形象(需申请)
如需使用真人定制:
- 联系华为云商务,申请定制数字人形象
- 提供多角度真人视频素材(10-15 分钟)
- 华为云制作团队完成建模(约 5-10 个工作日)
4.2 角色参数配置
选定形象后,配置以下参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 音色 | 数字人说话的声音类型 | 根据形象性别/场景选择 |
| 语速 | 播报语速 | 1.0x(正常) |
| 音调 | 声音高低 | 根据场景调整 |
| 音量 | 播报音量 | 80% |
| 口型匹配 | 是否启用口型动画 | 启用 |
| 动作姿态 | 待机/讲解时的肢体动作 | 选择对应场景动作集 |
4.3 背景配置
| 设置项 | 说明 |
|---|---|
| 背景类型 | 纯色 / 虚拟背景 / 透明(抠像) |
| 虚拟背景 | 可上传图片或使用平台提供的场景模板 |
| 分辨率 | 720P / 1080P / 4K |
建议:如数字人部署在网页/H5 上,选择透明背景(WebGL 渲染模式),可叠加在任何网页内容上。
五、终端配置
终端决定了数字人在哪里展示。华为 MetaStudio 支持多种终端类型。
5.1 支持的终端类型
| 终端类型 | 说明 | 适用场景 |
|---|---|---|
| Web(网页端) | 通过浏览器访问,支持 WebRTC | 官网、线上展厅 |
| H5(移动端) | 适配手机浏览器,无需下载 | 微信、小程序内嵌 |
| APP(移动应用) | 集成到企业自有 APP | APP 内嵌数字人 |
| 小程序 | 微信/支付宝小程序 | 微信生态内展示 |
| 线下大屏 | 支持 Linux/Windows 大屏终端 | 展厅、营业厅 |
| API 接入 | 通过 WebSocket/API 调用 | 第三方平台集成 |
5.2 Web 终端配置
创建 Web 终端
- 在项目页面,点击 添加终端 → Web 网页
- 配置以下参数:
| 参数 | 说明 |
|---|---|
| 终端名称 | 如:官网网页端 |
| 域名白名单 | 允许嵌入数字人的域名,如:*.example.com |
| 是否启用 HTTPS | 必须启用,生产环境必须配置 |
| 终端尺寸 | 固定尺寸 / 全屏自适应 |
| 默认语言 | 终端默认语言 |
- 点击 生成嵌入代码,获取 Iframe 或 Web SDK 代码
Iframe 嵌入示例:
<iframe
src="https://your-domain.com/digital-human-embed?token=xxx"
width="100%"
height="600px"
allow="camera; microphone"
frameborder="0"
></iframe>
Web SDK 嵌入示例:
<!-- 引入 SDK -->
<script src="https://cdn.example.com/metastudio-sdk-v2.js"></script>
<!-- 挂载节点 -->
<div id="digital-human-container"></div>
<script>
const dh = new MetaStudioDigitalHuman({
container: '#digital-human-container',
appId: 'your-app-id',
token: 'your-auth-token',
width: '100%',
height: '600px',
language: 'zh_CN',
onReady: () => console.log('数字人已就绪'),
onError: (err) => console.error('错误:', err),
});
dh.start();
</script>
5.3 H5 终端配置
适用于手机浏览器,无需安装 APP:
| 参数 | 说明 |
|---|---|
| 终端名称 | 如:手机H5端 |
| 授权域名 | 微信/浏览器安全域名配置 |
| 是否支持微信内嵌 | 开启后使用微信 JSSDK |
获取分享链接或二维码,扫码即可体验。
5.4 终端通用参数
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 默认语言 | 终端启动时的语言 | zh_CN |
| 自动启动 | 页面加载后自动启动数字人 | 是 |
| 显示水印 | 是否显示华为云水印 | 生产环境关闭 |
| 会话超时 | 无交互自动休眠时间 | 5 分钟 |
六、互动文档配置
互动文档用于配置数字人主动播报的内容,可以是产品介绍、活动说明、迎宾语等。
6.1 创建互动文档
- 在项目左侧菜单选择 内容管理 → 互动文档
- 点击 新建文档
- 填写文档名称(如:
产品介绍-旗舰机型)
6.2 文档结构
互动文档采用结构化脚本格式,支持以下元素:
{
"doc_id": "doc-001",
"doc_name": "产品介绍-旗舰机型",
"language": "zh_CN",
"content": [
{
"type": "greeting",
"text": "您好,欢迎来到我们的产品展厅!"
},
{
"type": "segment",
"title": "关于我们",
"text": "我们是国内领先的智能制造企业,专注于为客户提供高品质的智能产品解决方案。"
},
{
"type": "image",
"url": "https://cdn.example.com/product.jpg",
"description": "产品实物图"
},
{
"type": "segment",
"title": "核心优势",
"text": "我们的产品有三大核心优势:\n1. 高性能处理器\n2. 超长续航能力\n3. 智能交互体验"
},
{
"type": "qa",
"question": "产品价格是多少",
"answer": "具体价格请咨询我们的销售顾问,或拨打400-888-8888。"
},
{
"type": "video",
"url": "https://cdn.example.com/intro.mp4",
"description": "产品介绍视频"
},
{
"type": "goodbye",
"text": "感谢您的参观,如有任何问题,随时向我咨询!"
}
],
"triggers": [
{
"type": "keyword",
"keywords": ["产品", "介绍", "优势"],
"priority": 1
},
{
"type": "schedule",
"cron": "0 9 * * *", // 每天早上9点自动播报
"description": "每日早间播报"
}
]
}
6.3 触发时机配置
互动文档支持多种触发方式:
| 触发类型 | 说明 | 配置方式 |
|---|---|---|
| 关键词触发 | 用户提到特定关键词时播报 | 配置关键词列表,设置优先级 |
| 定时播报 | 按 Cron 表达式定时触发 | 设置 Cron 表达式 |
| 欢迎语触发 | 用户首次进入时播报 | 全局开关控制 |
| 按钮触发 | 用户点击引导按钮时播报 | 生成互动按钮 |
| 手势触发 | 特定手势(如挥手)触发 | 需配置摄像头手势识别 |
6.4 多文档优先级
当多个文档的触发条件同时满足时,按以下优先级处理:
- 问答匹配最高 — 用户问题与 Q&A 完全匹配
- 关键词命中数最多 — 命中关键词最多的文档
- 手动优先级设置 — 在文档属性中手动设置 1-100 优先级
七、对话配置
对话配置是数字人"智能"的核心,决定数字人如何理解和回答用户问题。
7.1 接入中转服务(推荐)
数字人对话推荐通过 digital-human.py 中转服务接入 Dify,无需每个终端单独对接:
数字人终端 --> digital-human.py 中转 --> Dify 知识库 --> LLM --> 响应
|
+--> Redis(多轮对话上下文)
配置步骤:
- 在华为云 MetaStudio 终端配置中,填写中转服务地址:
中转服务地址:https://your-domain.com/digital-human
- 中转服务
POST /digital-human请求参数映射:
| 华为云参数 | 中转服务字段 | 说明 |
|---|---|---|
| 用户 ID | user |
终端用户标识 |
| 会话 ID | session_id |
多轮对话上下文关联 |
| 用户输入 | messages[0].content |
用户问题内容 |
| 应用 ID | app_id |
Dify 应用标识 |
| 流式模式 | is_stream |
是否启用流式响应 |
7.2 Dify 应用配置
7.2.1 创建 Dify 应用
- 登录 Dify 平台
- 创建应用,选择类型:
- 聊天助手:适合问答场景
- Agent:适合复杂任务处理
- Workflow:适合流程化对话
7.2.2 知识库配置
-
在 Dify 应用中,进入 知识库
-
上传文档,支持格式:
- Word(.docx)
- TXT
- Markdown
- 网页 URL
-
文档分段策略:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 自动分段 | AI 自动识别段落 | 通用场景 |
| 固定长度分段 | 每 N 个字符一段 | 结构化文档 |
| 自定义分段 | 手动设置分段点 | 精准控制 |
- 设置Embedding 模型(推荐使用华为云或 OpenAI 的 Embedding 服务)
7.2.3 对话技能配置
在 Dify 应用中配置 提示词,控制数字人回答风格:
你是华为云交互数字人客服,名为"小华"。
你的职责是:
1. 热情、专业地回答用户关于产品和服务的问题
2. 回答简洁有条理,不超过3句话
3. 遇到无法回答的问题,引导用户转人工服务
4. 禁止回答与公司业务无关的问题
7.3 多轮对话配置
通过 Redis 存储 session_id 与 conversation_id 映射,实现多轮对话:
用户: 你好,我想咨询产品
数字人: 您好!很高兴为您服务。请问您想了解哪类产品?
用户: 有没有适合企业使用的?
数字人: 当然有!我们有多款企业级产品,请问您更关注哪个方面?
(A)服务器 (B)存储 (C)网络
用户: A
数字人: 我们的服务器产品分为...
配置要点:
session_id:由终端生成,必须唯一,用于关联同一用户的多轮会话conversation_id:由 Dify 生成,存储在 Redis 中- 会话超时时间:建议设置 30 分钟无交互则清理会话
7.4 意图识别与槽位填充
高级配置:通过 Dify Workflow 配置意图识别:
用户输入
↓
意图分类(识别是"咨询产品"还是"投诉"还是"转人工")
↓
分支处理
├── 咨询产品 → 知识库检索
├── 投诉 → 道歉+记录+转人工
└── 转人工 → 输出转接指令
八、多语言配置
多语言支持让数字人可以服务全球用户,是国际化场景的必备能力。
8.1 支持的语言列表
| 语言代码 | 语言名称 | 说明 |
|---|---|---|
zh_CN |
简体中文 | 默认 |
zh_TW |
繁体中文 | 港澳台地区 |
en_US |
英语 | 国际通用 |
ja_JP |
日语 | 日本市场 |
ko_KR |
韩语 | 韩国市场 |
fr_FR |
法语 | 法国及法语区 |
de_DE |
德语 | 德国及德语区 |
es_ES |
西班牙语 | 西班牙及拉丁美洲 |
pt_BR |
葡萄牙语 | 巴西及葡萄牙 |
ru_RU |
俄语 | 俄罗斯市场 |
ar_SA |
阿拉伯语 | 中东地区(RTL) |
8.2 终端语言配置
在终端配置中设置支持的语言列表:
{
"supported_languages": [
{ "code": "zh_CN", "name": "简体中文", "default": true },
{ "code": "en_US", "name": "English", "default": false },
{ "code": "ja_JP", "name": "日本語", "default": false }
],
"default_language": "zh_CN",
"language_switch_position": "top-right"
}
8.3 数字人音色多语言配置
每种语言需配置对应的音色:
| 语言 | 音色名称 | 参数 |
|---|---|---|
| 简体中文 | 小华-女声-自然 | zh-CN-XiaoxiaoNeural |
| 简体中文 | 小华-男声-正式 | zh-CN-YunxiNeural |
| 英语 | Emma-女声 | en-US-EmmaNeural |
| 英语 | Justin-男声 | en-US-JustinNeural |
| 日语 | Nanami-女声 | ja-JP-NanamiNeural |
配置步骤:
- 进入 角色配置 → 音色设置
- 点击 添加音色
- 选择语言和音色类型
- 预览并确认
8.4 多语言互动文档
每个语言创建独立的互动文档:
内容管理/
├── 互动文档/
│ ├── 产品介绍(中文) doc-zh-CN.json
│ ├── 产品介绍(英文) doc-en-US.json
│ ├── 产品介绍(日文) doc-ja-JP.json
│ └── 欢迎语(多语言) doc-welcome-all.json
文档语言字段:
{
"doc_id": "doc-001",
"language": "en_US",
"content": [
{
"type": "greeting",
"text": "Hello! Welcome to our digital showroom. How can I assist you today?"
}
]
}
8.5 多语言对话路由
在 digital-human.py 中转服务实现多语言路由:
# 根据用户语言选择 Dify 对应的应用
LANGUAGE_APP_MAP = {
"zh_CN": "app-zh-cn-xxx",
"en_US": "app-en-us-xxx",
"ja_JP": "app-ja-jp-xxx",
}
# 从请求中获取语言参数
lang = body.get("language", "zh_CN")
app_id = LANGUAGE_APP_MAP.get(lang, LANGUAGE_APP_MAP["zh_CN"])
8.6 翻译知识库
对于知识库文档较多的场景,建议:
| 方案 | 适用规模 | 说明 |
|---|---|---|
| 多套独立知识库 | 少于 10 个应用 | 每种语言独立维护,简单可靠 |
| 统一知识库 + 翻译中间件 | 大规模多语言 | 知识库统一存储,翻译层按需转换 |
| 多语言 Embedding 模型 | 中等规模 | 使用支持多语言的 Embedding 模型 |
九、发布与上线
9.1 预览测试
在正式发布前,使用 MetaStudio 提供的预览功能:
- 点击右上角 预览
- 在模拟器中选择终端类型(PC / 手机 / 大屏)
- 输入测试问题,验证回答是否正确
- 检查多语言切换是否正常
- 确认互动文档触发是否符合预期
9.2 发布配置
基本信息
| 字段 | 说明 |
|---|---|
| 发布版本号 | 如:v1.0.0,建议遵循语义化版本 |
| 更新说明 | 本次更新的内容简述 |
| 发布环境 | 测试环境 / 预发布 / 正式环境 |
终端发布
| 终端 | 发布前检查项 |
|---|---|
| Web | 域名已备案、HTTPS 证书有效、ICP 许可证(如需) |
| H5 | 微信/支付宝域名白名单已配置 |
| 小程序 | 小程序已在微信平台注册,AppID 填写正确 |
| APP | APP 已上架或已添加测试设备 |
数字人内容审核
华为云对数字人内容有审核机制:
- 内容合规检查:禁止涉及政治、色情、暴力等内容
- 品牌合规检查:涉及商标、品牌需提供授权证明
- AI 安全检查:对话内容通过 AI 安全审核
审核时间:工作日 1-3 个工作日。
9.3 发布上线
审核通过后,点击 立即发布:
发布中 → 部署终端 → 服务启动 → 上线成功
9.4 监控与运维
发布后通过华为云控制台监控:
| 监控项 | 说明 |
|---|---|
| 在线人数 | 当前同时在线的终端用户数 |
| 对话量 | 每小时/每天的对话请求数 |
| 平均响应时间 | Dify → 数字人响应的端到端延迟 |
| 错误率 | 5xx 错误占比 |
| Redis 连接状态 | 会话缓存是否正常 |
告警配置:
- 对话量突增 / 突降
- 错误率超过 5%
- 响应时间超过 10 秒
- Redis 连接失败
十、常见问题
Q1:数字人形象无法加载?
排查步骤:
- 检查网络是否正常
- 检查浏览器控制台是否有 CORS 错误
- 确认终端配置的域名与实际访问域名一致
- 检查 HTTPS 证书是否有效
Q2:对话回答不准确?
排查步骤:
- 检查 Dify 知识库是否已正确关联应用
- 检查文档分段是否合理
- 在 Dify 的"日志"中查看实际检索到的内容
- 调整提示词,减少"幻觉"回答
- 适当提高检索相似度阈值(0.7-0.85 为宜)
Q3:多轮对话上下文丢失?
排查步骤:
- 检查 Redis 是否正常运行:
docker ps | grep redis - 检查
session_id是否每次请求都相同 - 检查 Redis 会话过期时间(默认 86400 秒)
- 查看容器日志是否有 Redis 连接错误
Q4:流式响应延迟高?
排查步骤:
- 检查 Dify 服务响应时间(独立测试 Dify)
- 检查容器服务器与 Dify 服务器之间的网络延迟
- 确认
digital-human.py中generate_streaming_messages是否实时 yield - 检查 Redis 查询耗时(
session_id读取) - 考虑在 Dify 侧开启流式输出(
response_mode: streaming)
Q5:多语言切换不生效?
排查步骤:
- 确认终端配置中已添加对应语言
- 确认该语言的知识库文档已上传
- 确认
digital-human.py中有LANGUAGE_APP_MAP路由 - 终端前端是否正确传递
language参数
Q6:互动文档触发时机不正确?
排查步骤:
- 检查关键词列表是否覆盖用户可能表达的同义词
- 确认文档优先级设置(数字越小优先级越高)
- 检查定时触发 Cron 表达式是否正确
- 在 Dify 日志中确认是否有匹配的知识库内容被检索到
附录
A. 华为云 MetaStudio 官方文档
B. 中转服务快速验证命令
# 健康检查
curl http://localhost:8000/
# 非流式对话测试
curl -X POST http://localhost:8000/digital-human \
-H "Content-Type: application/json" \
-d '{
"messages": [{"content": "你好"}],
"app_id": "app-PDkSHiHZsZIluoZF7N2OlNZM",
"user": "test-user",
"session_id": "test-001",
"is_stream": false
}'
C. 推荐配置清单
□ 华为云 MetaStudio 已开通
□ Dify 平台应用已创建
□ 知识库文档已上传并关联
□ .env 中 DIFY_URL / DIFY_API_KEY 已配置
□ 容器已启动(docker compose up -d --build)
□ 容器状态为 healthy
□ HTTPS 反向代理已配置
□ 域名白名单已在华为云终端配置
□ 多语言知识库和文档已准备
□ 发布审核已通过
□ 上线后监控告警已配置