文章目录
-
-
- 前言:让大模型从"聊天框"里走出来
- [一、 核心技术揭秘:六大优势支撑规模化落地](#一、 核心技术揭秘:六大优势支撑规模化落地)
- [二、 准备工作:平台配置与应用创建](#二、 准备工作:平台配置与应用创建)
-
- 1.注册与登录
- 2.创建具身智能应用
- [3. 角色与风格定义](#3. 角色与风格定义)
- 4.在线调试与SSML预览(可选)
- [三、 核心实战:Web SDK 接入流程](#三、 核心实战:Web SDK 接入流程)
-
- [1. 环境依赖引入](#1. 环境依赖引入)
- [2. 实例化与参数详解](#2. 实例化与参数详解)
- [3. 建立连接 (Init)](#3. 建立连接 (Init))
- 4.完整实操代码 (index.html)
- [四、 进阶开发:让数字人拥有"灵魂"](#四、 进阶开发:让数字人拥有“灵魂”)
-
- [1. 状态机管理:拒绝"呆若木鸡"](#1. 状态机管理:拒绝“呆若木鸡”)
- [2. 多模态动作驱动 (SSML):不只是动嘴](#2. 多模态动作驱动 (SSML):不只是动嘴)
- [3. 实时交互控制:随时打断](#3. 实时交互控制:随时打断)
- [4. 完整的交互闭环逻辑](#4. 完整的交互闭环逻辑)
- 5.进阶完整实操代码 (index.html)
- [五、 避坑指南与最佳实践](#五、 避坑指南与最佳实践)
-
- [1. 错误码排查](#1. 错误码排查)
- [2. 资源释放与生命周期管理](#2. 资源释放与生命周期管理)
- [六、 测评总结与推荐](#六、 测评总结与推荐)
-
免责声明:此篇文章所有内容皆是本人实验,并非广告推广,并非抄袭,如有侵权,请联系
前言:让大模型从"聊天框"里走出来
2024-2025年,AI圈最火的词是什么?除了LLM(大语言模型),一定是具身智能(Embodied AI)。
我们习惯了与ChatGPT在聊天框里打字,但人类最自然的交互方式其实是"面对面"。如果让大模型拥有一个高保真的3D身体,能看、能听、能通过微表情和肢体动作表达情感,这才是下一代互联网的交互形态。
最近,我关注到了 魔珐星云 (Embodia AI) 平台。官方宣称它不仅能生成电影级的3D数字人,更能让开发者"十行代码,即刻拥有"。
口说无凭,作为一名开发者,今天我就带大家深度拆解它的核心技术,并从零开始通过 Web JS SDK 接入,看看它究竟有何不同。
一、 核心技术揭秘:六大优势支撑规模化落地

在开始写代码之前,非常有必要先聊聊魔珐星云 (Embodia AI) 的核心竞争力。它之所以能真正支撑具身智能 3D 数字人的大规模商业化落地,得益于以下六大核心优势,全方位解决了从"画质"到"部署"的行业痛点:
- 高质量 (High Quality):逼真的沉浸式体验
告别僵硬的"纸片人",星云提供逼真的 3D 形象。它不仅能实时生成自然生动的声音,更能同步驱动高精度的面部微表情与肢体动作。这种"音容笑貌"的完美契合,赋予了数字人真实可信的表达力。
- 低延时 (Low Latency):500ms 极致响应
交互体验的生死线在于"快"。星云实现了 500ms 的端到端驱动响应,让交互如流水般自然流畅。更重要的是,它支持随时打断(Full-Duplex),这意味着用户不再需要尴尬地等待数字人把话说完,真正还原了真人面对面的对话体验。
- 高并发 (High Concurrency):千万级稳定承载
针对商业化应用的高流量挑战,星云架构支持千万级设备的同时驱动。无论是双十一大促的电商直播,还是全网用户的高频访问,都能轻松应对,保障服务体验的稳定可靠。
- 低成本 (Low Cost):百元级芯片即可运行
这是对开发者和硬件厂商最大的利好。通过极致的算法优化,星云将算力门槛降到了地板级------百元级芯片即可流畅运行。这大幅降低了端侧设备的部署门槛,让高质量数字人也能在低配硬件上普及。
- 多终端 (Multi-Terminal):全场景覆盖
真正实现了"一次开发,处处运行"。星云全面适配手机、车机、Pad、PC、电视以及各类线下大屏。在系统兼容性上,不仅支持 Android 和 iOS,更完美兼容 鸿蒙 (HarmonyOS) 等主流系统。
- 多角色 (Multi-Role):风格百变
平台内置了丰富的资产库,支持超写实、二次元、卡通、美型等各类 3D 角色风格。无论你是做严肃的商务客服,还是活泼的虚拟偶像,都能找到适配各类人设与场景需求的形象。
二、 准备工作:平台配置与应用创建
在开始写代码之前,我们需要在魔珐星云开放平台获取必要的开发凭证。
1.注册与登录

首先,访问魔珐星云官网](https://xingyun3d.com/?utm_campaign=daily&utm_source=jixinghuiKoc5)。点击右上角的"开发者"或"登录"按钮。
2.创建具身智能应用

进入控制台后,找到"应用管理"或"我的应用"模块,点击"创建新应用",选择"驱动应用"。

这里需要填写几个关键信息:
- 应用名称:例如"智能前台助手"或"我的AI女友"。
- 备注: 对于应用的描述。
- 预览模式: 横屏或竖屏。

3. 角色与风格定义
创建应用后,我们需要"捏人"。不同于传统游戏开发需要建模师耗时数周,星云平台提供了可视化的选角界面。
在这里,你可以选择不同的数字人形象(如商务风的"严选"、亲和力强的"开心"),还能定义她的声音音色(TTSA)和默认的动作风格。

注意 :配置完成后,请务必保存页面上显示的 AppID 和 AppSecret,这是后续前端代码连接"星云大脑"的唯一凭证。

4.在线调试与SSML预览(可选)
在正式写代码接入之前,强烈建议大家点击左侧的 "调试" 按钮进入在线控制台。 在这里,我们可以直接在网页上看到数字人的渲染效果,并且右侧提供了一个 SSML 编辑器 。你可以在这里测试不同的动作指令(如 <ka_intent>Welcome</ka_intent>),确认数字人的动作和口型是否符合预期。

确认在调试台中数字人能够正常加载和说话后,我们就可以放心地打开代码编辑器,开始进行 SDK 的接入了。
三、 核心实战:Web SDK 接入流程
这是本文的硬核部分,我们将在一个标准的 HTML5 页面中接入数字人。
建议在 VSCODE 中下载 Live Server 插件进行操作
1. 环境依赖引入
星云 SDK 的引入非常简单,不依赖复杂的 npm构建流程(当然也支持),直接在 HTML 的 <body> 中引入 UMD 格式的 JS 文件即可。
我们将页面布局分为两部分:一个用于承载 3D 渲染的 div 容器,和 SDK 的脚本引用
html
<!DOCTYPE html>
<html lang="zh-CN">
<body>
<div id="sdk" style="width: 100%; height: 800px;"></div>
<script src="https://media.xingyun3d.com/xingyun3d/general/litesdk/xmovAvatar@latest.js"></script>
</body>
</html>
2. 实例化与参数详解
引入 SDK 后,我们需要通过 new XmovAvatar 创建实例。这一步是配置的核心,决定了数字人如何连接、如何渲染以及如何回调。
根据官方提供的参数表,我们可以看到 containerId、appId、appSecret 和 gatewayServer 是必填项。

下面是完整的初始化代码示例。我建议大家在 onWidgetEvent 和 proxyWidget 中打好日志,这对于调试交互逻辑非常有帮助。
html
const LiteSDK = new XmovAvatar({
containerId: '#sdk',
appId: '',
appSecret: '',
gatewayServer: 'https://nebula-agent.xingyun3d.com/user/v1/ttsa/session',
// 自定义渲染器,传递该方法,所有事件sdk均返回,由该方法定义所以类型事件的实现逻辑
onWidgetEvent(data) {
// 处理widget事件
console.log('Widget事件:', data)
},
// 代理渲染器,sdk默认支持subtitle_on、subtitle_off和widget_pic事件。通过代理,
// 可以修改默认事件,业务侧也可实现各种其他事件。
proxyWidget: {
"widget_slideshow": (data: any) => {
console.log("widget_slideshow", data);
},
"widget_video": (data: any) => {
console.log("widget_video", data);
},
},
onNetworkInfo(networkInfo) {
console.log('networkInfo:', networkInfo)
},
onMessage(message) {
console.log('SDK message:', message);
},
onStateChange(state: string) {
console.log('SDK State Change:', state);
},
onStatusChange(status) {
console.log('SDK Status Change:', status);
},
onStateRenderChange(state: string, duration: number) {
console.log('SDK State Change Render:', state, duration);
},
onVoiceStateChange(status:string) {
console.log("sdk voice status", status);
},
enableLogger: false, // 不展示sdk log,默认为false
})
代码解读:
- gatewayServer: 这是 WebSocket 的网关地址,数字人的语音流、动作流都通过这个长连接实时传输。
- onVoiceStateChange : 这是一个非常实用的回调。当数字人开始说话 (
start) 或结束说话 (end) 时会触发。开发者可以利用这个状态来控制前端 UI(比如显示/隐藏"正在说话"的波纹动画)。
3. 建立连接 (Init)
配置好参数后,数字人并不会立刻出现。我们需要调用 init() 方法来加载资源。
这是一个异步过程 (Promise),因为它需要从云端拉取 3D 模型资产、贴图以及建立 WebSocket 连接。
html
// 建议使用 async/await 语法处理异步初始化async function startNebula() {
try {
await LiteSDK.init({
onDownloadProgress: (progress) => {
console.log(`资源加载进度: ${progress}%`);
}
});
console.log("星云数字人初始化成功,随时待命!");
} catch (error) {
console.error("初始化失败", error);
}
}
4.完整实操代码 (index.html)
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>魔珐星云SDK接入实战Demo</title>
<style>
/* 简单的页面样式,保证全屏显示 */
body { margin: 0; padding: 0; overflow: hidden; background-color: #f0f2f5; font-family: sans-serif; }
/* 数字人渲染容器 */
#sdk {
width: 100vw;
height: 100vh;
background: url('https://images.unsplash.com/photo-1557683316-973673baf926?q=80&w=2029&auto=format&fit=crop') no-repeat center center;
background-size: cover;
}
/* 调试日志显示框 */
#debug-console {
position: absolute; top: 20px; left: 20px;
background: rgba(0, 0, 0, 0.8); color: #00ff00;
padding: 15px; border-radius: 8px; width: 300px;
font-size: 12px; pointer-events: none;
}
</style>
</head>
<body>
<div id="debug-console">
<div>SDK状态监控中...</div>
<div id="logs"></div>
</div>
<div id="sdk"></div>
<script src="https://media.xingyun3d.com/xingyun3d/general/litesdk/xmovAvatar@latest.js"></script>
<script>
// 辅助函数:打印日志到屏幕
function log(msg) {
const logDiv = document.getElementById('logs');
logDiv.innerHTML += `<div>> ${msg}</div>`;
console.log(msg);
}
// --- 【关键配置】请在此处填写你的Key ---
const CONFIG = {
appId: '这里替换为你的AppID',
appSecret: '这里替换为你的AppSecret',
gatewayServer: 'https://nebula-agent.xingyun3d.com/user/v1/ttsa/session' // 官方固定网关
};
// 初始化数字人
async function initAvatar() {
log("正在启动引擎...");
try {
// A. 实例化 SDK
// 对应参数说明见文章配图 image_962017.png
const avatar = new XmovAvatar({
containerId: '#sdk', // 容器选择器
appId: CONFIG.appId,
appSecret: CONFIG.appSecret,
gatewayServer: CONFIG.gatewayServer,
// 回调函数:监听数字人状态
onVoiceStateChange: (status) => {
log(`语音状态变更: ${status}`); // start:开始说话, end:结束
},
onStateChange: (state) => {
log(`当前状态: ${state}`); // idle, listen, think, speak
}
});
// B. 建立连接 (异步操作)
// 对应参数说明见文章配图 image_9622dd.png
await avatar.init({
onDownloadProgress: (progress) => {
log(`资源加载进度: ${progress}%`);
}
});
log("✅ 初始化成功!数字人已上线");
// C. 测试说话 (可选)
// 注意:浏览器通常需要用户点击一次页面后才能自动播放声音
document.body.onclick = () => {
avatar.speak("你好,欢迎接入魔珐星云开发者平台!", true, true);
log("发送测试指令:你好...");
};
log("提示:点击屏幕任意位置测试说话");
} catch (error) {
log("❌ 启动失败: " + error.message);
console.error(error);
}
}
// 页面加载完毕后自动运行
window.onload = initAvatar;
</script>
</body>
</html>
代码解析:
- 引入 SDK :通过
<script src="...">直接引入 UMD 资源,无需 Webpack 打包。 - XmovAvatar:这是 SDK 的核心类,负责管理数字人的生命周期。
- containerId :告诉 SDK 把数字人"画"在哪个
div里。 - init():这是最耗时的一步,SDK 会自动下载模型、贴图并建立 WebSocket 连接。
只需要修改代码中 第 48、49 行 的 CONFIG 配置区域,填入appId和appSecret,在浏览器打开HTML网页就能看到自己配置的数字人

可能渲染页面需要些时间,请耐心等待
四、 进阶开发:让数字人拥有"灵魂"
在完成了基础的初始化连接后,我们只是得到是一个"会说话的模型"。要打造一个真正的具身智能体(Embodied AI Agent),我们需要让她具备感知、思考和表达的能力。
魔珐星云 SDK 提供了一套完整的状态机和 SSML 指令集,我们可以通过简单的 JS 代码实现复杂的拟人化交互。
1. 状态机管理:拒绝"呆若木鸡"
在真实的人机交互中,数字人不应该一直保持"待机"状态。我们需要根据对话的阶段,手动切换她的状态,以提供更真实的沉浸感。
- 倾听态 (Listen):当用户正在说话(ASR识别中)时调用,数字人会身体前倾,做出侧耳倾听的动作。
- 思考态 (Think):当用户说完话,等待大模型(LLM)生成的间隙调用,数字人会做出托腮、皱眉等思考状。
代码实现:
html
// 全局变量 avatar 已在初始化时定义// 场景一:用户开始说话 -> 进入倾听模式
function onUserStartSpeaking() {
if (avatar) {
avatar.listen();
console.log("👂 进入倾听状态...");
}
}
// 场景二:ASR识别完成,发送给LLM -> 进入思考模式// 这一步非常关键,能有效填补 API 请求造成的几秒空白期
function onWaitingForLLM() {
if (avatar) {
avatar.think();
console.log("🤔 进入思考状态...");
}
}
2. 多模态动作驱动 (SSML):不只是动嘴
魔珐星云的一大杀手锏是 文生3D动作 。传统的数字人说话时身体是僵硬的,而我们可以通过 SSML (语音合成标记语言),在让数字人说话的同时,指定她做一个特定的动作(KA)。
我们只需要构造一段包含 <uc4event> 标签的 XML 文本即可。
常用动作意图表:
Welcome: 招手欢迎Thanks: 双手合十/抚胸感谢Bye: 挥手再见Acknowledge: 点头示意
封装通用的动作函数:
html
/**
* 发送带动作的语音指令
* @param {string} intent - 动作关键词 (如 'Welcome', 'Thanks')
* @param {string} text - 数字人要说的台词
*/function speakWithAction(intent, text) {
if (!avatar) return;
// 构造 SSML 结构// <uc4event> 标签告诉引擎:在说话的同时播放 ka_intent 定义的动作const ssml = `
<speak>
<uc4event>
<type>ka_intent</type>
<data>${intent}</data>
</uc4event>
${text}
</speak>
`;
console.log(`▶️ 执行动作: [${intent}]`);
// 参数说明:text, is_start=true, is_end=true (这里演示非流式的一次性发送)
avatar.speak(ssml, true, true);
}
// 调用示例:// speakWithAction('Welcome', '哈喽大家好,欢迎来到魔珐星云开发者平台!');
3. 实时交互控制:随时打断
在全双工对话中,用户可能会随时打断数字人的发言。如果数字人还在喋喋不休,体验会非常糟糕。
SDK 提供了 interactiveIdle() 接口,用于强制中断当前的语音和动作,立即回到交互待机状态。
代码实现:
html
// 场景:用户点击了"停止"按钮,或检测到用户抢话
function stopAvatar() {
if (avatar) {
// 强制打断,瞬间闭嘴并复位
avatar.interactiveIdle();
console.log("🛑 已强制打断");
}
}
4. 完整的交互闭环逻辑
将上述功能串联起来,我们就得到了一个标准的 AI 交互流:
用户说话 (avatar.listen())
⬇️
ASR 识别结束 >
⬇️
请求大模型 (avatar.think())
⬇️
大模型返回结果 >
⬇️
判断意图并回复 (speakWithAction('Welcome', '您好...'))
通过这几十行代码,我们就在 Web 端实现了一个有听觉、有视觉、有反馈的"活"的数字人,这正是具身智能的魅力所在。
5.进阶完整实操代码 (index.html)
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>魔珐星云 Web SDK - 您的专属演示</title>
<style>
/* 全局样式 */
body { margin: 0; overflow: hidden; font-family: 'Segoe UI', sans-serif; background: #000; }
/* 1. 数字人容器 (修复:z-index设为1,确保在最底层) */
#sdk {
width: 100vw; height: 100vh;
/* 背景图 */
background: url('https://images.unsplash.com/photo-1557683316-973673baf926?q=80&w=2029&auto=format&fit=crop') center/cover;
position: absolute; top: 0; left: 0; z-index: 1;
}
/* 2. 左上角日志框 (修复:z-index设为999,防止被遮挡) */
#logs {
position: absolute; top: 10px; left: 10px;
color: #00ff00; background: rgba(0,0,0,0.8);
padding: 15px; font-size: 12px; width: 320px; height: 200px;
border-radius: 8px; overflow-y: auto; pointer-events: none;
font-family: monospace; z-index: 999;
}
/* 3. 底部控制面板 (修复:z-index设为999) */
#controls {
position: absolute; bottom: 40px; left: 50%;
transform: translateX(-50%);
display: flex; gap: 12px; z-index: 999;
background: rgba(255, 255, 255, 0.95);
padding: 15px 25px; border-radius: 50px;
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
}
/* 按钮样式 */
button {
padding: 10px 20px; border: none; border-radius: 20px;
background: #007bff; color: white; cursor: pointer;
font-weight: 600; transition: all 0.2s; white-space: nowrap;
}
button:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0,123,255,0.4); }
button:active { transform: scale(0.95); }
/* 按钮颜色分类 */
button.action { background: #6f42c1; } /* 紫色:动作 */
button.state { background: #17a2b8; } /* 蓝绿:状态 */
button.stop { background: #dc3545; } /* 红色:停止 */
</style>
</head>
<body>
<div id="logs"><div>[系统] 准备连接...</div></div>
<div id="sdk"></div>
<div id="controls">
<button class="action" onclick="doAction('Welcome', '大家好!终于见到你们啦!')">👋 欢迎</button>
<button class="action" onclick="doAction('Thanks', '非常感谢您的支持!比心!')">🙏 感谢</button>
<button class="action" onclick="doAction('Bye', '再见啦,下次聊!')">👋 再见</button>
<button class="state" onclick="setListen()">👂 倾听模式</button>
<button class="state" onclick="setThink()">🤔 思考模式</button>
<button class="stop" onclick="doStop()">🛑 打断</button>
</div>
<script src="https://media.xingyun3d.com/xingyun3d/general/litesdk/xmovAvatar@latest.js"></script>
<script>
// --- 这里的 Key 已经更新为您截图中的最新数据 ---
const CONFIG = {
appId: '这里替换为你的AppID',
appSecret: '这里替换为你的AppSecret',
gatewayServer: 'https://nebula-agent.xingyun3d.com/user/v1/ttsa/session'
};
let avatar = null;
const logDiv = document.getElementById('logs');
// 日志打印
function log(msg) {
const time = new Date().toLocaleTimeString();
logDiv.innerHTML += `<div>[${time}] ${msg}</div>`;
logDiv.scrollTop = logDiv.scrollHeight;
console.log(msg);
}
// 1. 初始化
async function init() {
log("🚀 开始初始化 SDK...");
try {
avatar = new XmovAvatar({
containerId: '#sdk',
appId: CONFIG.appId,
appSecret: CONFIG.appSecret,
gatewayServer: CONFIG.gatewayServer,
onStateChange: (state) => log(`⚡ 状态: ${state}`),
onVoiceStateChange: (s) => {
if(s === 'start') log("🔊 开始说话");
if(s === 'end') log("🔇 说话结束");
}
});
log("⏳ 正在下载3D资源(请耐心等待)...");
await avatar.init({
onDownloadProgress: (p) => {
if(p % 10 === 0) log(`📦 下载进度: ${p}%`);
}
});
log("✅ 初始化成功!请点击下方按钮测试");
// 稍微延迟一点自动打招呼,确保画面已渲染
setTimeout(() => doAction('Welcome', '我准备好啦!'), 1000);
} catch (err) {
log("❌ 错误: " + err.message);
}
}
// 2. 多模态动作 (SSML)
function doAction(intent, text) {
if (!avatar) return log("⚠️ 等待初始化...");
const ssml = `
<speak>
<uc4event>
<type>ka_intent</type>
<data>${intent}</data>
</uc4event>
${text}
</speak>
`;
log(`▶️ 指令: [${intent}]`);
avatar.speak(ssml, true, true);
}
// 3. 倾听模式
function setListen() {
if (!avatar) return;
avatar.listen();
log("👂 进入倾听状态 (Listening)...");
}
// 4. 思考模式
function setThink() {
if (!avatar) return;
avatar.think();
log("🤔 进入思考状态 (Thinking)...");
}
// 5. 强制打断
function doStop() {
if (!avatar) return;
avatar.interactiveIdle();
log("🛑 已打断");
}
window.onload = init;
</script>
</body>
</html>
以上是最终版本的代码,只需要修改代码中 第 75、76 行 的 CONFIG 配置区域,填入appId和appSecret

- 如果显示
下载进度: 10%...:说明正在下载,请等待 30-60 秒,第一次下载比较慢,下载完人物就会出来。 - 如果显示
SDK脚本未加载:说明您的网络访问不了魔珐星云的 JS 文件,请尝试连接手机热点再刷新。 - 如果显示
401 Unauthorized:说明 AppID 还是不对,或者已经被重置了,需要去官网后台重新获取。
五、 避坑指南与最佳实践
在实际调试过程中,我总结了一些常见的错误代码和优化建议,帮助大家少走弯路。
1. 错误码排查
如果在初始化或运行中遇到问题,SDK 会抛出 SDKError。对照官方的错误码表可以快速定位问题。
- 1000x 系列:通常是连接问题,检查网络或 AppID 是否正确。
- 2000x 系列:视频流处理错误,可能与浏览器兼容性有关(建议使用 Chrome/Safari)。
- 4000x 系列:音频解码问题。

2. 资源释放与生命周期管理
很多开发者容易忽略的一点是:资源释放。
当用户离开页面或组件销毁时,务必调用 destroy() 方法。否则,WebSocket 连接会一直占用,不仅消耗客户端内存,还会持续消耗云端的计费时长。

html
// React/Vue 组件卸载时的示例componentWillUnmount() {
if (this.liteSDK) {
this.liteSDK.destroy();
}
}
六、 测评总结与推荐
在测试了市面上十几款同类产品后,Embodia AI是唯一让我觉得"能打"的:
- 降维打击的画质:别的 Web 数字人像 10 年前的网游,Embodia AI的画质像 3A 大作,细节发丝毕现。
- 极致的轻量化:不用担心用户电脑卡顿,所有的渲染压力都在云端,Web 端就像播放视频一样流畅。
- 开发者极其友好:文档清晰,接口人性化,几乎没有学习成本。
- 免费额度真香:对开发者非常大方,注册就有足够的额度让你折腾和验证想法。
AI 的未来,一定是从 2D 走向 3D,从"在线"走向"在场"。
魔珐星云(Embodia AI)已经把也是最难的"造人"门槛降到了地板级。 作为开发者,如果你错过了移动互联网的红利,千万别再错过具身智能的浪潮!
无论你是想给自己的网站加个看板娘,还是想开发一款爆火的 AI 恋爱游戏,魔珐星云都是你的唯一首选。
🔥 别犹豫了,机会不等人!
我已经为大家申请到了专属体验通道。现在点击下方链接,立刻免费获取开发者 Key,30分钟打造你的第一个 3D 数字人!
👉 点击下方专属链接,免费注册并获取开发者 Key,开启你的数字人应用开发:
别让你的 AI 永远只是一行行冰冷的文字,赋予它形象,让它"活"过来!
参考链接: