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

0 阅读8分钟

引言

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

这是「每日一个开源项目」系列的第 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

核心流程

用户输入(文字 / 音频)
    ↓
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-NeRF3D 神经辐射场,支持头部多角度高端 GPU
Ultralight-Digital-Human轻量化,低 GPU 需求低端 GPU

实时推理 FPS 参考(需 ≥ 25 才算实时)

模型显卡推理 FPS
wav2lip256RTX 306060
wav2lip256RTX 3080Ti120
musetalkRTX 3080Ti42
musetalkRTX 309045
musetalkRTX 409072

后端日志中 inferfps = GPU 推理帧率,finalfps = 最终推流帧率,两者均需 ≥ 25。


快速上手

安装

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 下载预训练模型:

# 将 wav2lip256.pth 放到 models/ 目录,重命名为 wav2lip.pth
# 将 wav2lip256_avatar1.tar.gz 解压后放到 data/avatars/ 目录

启动服务

# 使用 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 模块:注册新的语音合成引擎

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.htmlWebRTC 连接 + 文本/音频驱动 + 录制控制
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 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。

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