news 2026/9/20 16:41:57

Duix-Mobile 集成验证笔记:离线实时 AI 数字人 SDK 怎么在手机上跑通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Duix-Mobile 集成验证笔记:离线实时 AI 数字人 SDK 怎么在手机上跑通

Duix-Mobile 集成验证笔记:离线实时 AI 数字人 SDK 怎么在手机上跑通

【免费下载链接】Duix-Mobile🚀 The best real-time interactive AI avatar(digital human) with on-premise deployment and <1.5 s latency.项目地址: https://gitcode.com/GitHub_Trending/du/Duix-Mobile

Duix-Mobile 是一套实时交互式 AI 数字人移动端 SDK,主打端侧部署:模型跑在手机上,唇形同步与渲染不经过云端。下文的结论和坑位都来自仓库里的文档与源码,不是印象。

仓库结构:一个 Gradle 模块加一套 C++ 核心

先给判断:这个仓库交付的是 SDK,不是装完就能用的 App。两条产品线共享同一套 C++ 核心,你只需要关注自己平台那一侧的封装层。

图:仓库演示素材,展示数字人实时交互画面

Android 侧的入口是 duix-android/dh_aigc_android/,核心是duix-sdk这个 Gradle 模块:

  • 模型检查与下载在VirtualModelUtil,初始化、推流、动作控制在DUIX(见 duix-sdk/src/main/java/ai/guiji/duix/sdk/client/)。
  • 渲染组件DUIXRenderer/DUIXTextureView支持透明背景,也可以自己实现RenderSink接管渲染管线。
  • 真正的算法在 native 层 duix-sdk/src/main/cpp/,按职责拆成三个静态库:dhmfcc做音频前端(FFT、MFCC 特征提取),dhunet做唇形驱动网络,dhcore管内存与队列;依赖 ncnn、onnxruntime 和 OpenCV,由 CMakeLists.txt 统一链接。
  • Java 层只通过DuixNcnn的 native 方法(pushpcmfilrst等)与 C++ 核心通信。

iOS 侧是 duix-ios/GJLocalDigitalSDK/,同一套duixsdka/目录结构与 Android 的 cpp 一一对应(dhmfccdhunetdhcore),对外封装为GJLDigitalManager。维护时改核心算法两端同步,这也是双端行为差异的排查线索。

跑通前的硬门槛:硬件、内存与模型资源

文档给出的集成要求很具体,先核对再动手,能省掉大半排查时间。

项目AndroidiOS
系统Android 10+,armeabi-v7a / arm64-v8aiOS 12.0+,Xcode 12+
硬件参考骁龙 8 Gen 2 级别、8GB 以上内存iPhone 8+,建议 A12+、≥3GB 内存
资源数字人至少占用 800MB 内存,预留 1GB 以上存储
网络无(完全本地运行)

模型资源有两份,都走下载:

  • 基础配置包gj_dh_res,SDK 内置下载地址(见 Constant.java);
  • 人物模型包,官方提供 4 个公开数字人(Leo、Oliver、Sofia、Lily),下载入口在 README 的发布页链接里。

图:官方公开的 4 个数字人模型之一,集成时按需替换

如果模型下载慢,文档明确允许把模型包缓存到自己的存储服务,不强制走官方地址。

最小集成路径:从 clone 到第一帧渲染

git clone https://gitcode.com/GitHub_Trending/du/Duix-Mobile

Android 端按 duix-android 文档 走三步:

  1. duix-sdk目录拷进项目根目录,settings.gradleinclude ':duix-sdk',模块build.gradleapi project(":duix-sdk")
  2. VirtualModelUtil检查并下载基础配置与模型。
  3. 构造DUIX(传入模型、渲染 sink、回调),调init(),初始化结果走init.ready/init.error回调;渲染用DUIXRenderer挂到DUIXTextureView

iOS 端按 duix-ios 文档:拖入GJLocalDigitalSDK.framework(Embed & Sign)、链接AVFoundation,然后在 Info.plist 声明麦克风权限:

<key>NSMicrophoneUsageDescription</key> <string>App requires microphone access to drive digital human voice broadcast</string>

最小调用链是initBaseModel → toStart → toStartRuning,渲染视图必须是已挂载的showView

仓库自带验证素材:demo 工程的 assets 里有现成的 PCM 与 WAV 音频(test/src/main/assets/),res/ 目录有 270p / 540p 两档预渲染人物视频与背景图,跑通前可以直接拿这些文件验证驱动链路,不急着接自己的 TTS。

验证清单可以按顺序做:

  • checkBaseConfig返回 true(配置包已就位);
  • init回调为init.ready
  • 推一段 PCM,听到声音且画面口型同步;
  • 换一个人物模型目录,init仍然成功。

PCM 流驱动:最容易踩的几个坑

数字人靠音频驱动,Android 的驱动协议是startPush → pushPcm → stopPush三段式,文档里写了三条硬约束:

  • 格式固定为 16kHz、单声道、16bit 的 PCM;
  • 每段(两次 push 之间)音频至少 1 秒(32000 字节),否则唇形驱动不会触发,可以用空白帧补齐;
  • 音频不要一次推太长,PCM 会缓存在内存里,长音频可能撑爆内存,应分段推流。

初始化阶段的失败大多有明确原因,Android FAQ 给了对照表:

现象可能原因处理
init 回调失败模型路径错误或未下载checkModel检查模型状态
渲染黑屏EGL 配置或 TextureView 设置问题按文档示例配置
PCM 推流无效果格式不对或未调startPush核对格式与调用顺序

iOS 侧对应四张排查项:初始化返回 -1 查 Info.plist 授权字段、无渲染输出查showView是否挂载、播放无响应查音频格式与路径、播放提前结束查continueSession用法。

适用边界:适合谁,不适合谁

这个 SDK 的卖点"全离线"要拆开看。它离线的是渲染与唇形驱动这条链路;对话本身依赖的 LLM、ASR、TTS 并不在仓库内,官方 FAQ 的答复是"完全支持集成自定义或第三方服务"——也就是说智能程度由你自己接的模型决定,SDK 只负责把音频变成会动的数字人。

几个事实供决策参考:

  • 弱网或完全离线的播报、问答场景是它的主场,这正是文档里反复强调"不依赖服务器"的原因;
  • 定制私有形象走官方邮箱渠道,官方说法是提供 15 秒到 2 分钟的视频即可完成;
  • 流式音频(边合成边播放、支持打断)自 2025 年 7 月 17 日版本起提供;
  • 官方给出的延迟数据是"骁龙 8 Gen 2 上实测低于 120ms",低端设备文档也承认特征提取速度可能跟不上播放速度,可以用duix.setReporter()监控帧渲染信息,是否达标建议在自己的目标机型上实测;
  • iOS 端有授权机制,init返回 0 即未授权,接入前先看文档第 8 节的回调定义。

一句话收束:Duix-Mobile 把"数字人能不能离线跑"从产品问题变成了工程问题——硬件档位、模型资源、PCM 格式三件事核对完,剩下的就是按回调和 FAQ 排查,仓库里的文档比宣传文案更有用。

【免费下载链接】Duix-Mobile🚀 The best real-time interactive AI avatar(digital human) with on-premise deployment and <1.5 s latency.项目地址: https://gitcode.com/GitHub_Trending/du/Duix-Mobile

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 16:40:41

给 Claude Code 配 TaoToken,读透 irqreturn_t 的中断返回

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 16:39:13

UI-TARS Desktop 快速上手指南:5 分钟跑通桌面 GUI 自动化

UI-TARS Desktop 快速上手指南&#xff1a;5 分钟跑通桌面 GUI 自动化 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-deskto…

作者头像 李华
网站建设 2026/9/20 16:36:53

Claude Code 配 TaoToken:Python sqlite3 建表增删改查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 16:33:19

智能零售柜商品检测:从数据集到YOLO11训练全流程解析

简介&#xff1a;为满足智能零售柜商品检测项目对真实商品数据的需求&#xff0c;这套配套资料以PDF文档形式呈现&#xff0c;面向目标检测开发者、算法工程师及新零售场景研究者。资源包共1个文件&#xff0c;大小约5.79MB&#xff0c;内附数据集详细介绍与百度网盘获取方式&a…

作者头像 李华
网站建设 2026/9/20 16:31:15

Navicat Premium 16安装激活与MySQL连接实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 16:30:50

V8 开发命令速查指南:用 gm.py 构建、d8 调试与 run-tests.py 测试

V8 开发命令速查指南&#xff1a;用 gm.py 构建、d8 调试与 run-tests.py 测试 【免费下载链接】v8 The official mirror of the V8 Git repository 项目地址: https://gitcode.com/gh_mirrors/v81/v8 本文是 V8 仓库中 agents/skills/v8-commands/SKILL.md 的深度展开&…

作者头像 李华