从 0 到 60 FPS:用 LiveTalking 搭建实时交互数字人服务的完整指南
【免费下载链接】metahuman-streamReal time interactive streaming digital human项目地址: https://gitcode.com/GitHub_Trending/me/metahuman-stream
LiveTalking 是一个开源的实时交互流式数字人引擎,把文字或语音输入变成口型同步的视频流,让你能搭出一套可对话的数字人服务。项目已在 Ubuntu 22.04、Python 3.12、CUDA 12.8 环境验证,wav2lip256 模型在 RTX 3060 上即可跑出 60 FPS 的推理帧率,适合做 AI 客服、虚拟主播这类低延迟实时数字人应用。
🎯 项目定位:LiveTalking 解决什么问题
很多数字人方案只能"念稿",没法在说话过程中被打断、也没法同时服务多个用户。LiveTalking 把文本/语音输入、TTS 合成、口型推理和流媒体输出串成一条实时管道,每个连接拿到独立sessionid,天然支持多用户并发。
核心能力大致是这五条:
- 可以只改
--model一个参数,在 wav2lip、musetalk、ultralight 三套模型间切换。前者轻快,RTX 3060 实测 60 FPS;musetalk 画质更好,但需要 3080Ti 级别显卡。 - 试试在控制台里传一段 16kHz 参考音频,配合
REF_FILE参数就能让数字人用克隆的声音说话,TTS 引擎可在tts/目录的多种实现间任选。 - 数字人说话到一半,
/interrupt_talk接口可以随时打断它,这是做"边说边听"客服交互的关键。 - 输出端覆盖 WebRTC、RTMP、虚拟摄像头三种通道,浏览器页面、直播平台、会议软件各取所需。
- 并发上限由
max_session(默认 5)控制,多路会话互不串线。
🚀 从零跑通:实时数字人服务的最小化上手路径
只走"能跑起来"的最短链路,完整环境细节以 README 安装一节为准。
先拿代码(仓库只读使用,无需改动):
git clone https://gitcode.com/GitHub_Trending/me/metahuman-stream cd metahuman-stream建 conda 环境并装依赖。注意 torch 要先按nvidia-smi显示的 CUDA 版本选对应 wheel 安装,完整命令见 README:
conda create -n livetalking python=3.12 conda activate livetalking # 先按 CUDA 版本安装 PyTorch 2.9.1,再执行: pip install -r requirements.txt模型文件(wav2lip256.pth与形象包wav2lip256_avatar1.tar.gz)从官方网盘下载,入口在 README 的"快速开始"一节。放好后直接启动:
cp wav2lip256.pth models/wav2lip.pth tar -xzf wav2lip256_avatar1.tar.gz -C data/avatars/ python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1然后打开http://服务器IP:8010/index.html,点"开始连接"播放数字人视频,在文本框输入文字提交即可。注意服务端需放行 TCP 8010 与 UDP 1-65536,否则浏览器拉不到流。
⚙️ 核心功能与使用要点拆解
换形象、换声音:改一行配置
形象放在data/avatars/下,启动参数--avatar_id指向谁就用谁,切换不需要动代码。声音侧在config.yaml里设tts(可选edgetts、gpt-sovits、cosyvoice、tencent等);要做音色克隆,把REF_FILE指到一段 16kHz 单声道 wav,配上REF_TEXT参考文本即可。Web 控制台还允许按单个连接覆盖 avatar 和音色,不重启服务就能换人设。想从一段真人视频生成新形象,打开/avatar.html上传视频即可,流程见 docs/avatar_api.md。
接上 LLM:从复读机到对话
/human接口有两种模式:echo直接复读文本,chat先经 LLM 生成回复再合成语音,后者才构成真正的"对话"。对话逻辑在llm.py,config.yaml里llm_provider支持dashscope与orcarouter(OpenAI 兼容网关),llm_model留空即用默认模型。
画面输出去哪:WebRTC、RTMP 还是虚拟摄像头
WebRTC(--transport webrtc)延迟最低,适合浏览器直连;RTMP 推给直播平台;虚拟摄像头把数字人伪装成系统摄像头,OBS、腾讯会议、Zoom 都能直接选它当输入源。虚拟摄像头模式自带控制页web/virtualcam.html,支持Ctrl+Enter发送、Escape打断,不打开页面也能用接口驱动(此模式 sessionid 固定为 0):
curl -X POST http://localhost:8010/human \ -H "Content-Type: application/json" \ -d '{"sessionid":"0","type":"chat","text":"你好,介绍一下你自己"}'不说话时播什么:动作编排
config.yaml的customvideo_config(或每连接的custom_configJSON)可以编排数字人"不说话时"播放的自定义视频片段,用来填充停顿、避免长时间静止带来的违和感。
🛠 配置调优与常见坑
版本与硬件要求汇总:
| 项目 | 版本/型号 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 | README 测试环境 |
| Python | 3.12 | conda 环境 |
| PyTorch | 2.9.1 | 需与nvidia-smi的 CUDA 版本匹配 |
| CUDA | 12.8 | 其他版本换对应 PyTorch wheel |
| wav2lip256 显卡 | RTX 3060 及以上 | 入门即可实时 |
| musetalk 显卡 | RTX 3080Ti 及以上 | 画质优先场景 |
实测推理帧率(并发压力上来后按这张表规划 GPU):
| 模型 | 显卡 | 实测 FPS |
|---|---|---|
| wav2lip256 | RTX 3060 | 60 |
| wav2lip256 | RTX 3080Ti | 120 |
| musetalk | RTX 3080Ti / 3090 | 42 / 45 |
| musetalk | RTX 4090 | 72 |
高频问题速查(详见 assets/faq.md):
- pytorch3d 装不上:常因缺少匹配的官方 wheel,clone 源码后
python setup.py install从源码编译。 - RTMP 推流失败:多为 ffmpeg 缺 libx264,运行
ffmpeg看输出里有没有 libx264,没有就换带该编码器的构建。 - 虚拟摄像头起不来:报
virtual camera output could not be started时,先启动一次 OBS Studio 再退出,让虚拟摄像头设备完成注册。 - 掉帧不实时:看后端日志的
inferfps(GPU 推理帧率)和finalfps(最终推流帧率),两者都 ≥25 才算实时;不够就降max_session并发或换更轻的模型。 - 数字人不眨眼:训练数据缺 AU45 眨眼动作单元,用 OpenFace 提取后把 au.csv 放进对应 data 目录重新训练。
调优时batch_size(默认 16)先保持默认,并发吃紧优先动max_session,而不是动分辨率。
📺 典型落地场景
- 你可以把它接进企业知识库,做成 7×24 在线的 AI 数字人客服:用户语音提问,数字人实时回答,说错还能打断重说。
- 做 24 小时无人直播时,让 LLM 自动生成带货话术,配合动作编排填充停顿,直播间不会冷场。
- 把
--transport换成virtualcam,数字人就能以摄像头身份走进腾讯会议、Zoom,当你的出镜替身。 - 批量产出口播内容也可以:通过
/human+/record接口提交文案,直接拿回数字人出镜的 mp4 视频,不用真人拍摄。
📋 项目速览
| 模块/功能 | 路径 | 一句话说明 |
|---|---|---|
| 启动入口 | app.py | 解析参数、加载模型与形象、起 HTTP/WebRTC 服务 |
| 全局配置 | config.yaml | model、tts、transport 等,命令行参数可覆盖 |
| 数字人模型 | avatars/ | wav2lip、musetalk、ultralight 三套实现 |
| 音频特征提取 | avatars/audio_features/ | Mel 频谱、Whisper、HuBERT 等特征 |
| 语音合成 | tts/ | EdgeTTS、GPT-SoVITS、CosyVoice 等,继承base_tts.py |
| 流媒体输出 | streamout/ | webrtc.py、rtmp.py、virtualcam.py三通道 |
| 会话与推流 | server/ | 会话并发管理、WebRTC 连接、路由 |
| 插件注册 | registry.py | 扩展 TTS/Avatar/Output 模块的注册机制 |
| 接口文档 | docs/ | api.md、avatar_api.md、admin_api.md |
| Web 页面 | web/ | index.html 控制台、avatar.html 形象生成 |
开源版目前覆盖三套数字人模型与三种输出通道,wav2lip 链路在 3060 级别显卡上就能实时跑通,musetalk 的高画质则需要 3080Ti 起步。建议先按 WebRTC 最小路径跑通一个 demo,再根据延迟、画质和部署位置的要求调整模型与推流通道。
【免费下载链接】metahuman-streamReal time interactive streaming digital human项目地址: https://gitcode.com/GitHub_Trending/me/metahuman-stream
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考