案例

项目展示与开发记录。

案例/UE项目

AI 数字人交互

AI digital human interaction

将语音识别、AI 对话、语音合成、口型和人体感知接入 UE 数字人,支持本地、云端及混合部署。

  • 数字人
  • AI交互
  • 语音交互
  • 人体感知
联系合作

封面

返回
本页目录

项目介绍

这是一个将语音对话与人体感知接入 UE 数字人的交互项目。用户说话后,系统识别语音、生成回答并合成音频,再由数字人通过声音、嘴型和表情回应。人体感知提供另一条输入,使角色能够跟随用户方向,并通过动作触发场景交互。

我负责后端服务与 UE 数字人表现之间的集成,包括服务通信、对话流程组织、嘴型与表情驱动、Kinect 数据接入,以及本地、云端和混合部署方式下的联调。

系统组成

环节本地接入方案云端接入方案
语音识别sherpa-ncnnAzure Speech,通过 AzSpeech 接入
AI 对话ChatGLM,或通过 Ollama 运行 DeepSeek网络接口调用远端大模型服务
语音合成ChatTTS、VITSAzure Speech,通过 AzSpeech 接入
嘴型与表情Ynnk Voice Lip-sync 等音频驱动方案UE 接收并应用 Azure Speech 的 Viseme 等动画数据
人体感知Azure Kinect 骨骼数据,结合 UE 与 Control Rig在 UE 侧接入与处理
数字人表现UE、MetaHuman 的角色渲染、声音播放与动画角色仍由 UE 端呈现

不同部署方式按需要组合这些服务。云端部署指 AI 服务运行在远端,数字人的渲染和场景交互仍由 UE 端完成。

我负责的功能

语音对话流程集成

串联语音识别、AI 问答、语音合成和角色回应,组织文本、音频与表现数据的传递。UE 与后端通过 HTTP、UDP 等方式交换数据,后续也接入了使用 WebSocket 的 AI 问答后端。

对话流程依次处理用户语音、识别文本、模型回答、合成音频和角色播放,使每个环节有明确的输入与输出。

数字人声音、嘴型与表情

组织音频播放与嘴型、表情驱动的配合。不同服务提供的数据形式不同,UE 端需要把它们接到角色表现,而不只是播放一段声音。

本地接入使用音频驱动方案;云端方案接收语音服务提供的嘴型及相关动画数据,再由 UE 端应用到角色。

人体感知与场景互动

通过 Azure Kinect 读取骨骼数据,结合角色与场景逻辑实现视线跟随和动作触发,例如让数字人看向用户、通过用户动作控制场景中的电梯升降。

人体感知与语音对话分别接入:前者提供位置和动作信息,后者提供对话内容,两条输入共同参与场景交互。

部署与流程模块化

联调纯本地、纯云端和混合三种部署方式。本地服务通过 Miniconda 分别管理 Python 环境,并处理 PyTorch、CUDA 等依赖;UE 端连接对应服务并组织交互。

后续将原有固定线性逻辑拆分为流程控制与功能模块。C++ 提供基础支持,蓝图组织具体交互,使服务替换与流程调整不必同时改动整套角色表现逻辑。

解决的难点

多个服务需要形成连续的角色回应

语音识别、问答和语音合成各自完成一个环节,返回的数据也不同。单独接通服务,并不意味着数字人已经能够完成一次完整对话。

我把服务调用与角色表现按流程组织,明确文本、回答和音频怎样进入下一步,并在 UE 侧衔接声音播放与嘴型、表情。这样可以分别检查服务处理和角色回应,避免把所有问题都归到数字人动画上。

同一套交互需要适配不同部署方式

纯本地方案需要管理模型运行环境,云端方案需要处理远端接口,混合方案还需要把不同来源的结果送入同一套 UE 交互流程。

我将识别、问答、合成和表现拆成独立接入模块,由流程控制逻辑组织执行。部署方式改变时,主要调整服务的组合与接入,UE 端继续承担场景、角色和具体互动。

语音与人体感知是两种不同输入

语音链路以识别和生成结果推进,人体感知持续提供用户位置与骨骼动作。两者处理的数据和用途不同,不能简单套进同一条线性调用逻辑。

项目中分别接入两条输入,让语音负责对话内容,让人体感知参与视线和场景动作,再在具体交互中组合使用。

实现结果与适用范围

项目完成了语音识别、AI 回答、语音合成与数字人表现的集成,并接入人体感知形成视线跟随和动作触发。部署方面完成了本地、云端与混合三种服务组合的联调,流程控制与功能模块也进行了拆分。

我的工作范围是服务集成、流程组织和 UE 端表现,语音识别、大模型与语音合成使用已有方案。不同组合的响应速度与资源占用取决于所用模型、设备和网络条件。

相关记录