引言
"实时交互流式数字人引擎,实现音视频同步对话"
这是「每日一个开源项目」系列的第 196 篇 。今天的项目是 LiveTalking ------ 一个实时交互流式数字人引擎,9,140 颗 Star,作者 lipku(李恒中),Apache-2.0 许可,已在业内获得广泛商用。
LiveTalking 解决的核心问题:如何用已有的一段人物视频,让这个人实时"说出"任意输入的文字或音频,并以低延迟的音视频流的形式输出,同时支持多用户并发、被打断后重新说话、推流到直播平台等生产级需求。
你会学到什么
- LiveTalking 支持的四种渲染模型及各自适用场景
- 系统的四层架构:API 层/逻辑层/渲染层/推流层
- 三种输出方式:WebRTC(浏览器)、RTMP(直播推流)、虚拟摄像头
- 插件化扩展机制(TTS、Avatar、Output 模块)
- 生产级功能:多并发、打断对话、动作编排、声音克隆
前提知识
- 基本的 Python 和命令行使用经验
- 了解深度学习推理的基本概念(模型、GPU 加速)
- 对直播推流或 WebRTC 有基础了解会有帮助
项目背景
概述
LiveTalking 是一个生产级数字人推流框架,不是实验性的 demo。核心定位是做引擎层:接收文字或音频输入,经过 TTS 和口型推理,输出同步的音视频流,让上层应用(LLM 对话、直播系统、客服系统等)可以直接对接。
项目信息
- 作者: lipku(李恒中)
- 主要语言: Python 3.10+
- 许可证: Apache-2.0
- 官网 : livetalking.ai
- 文档 : doc.livetalking.ai
项目数据
- ⭐ GitHub Stars: 9,140+
- 🍴 Forks: 1,449+
- 📄 许可证: Apache-2.0
- 📅 创建时间: 2023-12-19
核心流程
markdown
用户输入(文字 / 音频)
↓
LLM 生成回复(可选,接入 Qwen 等)
↓
TTS 合成语音(EdgeTTS / GPT-SoVITS / CosyVoice 等)
↓
声学特征提取(Mel 频谱等)
↓
口型推理(Wav2Lip / MuseTalk / ER-NeRF)
↓
后处理(口型区域贴回高清原始视频)
↓
音视频推流(WebRTC / RTMP / 虚拟摄像头)
每个连接分配唯一 sessionid,支持多用户并发,每路独立计算。
支持的渲染模型
LiveTalking 支持四种口型同步渲染模型,各有适用场景:
| 模型 | 特点 | 推荐显卡 | 实时 FPS |
|---|---|---|---|
| Wav2Lip | 速度最快,兼容性好,基于 2D 视频 | RTX 3060+ | 60--120 |
| MuseTalk | 质量更高,自然度更好,基于 2D 视频 | RTX 3080Ti+ | 42--72 |
| ER-NeRF | 3D 神经辐射场,支持头部多角度 | 高端 GPU | --- |
| Ultralight-Digital-Human | 轻量化,低 GPU 需求 | 低端 GPU | --- |
实时推理 FPS 参考(需 ≥ 25 才算实时):
| 模型 | 显卡 | 推理 FPS |
|---|---|---|
| wav2lip256 | RTX 3060 | 60 |
| wav2lip256 | RTX 3080Ti | 120 |
| musetalk | RTX 3080Ti | 42 |
| musetalk | RTX 3090 | 45 |
| musetalk | RTX 4090 | 72 |
后端日志中 inferfps = GPU 推理帧率,finalfps = 最终推流帧率,两者均需 ≥ 25。
快速上手
安装
bash
git clone https://github.com/lipku/LiveTalking.git
conda create -n livetalking python=3.12
conda activate livetalking
# 根据 CUDA 版本安装对应 PyTorch(以 CUDA 12.8 为例)
pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 \
--index-url https://download.pytorch.org/whl/cu128
cd LiveTalking
pip install -r requirements.txt
已在 Ubuntu 22.04 + Python 3.12 + PyTorch 2.9.1 + CUDA 12.8 验证。
下载模型
从夸克云盘或 Google Drive 下载预训练模型:
bash
# 将 wav2lip256.pth 放到 models/ 目录,重命名为 wav2lip.pth
# 将 wav2lip256_avatar1.tar.gz 解压后放到 data/avatars/ 目录
启动服务
bash
# 使用 Wav2Lip 模型,WebRTC 传输
python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1
# 使用 MuseTalk 模型
python app.py --transport webrtc --model musetalk --avatar_id musetalk_avatar1
# RTMP 推流(推到直播平台)
python app.py --transport rtmp --model wav2lip --avatar_id wav2lip256_avatar1
注意:服务端需开放 TCP:8010 和 UDP:1-65536 端口(WebRTC 使用大范围 UDP 端口)。
接入使用
- 浏览器 :打开
http://serverip:8010/index.html,点击「开始连接」,在文本框输入文字 - API 驱动 :调用
/human接口提交文本,/humanaudio接口提交音频文件
系统架构:四层设计
API 层
| 端点 | 说明 |
|---|---|
POST /human |
接收文本,支持 echo(直接复读)和 chat(LLM 对话)两种模式 |
POST /humanaudio |
接收音频文件直接播放 |
POST /record |
开始/停止录制,批量生成视频时使用 |
每个连接分配唯一 sessionid,API 调用时指定 sessionid 路由到对应会话。
逻辑层
- LLM 引擎:对接 Qwen 等大模型生成对话回复(可选,也可直接传入 TTS 文本)
- TTS 引擎:模块化设计,支持 EdgeTTS、GPT-SoVITS、CosyVoice、腾讯云 TTS 等
- 声音克隆:可以用目标人物的声音克隆模型,让数字人说话带有特定音色
- 特征提取:同步提取音频的声学特征(Mel 频谱),用于口型推理输入
渲染层
- 模型推理:用 Wav2Lip、MuseTalk 等深度学习模型,根据音频特征生成口型帧
- 后处理:把生成的口型区域平滑贴回原始高清视频,保持非口型区域的画质
推流层
三种输出方式,适合不同部署场景:
| 输出方式 | 延迟 | 适用场景 |
|---|---|---|
| WebRTC | 极低(小于500ms) | 网页实时交互、AI 客服 |
| RTMP | 低(1-3s) | B站/YouTube 等平台直播推流 |
| 虚拟摄像头 | 极低 | 视频会议、桌面应用 |
插件化扩展机制
LiveTalking 基于 registry.py 实现去中心化注册,支持三类模块的插件式扩展:
TTS 模块:注册新的语音合成引擎
python
from registry import register_tts
@register_tts("my_tts")
class MyTTS:
def speak(self, text: str) -> bytes:
# 返回音频数据
...
Avatar 模块:注册新的渲染模型(如自定义口型算法)
Output 模块:注册新的输出方式(如自定义推流协议)
这种设计让第三方开发者可以在不修改核心代码的前提下扩展功能。
生产级功能
打断对话
数字人正在说话时,可以被新的输入打断------停止当前内容,立即开始新的语音渲染。这是 AI 客服场景的刚需,避免「数字人说完才能回应」的不自然体验。
动作编排
不说话时,播放自定义的待机视频(如点头、微笑等身体动作),而不是静止画面,让数字人更自然。
全身视频拼接
支持把口型同步区域(面部)贴合到全身视频上,实现全身数字人效果,而不只是头像。
多并发支持
- 不说话时,并发数量取决于 CPU(视频压缩)
- 同时说话时,并发数量取决于 GPU(口型推理)
- 高分辨率输出会消耗更多 CPU,中等分辨率(256px)性价比最高
后台管理
/admin.html 提供实时监控面板:查看所有活跃会话状态、全局配置管理、强制停止某个会话。
使用场景
| 场景 | 技术要点 |
|---|---|
| 直播带货 | RTMP 推流到 B站/抖音 + LLM 生成带货话术 + 动作编排 |
| AI 数字人客服 | WebRTC 低延迟 + 打断功能 + 企业知识库接入 |
| 在线教育 | API 驱动教师数字分身 + 课件内容文字驱动 |
| 短视频批量制作 | /human + /record API 批量提交文案生成视频 |
| 展厅大屏讲解 | 虚拟摄像头输出 + 本地大屏显示 |
LiveTalking 官方还提供了虚拟主播专项方案:LiveStream,针对 24 小时无人直播场景做了专门优化。
Web 页面
| 页面 | 路径 | 功能 |
|---|---|---|
| 主控页 | /index.html |
WebRTC 连接 + 文本/音频驱动 + 录制控制 |
| Avatar 生成 | /avatar.html |
上传视频自动生成自定义数字人形象 |
| 管理后台 | /admin.html |
实时监控所有会话状态与全局配置 |
参考资源
官方链接
- 🌟 GitHub : lipku/LiveTalking
- 🌐 官网 : livetalking.ai
- 📖 文档 : doc.livetalking.ai
- 🖥️ 商用版体验 : livetalking.top
- 🐛 常见问题 : doc.livetalking.ai/docs/faq
- 💬 Discord : discord.gg/n5jSPCT3Uf
- 📺 效果演示 : Wav2Lip 演示 · MuseTalk 演示
总结
LiveTalking 代表了数字人技术从实验室向工程化落地的一个典型路径:
多模型选择,而不是押注单一方案:Wav2Lip(速度优先)、MuseTalk(质量优先)、ER-NeRF(3D 效果)分别对应不同的硬件和质量需求,用户可以根据实际的 GPU 资源和延迟要求选择。这比很多项目只支持一种模型要实用得多。
四层解耦架构:API 层/逻辑层/渲染层/推流层各自独立,TTS、渲染、输出模块都可以通过插件注册替换。这意味着你可以把 EdgeTTS 换成自己公司的语音合成,把 WebRTC 换成私有协议,而不需要改核心代码。
打断功能是关键工程难点:让数字人在说话中途被打断,涉及到音频缓冲队列清空、GPU 推理任务取消、新输入立即接管的整体协调。能做好这一点,说明项目考虑了真实交互场景,而不只是批量生成视频。
性能基线明确 :README 直接给出不同显卡的实际 FPS 数据,inferfps ≥ 25 才算实时的硬性指标,让用户在选购硬件前就能做出合理判断。
如果你在开发 AI 数字人产品,LiveTalking 提供了一套经过生产验证、可以直接接入 LLM + TTS 的完整推流引擎,是目前开源社区里工程化程度最高的选项之一。
探索 PrimeSkills ------ 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。
访问我的个人主页,获取更多见解和有趣的产品。