这几天我们又做了一版优化, 适配了更多的模型。目前支持 wav2lip 以及后处理流程、musetalk 、flashtalk 和 quicktalk 。
项目地址:
https://github.com/datascale-ai/opentalking
大家可以点击 B 站看看我们的演示视频: https://www.bilibili.com/video/BV1CsLz6WEF9/?vd_source=4820076c616e58ceb357c528a571ff11
这版主要优化的目标是:让实时数字人的完整链路更容易跑通,也更方便做演示和二次开发。
OpenTalking 本身不是一个单独的 talking head 模型,而是一个实时对话数字人框架。我们希望它能把 LLM 、STT 、TTS 、WebRTC 、字幕同步、用户打断和数字人视频驱动这些模块串成一条完整链路。
实际做下来之后会发现,数字人 demo 和数字人产品之间差距挺大。
如果只是给一段音频生成一个会说话的视频,很多模型都可以做。但如果要实现真正的实时对话,就会遇到很多工程问题:
用户语音输入
→ STT
→ LLM 流式回复
→ TTS
→ 数字人视频驱动
→ WebRTC 播放
→ 字幕同步
→ 用户打断
→ 状态回收并进入下一轮
任何一个环节没处理好,体验都会比较割裂。
比如用户已经开始下一轮了,但数字人还在说上一轮内容;或者字幕、音频、画面不同步;或者打断之后 TTS 停了,但视频端还在播放旧状态。
所以这版优化里,我们重点整理了会话链路、前端演示体验和几种后端模式。
目前 OpenTalking 支持几种模式:
Mock:不需要模型权重,适合快速跑通完整链路;
Local:适合本地单机 GPU 验证;
OmniRT:适合接远端推理服务;
Direct WebSocket:方便对接自己的数字人模型后端。
目前项目还比较早期,这版优化也还有不少可以继续改的地方。后面会继续完善低延迟交互、角色资产管理、更多 Avatar 后端接入和部署体验。
欢迎大家试用,也欢迎拍砖。
也想听听大家觉得实时数字人做到什么程度,才算真正可用。