LiveTalking 数字人直播快速上手:3 步跑通第一条口型同步视频流
【免费下载链接】metahuman-streamReal time interactive streaming digital human项目地址: https://gitcode.com/GitHub_Trending/me/metahuman-stream
metahuman-stream(LiveTalking)是一个实时交互流式数字人引擎:输入一段文字或一段音频,它能实时合成语音、生成口型同步的数字人画面,并通过 WebRTC 或 RTMP 推出去。适合想做虚拟主播、AI 客服问答、大屏讲解的数字人应用开发者。下面先给出一条最短的跑通路径,再解释它内部做了什么、哪些配置值得调、出了问题怎么查。
先判断它是否适合你的场景
用之前先确认两件事:你有一台带 NVIDIA 显卡的机器,且你要的是"实时流"而不是"离线视频"。
- 虚拟主播 / 无人直播:数字人挂在直播间,配合大模型自动说带货话术,RTMP 推流出去。
- 实时问答客服:用户语音提问,数字人实时回答,中途还能被打断重新说。
- 大屏讲解与远程会议:以虚拟摄像头输出,接进 OBS、Zoom 或腾讯会议,当作一个摄像头用。
如果目标是"录一段视频文件慢慢看",或者没有 GPU,这个项目不是首选——它本质是一个常驻的实时推理服务。
最小路径:先跑通一次完整结果
第一步,拉取代码并安装依赖:
git clone https://gitcode.com/GitHub_Trending/me/metahuman-stream cd metahuman-stream && pip install -r requirements.txt官方在 Python 3.12、CUDA 12.8 下测试通过(torch 2.9.1);CUDA 版本不同时,按 PyTorch 官网装对应版本即可。
第二步,放好模型文件:把wav2lip256.pth拷入models/目录并改名为wav2lip.pth,把wav2lip256_avatar1文件夹解压后放入data/avatars/。模型可从 README 中给出的网盘链接下载。
第三步,启动服务:
python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1看到日志打印start http server; http://<serverip>:8010就说明服务起来了。用浏览器打开http://服务器IP:8010/index.html,点击"开始连接",画面出现数字人;在文本框输入一句话提交后,看到数字人开口说话、口型跟随语音,即代表整条链路跑通。注意 WebRTC 模式需要在防火墙上放行 TCP 8010 和 UDP 1-65536。
核心能力拆解:一句话从输入到推流走了哪些路
整条数据流是:文字/音频 → 大模型(可选)→ TTS 合成语音 → 音频特征提取 → 口型推理 → 画面合成 → 推流。
- 输入侧:
/human接口接收文字(type可为echo直接复读,或chat交给大模型生成回复),/humanaudio接收音频文件直接播放。每条连接分配独立 sessionid,多个用户可以同时各自对话。 - 语音合成:
tts/目录是模块化设计,EdgeTTS、GPT-SoVITS、CosyVoice、腾讯云等多家方案可切换,换引擎只改配置。 - 口型生成:
avatars/下提供 wav2lip、musetalk、ultralight 等模型实现,从音频里提取 Mel 频谱等声学特征,逐帧生成口型,再平滑贴回原始高清视频。 - 输出侧:
streamout/提供 WebRTC(浏览器低延迟)、RTMP(推直播平台)、虚拟摄像头(接会议软件)三种出口,启动时用--transport指定。
关键配置:哪些参数最值得调整
所有配置集中在 config.yaml,命令行参数可覆盖文件值。真正影响体验的有这么几项:
- model(用途:选数字人模型;建议:wav2lip 快且省显存,musetalk 画质更好但建议 3080Ti 及以上;注意:换模型要配套换 models/ 和 data/avatars/ 里的文件)
- tts / REF_FILE / REF_TEXT(用途:语音引擎与音色克隆;建议:先用 edgetts 跑通,再试 GPT-SoVITS 等支持克隆的引擎;注意:参考音频需为 16kHz 单声道 wav,并配对应文本)
- transport / push_url(用途:选择推流方式;建议:浏览器预览用 webrtc,直播用 rtmp;注意:rtmp/rtcpush 必须同时填 push_url)
- max_session(用途:最大并发会话数;建议:并发同时说话的路数取决于 GPU 算力,先从小值调起,别盲目拉高)
- listenport(用途:服务端口,默认 8010;注意:改端口后浏览器地址要同步改,且别忘放 UDP 端口段)
进阶玩法:常见扩展与组合方式
- 声音克隆:连接时传
refaudio、reftext参数即可临时换音色,不改全局配置。 - 对话型数字人:
/human用chat模式,配置llm_provider(如 dashscope 接 Qwen)后,数字人就能自己生成回答,形成完整问答闭环。 - 动作编排:通过
customvideo_config或在连接参数传custom_config,让数字人不说话时播放自定义视频,直播等待期更自然。 - 批量短视频:对
/record发start_record/end_record,再从/record/{sessionid}下载 MP4,适合批量产出讲解视频。 - 上会议软件:用
--transport virtualcam启动,在 OBS 或腾讯会议里选虚拟摄像头设备,具体步骤见 docs/virtualcam_guide.md。 - 定制形象:
/avatar.html页面上传一段真人视频,自动生成新的数字人形象,接口见 docs/avatar_api.md。
验收与排障:如何确认运行正常
先看两个日志指标:inferfps(GPU 推理帧率)和finalfps(最终推流帧率),两者都 ≥25 才算实时。
- 现象:浏览器点了连接没画面。可能原因:防火墙没放行 UDP 段,或访问 IP 不对。排查动作:确认 TCP 8010 与 UDP 1-65536 已开放,用正确的服务器 IP 访问 index.html。
- 现象:RTMP 推流失败。可能原因:transport 选了 rtmp 但 push_url 为空,或推流服务器端口不通。排查动作:检查 config.yaml 中
push_url填写,并验证推流地址端口可连通。 - 现象:说话卡顿、明显非实时。可能原因:GPU 帧率不够或并发会话过多。排查动作:对比两个 fps 指标定位瓶颈,降低并发或换更轻的 wav2lip 模型。
- 现象:换形象后口型效果差。可能原因:avatar 与模型不匹配。排查动作:确认 avatar_id 与 model 来自同一套训练产物。
下一步:读完之后可以做什么
- 通读 docs/api.md,用
/whep、/human接口接你自己的前端,把数字人嵌进业务系统。 - 把 model 换成 musetalk,调整
batch_size摸一下 GPU 余量,对比画质与帧率。 - 配置
llm_provider接上大模型,把数字人从"复读机"升级成能问答的对话体。 - 在
/avatar.html上传一段自拍视频,生成属于自己形象的第一版数字人。
【免费下载链接】metahuman-streamReal time interactive streaming digital human项目地址: https://gitcode.com/GitHub_Trending/me/metahuman-stream
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考