自建数字人直播与 AI 换脸
需要长期播报、并希望避免按 token 或音视频时长支付云端推理费用时,可以使用吾码 AI 应用广场的 自建数字人直播(digital-human-live)。吾码管理话术、知识和测试记录;中文语音、文字问答与口型画面在用户自己的电脑上生成。本机 WebRTC 画面页可用于浏览器预览;接入 OBS 时还需在实际安装的 OBS 版本中单独验证音画连接。
这里的“免费”指所选模型在本机推理没有供应商调用账单。电脑、显卡、电费、存储,以及吾码部署本身的授权或托管成本仍然存在。本应用没有修改或绕过吾码内置 AI 引擎的 License 校验,也不消耗 MiniMax、吾码 AI 中转或其它在线试用额度。
4K 功能截图
以下十六图均为实际应用页面或本机 OBS 录制帧。桌面图原始像素为 3840 × 2160;手机链路竖屏图为 2160 × 3840。点击可查看原图。这里的 4K 指界面截图或 OBS 输出尺寸,模型输出仍为 480 × 640,不应理解成 4K 模型推理。第一张是本机生成中文语音和口型后,经浏览器 WebRTC 收到的画面;所用人像为文档制作的合成演示素材。第二至第七张记录早期二维换脸、服饰动作及 OBS 片段录制效果,可作为历史基线;末尾三张分别是神经头像与虚拟手机摄像头联动、神经头像经 OBS 媒体来源录制,以及 MuseTalk 缓冲播报经 OBS 浏览器来源接收中文音画。神经头像短片推理约 6.85 fps,仍未达到流畅摄像头直播。手机链路截图不是实体手机或商用画质证明。其余工作台和本机设置显示未配对状态;话术与知识库以隔离的示例数据渲染,不代表线上租户的业务回读或外部平台真实开播。
















组成与能力边界
| 层次 | 本版实现 | 负责内容 |
|---|---|---|
| 吾码管理 | MicroService、FormEngine、DiyToken | 话术、问答知识、角色权限、测试记录 |
| 本机推理 | Qwen3 0.6B、MeloTTS、MuseTalk 1.5 | 组织回答、中文语音、口型画面 |
| 本机头像 | LivePortrait 神经生成模块、FasterLivePortrait ONNX 预处理、MediaPipe 检测 | 单张照片的脸部表情与头部动作;保留照片的头发、衣服和背景 |
| 本机输出 | WebRTC、MP4、OBS 媒体来源或浏览器来源 | 保存音画片段,并在 OBS 验证捕获与推流配置 |
照片人物动作与视频换脸
【AI 换脸与动作】提供三种本机模式。神经网络头像根据驱动视频的头部表情生成源照片人物的新表情,源照片中的头发、服装和背景保持原样;它适合单人正脸及小幅转头,不会让整套衣服按拍摄者的手脚动作移动。实验性二维换脸以拍摄视频为主体,保留视频中的头发、衣服与背景,但脸部边缘和肤色融合目前不够自然。实验性二维服饰动作从照片提取人物轮廓、服装与姿态,以二维网格形变跟随视频;遮挡、转身和手部交叉会明显失真。这两种二维模式不可宣称高保真商业效果。
点击生成时,浏览器先调用吾码接口引擎 dhl-motion-prepare;引擎使用当前 DiyToken、当前租户与【直播测试记录】菜单权限核准任务,再调用可由租户扩展的 dhl-motion-hook。接口只返回本机执行契约,不接收照片或视频字节。网页随后把素材提交到配对的 127.0.0.1:17861 本机服务;完成后在本机预览、下载 MP4,可选择保存不含媒体内容的测试记录。只换脸和人物服饰动作都支持摄像头实时预览:浏览器逐帧送到同一回环服务的 WebSocket,再显示处理帧。输出嵌入“AI 生成”标识。源人物和拍摄者都需允许这种用途,不应把合成画面冒充真人身份。
神经网络头像由固定版本的 LivePortrait/FasterLivePortrait 模型在本机 CUDA 显卡推理,用 MediaPipe 替代 InsightFace 检测模型;安装时下载权重,推理时不调用云端模型,也不计 MiniMax token。输出视频最长 15 秒、最多 450 帧、处理宽度最多 640 像素。v0.4.1 对生成模块启用 CUDA 半精度后,RTX 2080 SUPER 本机合成样例经完整 HTTP 任务生成 24 帧、2 秒、480 × 640 MP4,实测推理 6.85 fps,任务最终成功,文件 95,573 字节;同一任务在 v0.4.0 为 4.9 fps。浏览器模拟手机摄像头到本机服务也产生了真实头像画面。视频文件按 12 fps 播放不表示推理达 12 fps。原二维模式历史样例曾分别达到约 21 fps,但画质较差,不能据此推出神经网络模式的直播能力。
另以神经网络头像输出尝试只替换驱动视频中的脸部:24 帧都完成了处理,约 6.66 fps,但测试画面保留了拍摄者的胡须和头发,脸部下缘可见接缝;该原型未发布,不能作为高质量换脸样例。零授权费选型还需核查整条依赖链:FaceFusion 官方模型清单将 GHOST 标为 Apache-2.0,却将 ArcFace 和 INSwapper 标为非商用;其当前人脸识别实现用 ArcFace 产生身份向量,GHOST 路线再使用 CrossFace 转换。因此仅凭 GHOST 的许可,不能宣称这套现成换脸链路已满足零授权费商业交付。此项仍需找到并实测许可相容的身份提取与换脸模型,或取得所需权利。
手机摄像头局域网接入
电脑先在【本机设置】连接回环服务,再进入【AI 换脸与动作】选择已获授权的源照片和“手机摄像头”,创建 8 位连接码。手机与电脑连接同一局域网,在吾码发布的手机摄像头页面用同一个吾码账号登录,输入连接码、确认使用权并授予摄像头权限。电脑显示“手机摄像头已连接”后选择神经网络头像或实验模式并启动预览;停止发送、离开手机页面或锁屏会释放摄像头。首次配对之外,手机不需要连接电脑的 127.0.0.1:该地址只由电脑浏览器访问。
dhl-phone-signal 接口引擎使用当前 DiyToken、租户、登录用户和【直播测试记录】菜单权限交换 WebRTC 连接信息,房间有效期为 10 分钟。接口引擎不接收相机帧或源照片;相机帧由两端浏览器在局域网内点对点传送,再由电脑浏览器送入本机回环服务。连接信息会经过吾码服务器,因此“媒体留在本机”不等于“没有任何控制信息离开设备”。该版不配置公网 STUN/TURN;不同网络、访客 Wi-Fi 客户端隔离和部分防火墙下连接会失败。
2026-10-07 的自动化在两套独立浏览器会话中,用虚拟摄像头验证了房间建立、同账号信令、电脑端 WebRTC 视频解码、本机服务处理和页面画布显示。v0.4.1 神经网络头像一次回读为 20 帧、205,023 字节到达电脑,画布生成非透明图像;此前二维模式回读为 20 帧、214,205 字节。v0.4.2 另完成了 OBS 浏览器来源接收缓冲播报音画的独立测试,仍未用实体手机验证摄像头链路、长时连续换脸、手机画面进入 OBS 或外部直播平台观众端。上述截图和短样例不构成商业交付验收通过。
本版采用 片段先生成、完成后播报 的缓冲方式。支持话术播报和手动输入观众问题;完成的片段按队列播放,空闲时保持人像。问答延迟包含文字生成、语音生成和口型生成,不能把“输出 25 fps”当成“模型实时生成 25 fps”。工作台展示的口型生成帧率和耗时来自本机实测。
当前不自动采集抖音、视频号等平台弹幕,不代替 OBS 的平台推流配置,也不提供声音克隆。外部平台接收画面与声音后,才算完成对应平台的真实开播验收。
本机部署
准备 Windows 10/11、Python 3.12、可用的 NVIDIA CUDA 显卡;建议至少 8 GB 显存和 32 GB 内存。还应检查其它程序已经占用的资源。原本机模型首次下载约 4.6 GB,新增神经网络头像权重约 0.64 GB,CUDA 安装 wheel 约 2.45 GB;磁盘另需预留解压、依赖和生成视频空间。
从应用私有源码取得 runtime 目录后,在应用目录执行:
powershell -ExecutionPolicy Bypass -File runtime/Install.ps1
powershell -ExecutionPolicy Bypass -File runtime/Start.ps1安装脚本按固定版本下载公开权重、验证文件 SHA-256,并建立应用自己的 Python 环境。模型下载与推理是两个步骤;安装需要网络,推理只读取本地文件。神经网络头像权重的版本与校验值单独固定在 runtime/portrait-model-lock.json,不打进公开前端包。本机服务启动后检查显存余量,并限制同时生成的请求数量。
打开吾码【数字人直播 → 数字人工作台 → 本机设置】,使用 runtime/.local/pairing-code.txt 中的配对码连接本机。上传一张本人或已获授权的清晰正面单人照片,再进入工作台连接预览、生成第一段话术。人像和生成片段保存在这台电脑,默认不上传到吾码文件服务器。
话术、知识与权限
【直播话术】保存名称、内容、分类、状态和顺序;工作台可从“可播报”话术中选取内容。【问答知识】保存常见问题、标准答复和检索关键词;本版按关键词选取最多五条启用知识,交给本机模型组织简短回答。小模型可能回答不准确,知识匹配不到时不应承诺其会理解全部业务。
【直播测试记录】保存设备、版本、输出方式、片段时长与实测生成帧率。上述数据使用当前租户的 FormEngine 和实际模块权限;“数字人直播运营”角色的菜单由应用包交付,账号仍需由管理员分配角色。工作台从授权菜单中解析实际菜单 Id,再传入 _SysMenuId,不固化官方租户 Id;后端继续校验权限与数据范围。
本机配对只授权这台电脑的媒体服务,不是另一套吾码用户或权限系统。DiyToken 只用于吾码数据请求,不发送给本机模型;本机配对码、临时会话和模型内部密钥也不写入云端表。
接入 OBS
在 OBS 添加“浏览器”来源,地址填写:
http://127.0.0.1:17861/output通过该来源的“交互”窗口输入本机配对码;确认连接面板消失、服务状态中的 peers 大于 0,再录制回读音画。v0.4.2 已在本机 OBS 浏览器来源完成上述验证。启用来源音频,工作台预览保持静音,以避免重复播放。若浏览器来源停在配对面板,可先用 OBS“媒体来源”选择本机 runtime/.local/outputs/<任务 Id>/clip.mp4 验证片段捕获;循环播放 MP4 只证明已生成片段能被 OBS 接收,不能算实时连接。直播平台的推流地址和密钥在 OBS 中配置,不需要写入吾码话术表。
独立输出页可持续播放,切换吾码菜单会关闭工作台预览。停止播报会清空待播队列,并在当前推理批次完成后取消生成;已经下载的 MP4 不会删除。
连接失败与交付验收
- 连接超时:检查本机服务是否启动、浏览器是否允许页面访问本地网络。
- 域名被拒绝:在本机
runtime/.local/config.json的allowedOrigins中配置实际页面的完整 Origin,包括协议和端口,不使用*。服务只监听回环地址,不应直接暴露到公网。 - 模型加载失败:查看
runtime/.local/gateway-error.log,检查权重校验、CUDA 与可用显存;服务不会自动回退到收费云端。 - 出现配对失效:重新配对。本机配对会话有有效期并绑定浏览器 Origin,服务重启后需重新配对。
验收应分别记录:吾码数据与权限、真实中文音频、口型帧变化、媒体音画时长、本机 WebRTC 接收、OBS 捕获,以及直播平台的实际接收情况。HTTP 200、任务入队、模型成功加载和本机预览可见都不能单独证明已经对外开播。
2026-09-26 的首版本机样例使用 RTX 2080 SUPER、480 × 640 画面:1.669 秒中文片段总生成耗时 12.495 秒,口型阶段 4.98 fps;2.601 秒知识问答片段总耗时 15.058 秒,口型阶段 9.10 fps。输出文件为 H.264 + AAC、25 fps,音画时长差约 29 毫秒;本机浏览器 WebRTC 测试实际收到两条媒体轨道,统计丢包为 0。这些是短样例,不能代表长时直播性能。
2026-09-27 在 OBS 32.2.2 中用“媒体来源”循环播放上述 2.601 秒片段,并建立独立的 720 × 1280 竖屏配置。将 480 × 640 原片左右各裁剪 60 像素后适配画布,OBS 本地录制得到 26.23 秒 H.264 + AAC 双声道 MP4,音频峰值 −17.2 dB。该测试仅使用研究人像素材验证本机捕获。相同 OBS 的“浏览器”来源停在配对面板,服务端 peers=0,未通过实时 WebRTC 接入;也未验证外部平台推流。不得把这段循环录制称为真实开播。
2026-10-04 新增“人物与衣服动作”后,使用本机实际生成的 api-body.mp4 作为 OBS“媒体来源”,独立验收场景通过 OBS WebSocket 回读了当前场景、来源路径与录制状态,录制约 9 秒。回读的 MP4 可解码为 3840 × 2160、30 fps、288 帧,上方第七张图是该录像中间帧。此项证明 OBS 能接收并录制生成片段;摄像头实时换脸及人物服饰动作已在应用页面及本机 WebSocket 自动化验证,尚未验证 OBS 对其实时窗口的捕获、平台推流或观众端接收。
2026-10-07 用同一台 RTX 2080 SUPER 在本机生成 v0.4.1 神经网络头像 gateway.mp4(24 帧、2 秒、模型约 6.85 fps),再通过独立 OBS 场景和“媒体来源”循环录制。OBS WebSocket 回读场景与素材路径;保存的录像可解码为 3840 × 2160、30 fps、235 帧、7.83 秒,抽样帧有画面变化。上方倒数第二张图是 OBS 对该片段的 4K 截图。这仍不是手机摄像头到 OBS 的实时直连,也没有外部平台观众端验收。
同日 v0.4.2 修复了同源浏览器配对后 GET 缺少 Origin 导致会话误拒绝的问题。在本机 OBS 32.2.2 的“浏览器来源”打开上述回环地址,用 OBS 本机交互输入私有配对码,服务端回读 peers=1,连接面板隐藏;随后提交一段中文播报,真实任务完成 68 帧、2.704 秒,MuseTalk 口型生成 14.92 fps。OBS 录像回读为 3840 × 2160、30 fps、500 帧、16.667 秒,H.264 视频及 AAC 双声道音频均存在,脸部区域抽样帧发生变化,音轨 RMS 0.008508、峰值 0.104248。最后一张图取自该录像的开口帧。这证明本机缓冲播报的音画已通过 OBS 浏览器来源;仍不代表照片驱动摄像头达到流畅实时帧率、实体手机已接入、或外部平台已经开播。
应用源码同步使用 .microi-micro-app.json 的 SourceExcludes 排除 runtime/.local、.venv、缓存和测试产物;不能只依赖 .gitignore。模型权重、人像、配对码与生成视频不进入公开应用包。上游研究测试素材的使用范围与模型代码许可不同,不能将其默认作为商业主播素材。
组件来源与许可:MuseTalk、MeloTTS ONNX、Qwen3 GGUF、llama.cpp、LivePortrait、FasterLivePortrait。LivePortrait 代码许可明确指出其所引用的 InsightFace 预训练检测权重仅可非商业研究;本应用的神经网络头像链路使用 MediaPipe 检测,不下载或打包 InsightFace 权重。模型许可仍须按所用权重的具体来源核对,且照片人物的肖像和服装素材必须获得授权。各模型 revision 与校验值由应用源码中的两个模型锁文件固定;硬件性能以自己的机器实测为准。