开源项目第196期:LiveTalking — 实时交互流式数字人引擎,支持 Wav2Lip/MuseTalk/ER-NeRF

引言

"实时交互流式数字人引擎,实现音视频同步对话"

这是「每日一个开源项目」系列的第 196 篇 。今天的项目是 LiveTalking ------ 一个实时交互流式数字人引擎,9,140 颗 Star,作者 lipku(李恒中),Apache-2.0 许可,已在业内获得广泛商用。

LiveTalking 解决的核心问题:如何用已有的一段人物视频,让这个人实时"说出"任意输入的文字或音频,并以低延迟的音视频流的形式输出,同时支持多用户并发、被打断后重新说话、推流到直播平台等生产级需求。

你会学到什么

  • LiveTalking 支持的四种渲染模型及各自适用场景
  • 系统的四层架构:API 层/逻辑层/渲染层/推流层
  • 三种输出方式:WebRTC(浏览器)、RTMP(直播推流)、虚拟摄像头
  • 插件化扩展机制(TTS、Avatar、Output 模块)
  • 生产级功能:多并发、打断对话、动作编排、声音克隆

前提知识

  • 基本的 Python 和命令行使用经验
  • 了解深度学习推理的基本概念(模型、GPU 加速)
  • 对直播推流或 WebRTC 有基础了解会有帮助

项目背景

概述

LiveTalking 是一个生产级数字人推流框架,不是实验性的 demo。核心定位是做引擎层:接收文字或音频输入,经过 TTS 和口型推理,输出同步的音视频流,让上层应用(LLM 对话、直播系统、客服系统等)可以直接对接。

项目信息

项目数据

  • ⭐ 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 实时监控所有会话状态与全局配置

参考资源

官方链接


总结

LiveTalking 代表了数字人技术从实验室向工程化落地的一个典型路径:

多模型选择,而不是押注单一方案:Wav2Lip(速度优先)、MuseTalk(质量优先)、ER-NeRF(3D 效果)分别对应不同的硬件和质量需求,用户可以根据实际的 GPU 资源和延迟要求选择。这比很多项目只支持一种模型要实用得多。

四层解耦架构:API 层/逻辑层/渲染层/推流层各自独立,TTS、渲染、输出模块都可以通过插件注册替换。这意味着你可以把 EdgeTTS 换成自己公司的语音合成,把 WebRTC 换成私有协议,而不需要改核心代码。

打断功能是关键工程难点:让数字人在说话中途被打断,涉及到音频缓冲队列清空、GPU 推理任务取消、新输入立即接管的整体协调。能做好这一点,说明项目考虑了真实交互场景,而不只是批量生成视频。

性能基线明确 :README 直接给出不同显卡的实际 FPS 数据,inferfps ≥ 25 才算实时的硬性指标,让用户在选购硬件前就能做出合理判断。

如果你在开发 AI 数字人产品,LiveTalking 提供了一套经过生产验证、可以直接接入 LLM + TTS 的完整推流引擎,是目前开源社区里工程化程度最高的选项之一。


探索 PrimeSkills ------ 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。

访问我的个人主页,获取更多见解和有趣的产品。

相关推荐
冬奇Lab1 小时前
Code Agent 解剖(09):对话越来越长,token 超了怎么办?
人工智能
甲维斯1 小时前
Opus5挖的坑,DS秒破,实战和模拟的巨大鸿沟!
人工智能
Elastic 中国社区官方博客1 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai
爱学习的小白柏2 小时前
【AI问数技术】多Agent协同架构:查询规划/SQL生成/洞察分析/报告生成
java·网络·人工智能·windows·sql·架构·llama
艾伦_耶格宇2 小时前
【AI】-4 OpenCode Go 接入 Obsidian 完整指南
运维·开发语言·人工智能·agent·opencode
天天代码码天天2 小时前
我做了一款简洁轻量的 Windows PDF 阅读器:lw.PDF
人工智能
ITresearchGuest2 小时前
AI 焦虑下,前端该何去何从
前端·人工智能
Larcher2 小时前
SDD 项目开发步骤与提示词
人工智能·设计模式·架构