docs: 新增华为云MetaStudio交互数字人完整配置指南
This commit is contained in:
726
docs/华为云MetaStudio交互数字人配置指南.md
Normal file
726
docs/华为云MetaStudio交互数字人配置指南.md
Normal file
@@ -0,0 +1,726 @@
|
|||||||
|
# 华为云交互数字人 MetaStudio 配置完整指南
|
||||||
|
|
||||||
|
本文档详细说明如何在华为云 MetaStudio 平台配置交互数字人,涵盖从创建到发布的全流程操作。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
- [一、基础概念](#一基础概念)
|
||||||
|
- [二、前置准备](#二前置准备)
|
||||||
|
- [三、创建数字人项目](#三创建数字人项目)
|
||||||
|
- [四、角色选择与配置](#四角色选择与配置)
|
||||||
|
- [五、终端配置](#五终端配置)
|
||||||
|
- [六、互动文档配置](#六互动文档配置)
|
||||||
|
- [七、对话配置](#七对话配置)
|
||||||
|
- [八、多语言配置](#八多语言配置)
|
||||||
|
- [九、发布与上线](#九发布与上线)
|
||||||
|
- [十、常见问题](#十常见问题)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、基础概念
|
||||||
|
|
||||||
|
### 1.1 交互数字人类型
|
||||||
|
|
||||||
|
| 类型 | 说明 | 适用场景 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 2D 数字人 | 真人录制驱动,成本低,部署快 | 客服、讲解、播报 |
|
||||||
|
| 3D 数字人 | 高精度建模,交互强,表现力丰富 | 品牌代言、展厅展示 |
|
||||||
|
|
||||||
|
### 1.2 核心组件
|
||||||
|
|
||||||
|
- **数字人模型**:2D/3D 虚拟形象
|
||||||
|
- **智能语音对话**:与数字人实时语音/文字交互
|
||||||
|
- **知识库**:数字人回答的知识来源
|
||||||
|
- **互动文档**:数字人主动播报的内容脚本
|
||||||
|
- **终端渠道**:数字人落地展示的平台
|
||||||
|
|
||||||
|
### 1.3 名词解释
|
||||||
|
|
||||||
|
| 名词 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 知识库 | 数字人回答问题的语料来源,支持文档上传、网页抓取等 |
|
||||||
|
| 互动文档 | 数字人主动播报的脚本,可配置触发时机 |
|
||||||
|
| 对话技能 | 控制数字人在特定场景下的对话逻辑 |
|
||||||
|
| 终端 | 数字人对外展示的渠道,如网页、H5、APP |
|
||||||
|
| WebRTC | 实时音视频通信协议,用于数字人实时交互 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、前置准备
|
||||||
|
|
||||||
|
### 2.1 开通华为云服务
|
||||||
|
|
||||||
|
登录 [华为云官网](https://www.huaweicloud.com/),依次开通以下服务:
|
||||||
|
|
||||||
|
1. **MetaStudio(数字内容生产线)**
|
||||||
|
- 进入 [MetaStudio 控制台](https://console.huaweicloud.com/metastudio/)
|
||||||
|
- 开通服务,按需选择资源包
|
||||||
|
|
||||||
|
2. **语音交互服务(可选)**
|
||||||
|
- 如需语音对话,开通 "语音合成 TTS" 和 "语音识别 ASR"
|
||||||
|
|
||||||
|
3. **IEF(智能边缘平台,可选)**
|
||||||
|
- 如需本地部署数字人终端
|
||||||
|
|
||||||
|
### 2.2 准备资源
|
||||||
|
|
||||||
|
- 华为云账号 + IAM 用户(建议创建子账号授权)
|
||||||
|
- 已备案的域名(生产环境)
|
||||||
|
- Dify 平台账号(用于对接数字人中转服务)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、创建数字人项目
|
||||||
|
|
||||||
|
### 3.1 进入 MetaStudio 控制台
|
||||||
|
|
||||||
|
1. 登录 [MetaStudio 控制台](https://console.huaweicloud.com/metastudio/)
|
||||||
|
2. 左侧菜单选择 **数字人** → **交互数字人**
|
||||||
|
3. 点击 **创建项目**
|
||||||
|
|
||||||
|
### 3.2 项目基础信息
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 项目名称 | 如:`公司官网数字人客服` |
|
||||||
|
| 项目描述 | 简要描述项目用途 |
|
||||||
|
| 地域 | 选择最近地域(如:华北-北京四) |
|
||||||
|
| 数字人类型 | 2D / 3D,根据需求选择 |
|
||||||
|
|
||||||
|
### 3.3 选择数字人模板
|
||||||
|
|
||||||
|
华为 MetaStudio 提供以下模板类型:
|
||||||
|
|
||||||
|
| 模板 | 特点 | 适用场景 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 客服助手模板 | 开箱即用,配置简单 | 官网客服、产品咨询 |
|
||||||
|
| 讲解员模板 | 支持主动播报内容 | 展厅导览、品牌讲解 |
|
||||||
|
| 虚拟主播模板 | 支持内容自动播报 | 新闻播报、活动主持 |
|
||||||
|
| 自定义模板 | 从零配置,灵活度高 | 深度定制需求 |
|
||||||
|
|
||||||
|
建议首次使用选择 **客服助手模板**,快速熟悉流程。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、角色选择与配置
|
||||||
|
|
||||||
|
### 4.1 选择数字人形象
|
||||||
|
|
||||||
|
在 **角色配置** 页面,选择数字人的外观形象:
|
||||||
|
|
||||||
|
#### 方式一:使用平台预设形象
|
||||||
|
|
||||||
|
MetaStudio 提供多种预设形象,分为:
|
||||||
|
|
||||||
|
| 分类 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 2D 预设形象 | 真人模特,覆盖多种性别、肤色、服装风格 |
|
||||||
|
| 3D 预设形象 | 二次元、仿真人、超写实等多种风格 |
|
||||||
|
|
||||||
|
选择步骤:
|
||||||
|
1. 在 **形象市场** 中浏览预设形象
|
||||||
|
2. 点击 **预览**,查看数字人在不同场景下的表现
|
||||||
|
3. 点击 **使用**,将形象添加到当前项目
|
||||||
|
|
||||||
|
#### 方式二:定制专属形象(需申请)
|
||||||
|
|
||||||
|
如需使用真人定制:
|
||||||
|
1. 联系华为云商务,申请定制数字人形象
|
||||||
|
2. 提供多角度真人视频素材(10-15 分钟)
|
||||||
|
3. 华为云制作团队完成建模(约 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 终端
|
||||||
|
|
||||||
|
1. 在项目页面,点击 **添加终端** → **Web 网页**
|
||||||
|
2. 配置以下参数:
|
||||||
|
|
||||||
|
| 参数 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 终端名称 | 如:`官网网页端` |
|
||||||
|
| 域名白名单 | 允许嵌入数字人的域名,如:`*.example.com` |
|
||||||
|
| 是否启用 HTTPS | **必须启用**,生产环境必须配置 |
|
||||||
|
| 终端尺寸 | 固定尺寸 / 全屏自适应 |
|
||||||
|
| 默认语言 | 终端默认语言 |
|
||||||
|
|
||||||
|
3. 点击 **生成嵌入代码**,获取 Iframe 或 Web SDK 代码
|
||||||
|
|
||||||
|
**Iframe 嵌入示例:**
|
||||||
|
|
||||||
|
```html
|
||||||
|
<iframe
|
||||||
|
src="https://your-domain.com/digital-human-embed?token=xxx"
|
||||||
|
width="100%"
|
||||||
|
height="600px"
|
||||||
|
allow="camera; microphone"
|
||||||
|
frameborder="0"
|
||||||
|
></iframe>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Web SDK 嵌入示例:**
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- 引入 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 创建互动文档
|
||||||
|
|
||||||
|
1. 在项目左侧菜单选择 **内容管理** → **互动文档**
|
||||||
|
2. 点击 **新建文档**
|
||||||
|
3. 填写文档名称(如:`产品介绍-旗舰机型`)
|
||||||
|
|
||||||
|
### 6.2 文档结构
|
||||||
|
|
||||||
|
互动文档采用**结构化脚本**格式,支持以下元素:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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 多文档优先级
|
||||||
|
|
||||||
|
当多个文档的触发条件同时满足时,按以下优先级处理:
|
||||||
|
|
||||||
|
1. **问答匹配最高** — 用户问题与 Q&A 完全匹配
|
||||||
|
2. **关键词命中数最多** — 命中关键词最多的文档
|
||||||
|
3. **手动优先级设置** — 在文档属性中手动设置 1-100 优先级
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、对话配置
|
||||||
|
|
||||||
|
对话配置是数字人"智能"的核心,决定数字人如何理解和回答用户问题。
|
||||||
|
|
||||||
|
### 7.1 接入中转服务(推荐)
|
||||||
|
|
||||||
|
数字人对话推荐通过 `digital-human.py` 中转服务接入 Dify,无需每个终端单独对接:
|
||||||
|
|
||||||
|
```
|
||||||
|
数字人终端 --> digital-human.py 中转 --> Dify 知识库 --> LLM --> 响应
|
||||||
|
|
|
||||||
|
+--> Redis(多轮对话上下文)
|
||||||
|
```
|
||||||
|
|
||||||
|
**配置步骤:**
|
||||||
|
|
||||||
|
1. 在华为云 MetaStudio 终端配置中,填写中转服务地址:
|
||||||
|
|
||||||
|
```
|
||||||
|
中转服务地址:https://your-domain.com/digital-human
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 中转服务 `POST /digital-human` 请求参数映射:
|
||||||
|
|
||||||
|
| 华为云参数 | 中转服务字段 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 用户 ID | `user` | 终端用户标识 |
|
||||||
|
| 会话 ID | `session_id` | 多轮对话上下文关联 |
|
||||||
|
| 用户输入 | `messages[0].content` | 用户问题内容 |
|
||||||
|
| 应用 ID | `app_id` | Dify 应用标识 |
|
||||||
|
| 流式模式 | `is_stream` | 是否启用流式响应 |
|
||||||
|
|
||||||
|
### 7.2 Dify 应用配置
|
||||||
|
|
||||||
|
#### 7.2.1 创建 Dify 应用
|
||||||
|
|
||||||
|
1. 登录 Dify 平台
|
||||||
|
2. 创建应用,选择类型:
|
||||||
|
- **聊天助手**:适合问答场景
|
||||||
|
- **Agent**:适合复杂任务处理
|
||||||
|
- **Workflow**:适合流程化对话
|
||||||
|
|
||||||
|
#### 7.2.2 知识库配置
|
||||||
|
|
||||||
|
1. 在 Dify 应用中,进入 **知识库**
|
||||||
|
2. 上传文档,支持格式:
|
||||||
|
- PDF
|
||||||
|
- Word(.docx)
|
||||||
|
- TXT
|
||||||
|
- Markdown
|
||||||
|
- 网页 URL
|
||||||
|
|
||||||
|
3. 文档分段策略:
|
||||||
|
|
||||||
|
| 策略 | 说明 | 适用场景 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| 自动分段 | AI 自动识别段落 | 通用场景 |
|
||||||
|
| 固定长度分段 | 每 N 个字符一段 | 结构化文档 |
|
||||||
|
| 自定义分段 | 手动设置分段点 | 精准控制 |
|
||||||
|
|
||||||
|
4. 设置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 终端语言配置
|
||||||
|
|
||||||
|
在终端配置中设置支持的语言列表:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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` |
|
||||||
|
|
||||||
|
**配置步骤:**
|
||||||
|
1. 进入 **角色配置** → **音色设置**
|
||||||
|
2. 点击 **添加音色**
|
||||||
|
3. 选择语言和音色类型
|
||||||
|
4. 预览并确认
|
||||||
|
|
||||||
|
### 8.4 多语言互动文档
|
||||||
|
|
||||||
|
每个语言创建独立的互动文档:
|
||||||
|
|
||||||
|
```
|
||||||
|
内容管理/
|
||||||
|
├── 互动文档/
|
||||||
|
│ ├── 产品介绍(中文) doc-zh-CN.json
|
||||||
|
│ ├── 产品介绍(英文) doc-en-US.json
|
||||||
|
│ ├── 产品介绍(日文) doc-ja-JP.json
|
||||||
|
│ └── 欢迎语(多语言) doc-welcome-all.json
|
||||||
|
```
|
||||||
|
|
||||||
|
**文档语言字段:**
|
||||||
|
|
||||||
|
```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` 中转服务实现多语言路由:
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 根据用户语言选择 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 提供的**预览功能**:
|
||||||
|
|
||||||
|
1. 点击右上角 **预览**
|
||||||
|
2. 在模拟器中选择终端类型(PC / 手机 / 大屏)
|
||||||
|
3. 输入测试问题,验证回答是否正确
|
||||||
|
4. 检查多语言切换是否正常
|
||||||
|
5. 确认互动文档触发是否符合预期
|
||||||
|
|
||||||
|
### 9.2 发布配置
|
||||||
|
|
||||||
|
#### 基本信息
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 发布版本号 | 如:`v1.0.0`,建议遵循语义化版本 |
|
||||||
|
| 更新说明 | 本次更新的内容简述 |
|
||||||
|
| 发布环境 | 测试环境 / 预发布 / 正式环境 |
|
||||||
|
|
||||||
|
#### 终端发布
|
||||||
|
|
||||||
|
| 终端 | 发布前检查项 |
|
||||||
|
|:---|:---|
|
||||||
|
| Web | 域名已备案、HTTPS 证书有效、ICP 许可证(如需) |
|
||||||
|
| H5 | 微信/支付宝域名白名单已配置 |
|
||||||
|
| 小程序 | 小程序已在微信平台注册,AppID 填写正确 |
|
||||||
|
| APP | APP 已上架或已添加测试设备 |
|
||||||
|
|
||||||
|
#### 数字人内容审核
|
||||||
|
|
||||||
|
华为云对数字人内容有审核机制:
|
||||||
|
|
||||||
|
1. **内容合规检查**:禁止涉及政治、色情、暴力等内容
|
||||||
|
2. **品牌合规检查**:涉及商标、品牌需提供授权证明
|
||||||
|
3. **AI 安全检查**:对话内容通过 AI 安全审核
|
||||||
|
|
||||||
|
审核时间:工作日 1-3 个工作日。
|
||||||
|
|
||||||
|
### 9.3 发布上线
|
||||||
|
|
||||||
|
审核通过后,点击 **立即发布**:
|
||||||
|
|
||||||
|
```
|
||||||
|
发布中 → 部署终端 → 服务启动 → 上线成功
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.4 监控与运维
|
||||||
|
|
||||||
|
发布后通过华为云控制台监控:
|
||||||
|
|
||||||
|
| 监控项 | 说明 |
|
||||||
|
|:---|:---|
|
||||||
|
| 在线人数 | 当前同时在线的终端用户数 |
|
||||||
|
| 对话量 | 每小时/每天的对话请求数 |
|
||||||
|
| 平均响应时间 | Dify → 数字人响应的端到端延迟 |
|
||||||
|
| 错误率 | 5xx 错误占比 |
|
||||||
|
| Redis 连接状态 | 会话缓存是否正常 |
|
||||||
|
|
||||||
|
**告警配置:**
|
||||||
|
- 对话量突增 / 突降
|
||||||
|
- 错误率超过 5%
|
||||||
|
- 响应时间超过 10 秒
|
||||||
|
- Redis 连接失败
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十、常见问题
|
||||||
|
|
||||||
|
### Q1:数字人形象无法加载?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 检查网络是否正常
|
||||||
|
2. 检查浏览器控制台是否有 CORS 错误
|
||||||
|
3. 确认终端配置的域名与实际访问域名一致
|
||||||
|
4. 检查 HTTPS 证书是否有效
|
||||||
|
|
||||||
|
### Q2:对话回答不准确?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 检查 Dify 知识库是否已正确关联应用
|
||||||
|
2. 检查文档分段是否合理
|
||||||
|
3. 在 Dify 的"日志"中查看实际检索到的内容
|
||||||
|
4. 调整提示词,减少"幻觉"回答
|
||||||
|
5. 适当提高检索相似度阈值(0.7-0.85 为宜)
|
||||||
|
|
||||||
|
### Q3:多轮对话上下文丢失?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 检查 Redis 是否正常运行:`docker ps | grep redis`
|
||||||
|
2. 检查 `session_id` 是否每次请求都相同
|
||||||
|
3. 检查 Redis 会话过期时间(默认 86400 秒)
|
||||||
|
4. 查看容器日志是否有 Redis 连接错误
|
||||||
|
|
||||||
|
### Q4:流式响应延迟高?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 检查 Dify 服务响应时间(独立测试 Dify)
|
||||||
|
2. 检查容器服务器与 Dify 服务器之间的网络延迟
|
||||||
|
3. 确认 `digital-human.py` 中 `generate_streaming_messages` 是否实时 yield
|
||||||
|
4. 检查 Redis 查询耗时(`session_id` 读取)
|
||||||
|
5. 考虑在 Dify 侧开启流式输出(`response_mode: streaming`)
|
||||||
|
|
||||||
|
### Q5:多语言切换不生效?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 确认终端配置中已添加对应语言
|
||||||
|
2. 确认该语言的知识库文档已上传
|
||||||
|
3. 确认 `digital-human.py` 中有 `LANGUAGE_APP_MAP` 路由
|
||||||
|
4. 终端前端是否正确传递 `language` 参数
|
||||||
|
|
||||||
|
### Q6:互动文档触发时机不正确?
|
||||||
|
|
||||||
|
**排查步骤:**
|
||||||
|
1. 检查关键词列表是否覆盖用户可能表达的同义词
|
||||||
|
2. 确认文档优先级设置(数字越小优先级越高)
|
||||||
|
3. 检查定时触发 Cron 表达式是否正确
|
||||||
|
4. 在 Dify 日志中确认是否有匹配的知识库内容被检索到
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 附录
|
||||||
|
|
||||||
|
### A. 华为云 MetaStudio 官方文档
|
||||||
|
|
||||||
|
- 控制台地址:https://console.huaweicloud.com/metastudio/
|
||||||
|
- 产品文档:https://support.huaweicloud.com/metastudio/
|
||||||
|
|
||||||
|
### B. 中转服务快速验证命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 健康检查
|
||||||
|
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 反向代理已配置
|
||||||
|
□ 域名白名单已在华为云终端配置
|
||||||
|
□ 多语言知识库和文档已准备
|
||||||
|
□ 发布审核已通过
|
||||||
|
□ 上线后监控告警已配置
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user