diff --git a/README.md b/README.md index a3e5f5d..ffe6daf 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,174 @@ - [English](./README-EN.md) | 中文版 - 实时交互流式数字人,实现音视频同步对话。基本可以达到商用效果 -[wav2lip效果](https://www.bilibili.com/video/BV1scwBeyELA/) | [ernerf效果](https://www.bilibili.com/video/BV1G1421z73r/) | [musetalk效果](https://www.bilibili.com/video/BV1gm421N7vQ/) -国内镜像地址: - -## 为避免与3d数字人混淆,原项目metahuman-stream改名为livetalking,原有链接地址继续可用 - -## News -- 2024.12.8 完善多并发,显存不随并发数增加 -- 2024.12.21 添加wav2lip、musetalk模型预热,解决第一次推理卡顿问题。感谢[@heimaojinzhangyz](https://github.com/heimaojinzhangyz) -- 2024.12.28 添加数字人模型Ultralight-Digital-Human。 感谢[@lijihua2017](https://github.com/lijihua2017) -- 2025.2.7 添加fish-speech tts -- 2025.2.21 添加wav2lip256开源模型 感谢@不蠢不蠢 -- 2025.3.2 添加腾讯语音合成服务 -- 2025.3.16 支持mac gpu推理,感谢[@GcsSloop](https://github.com/GcsSloop) -- 2025.5.1 精简运行参数,ernerf模型移至git分支ernerf-rtmp -- 2025.6.7 添加虚拟摄像头输出 -- 2025.7.5 添加豆包语音合成, 感谢[@ELK-milu](https://github.com/ELK-milu) - -## Features -1. 支持多种数字人模型: ernerf、musetalk、wav2lip、Ultralight-Digital-Human -2. 支持声音克隆 -3. 支持数字人说话被打断 -4. 支持全身视频拼接 -5. 支持webrtc、虚拟摄像头输出 -6. 支持动作编排:不说话时播放自定义视频 -7. 支持多并发 - -## 1. Installation - -Tested on Ubuntu 24.04, Python3.10, Pytorch 2.5.0 and CUDA 12.4 - -### 1.1 Install dependency +# 直播数字人 (Live Digital Avatar) 启动说明 +## 项目简介 + +**项目名称:** +- 中文:直播数字人 +- 英文:live-digital-avatar + +**项目描述:** 实时交互流式数字人系统,实现音视频同步对话,可达到商用效果。支持多种数字人模型,包括wav2lip、musetalk、Ultralight-Digital-Human等。 + +## 系统要求 + +### 硬件要求 +- **GPU**: NVIDIA显卡,推荐RTX 3060及以上 + - wav2lip256模型:RTX 3060及以上 + - musetalk模型:RTX 3080Ti及以上 +- **CPU**: 多核处理器,用于视频压缩处理 +- **内存**: 建议16GB以上 +- **存储**: 至少10GB可用空间 + +### 软件要求 +- **操作系统**: Ubuntu 24.04 (推荐) / Windows 10/11 +- **Python**: 3.10 +- **CUDA**: 12.4 (根据显卡驱动版本调整) +- **PyTorch**: 2.5.0 + +## 安装步骤 + +### 1. 环境准备 + +#### 创建Python虚拟环境 ```bash -conda create -n nerfstream python=3.10 -conda activate nerfstream -#如果cuda版本不为12.4(运行nvidia-smi确认版本),根据安装对应版本的pytorch +# 创建conda环境 +conda create -n livetalking python=3.10 +conda activate livetalking +``` + +#### 安装PyTorch +```bash +# 安装PyTorch (根据您的CUDA版本调整) +# CUDA 12.4 conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.4 -c pytorch -c nvidia + +# 如果CUDA版本不同,请访问 https://pytorch.org/get-started/previous-versions/ 选择对应版本 +``` + +#### 安装项目依赖 +```bash +# 安装项目依赖包 pip install -r requirements.txt -#如果需要训练ernerf模型,安装下面的库 -# pip install "git+https://github.com/facebookresearch/pytorch3d.git" -# pip install tensorflow-gpu==2.8.0 -# pip install --upgrade "protobuf<=3.20.1" -``` -安装常见问题[FAQ](https://livetalking-doc.readthedocs.io/zh-cn/latest/faq.html) -linux cuda环境搭建可以参考这篇文章 -视频连不上解决方法 - - -## 2. Quick Start -- 下载模型 -夸克云盘 -GoogleDriver -将wav2lip256.pth拷到本项目的models下, 重命名为wav2lip.pth; -将wav2lip256_avatar1.tar.gz解压后整个文件夹拷到本项目的data/avatars下 -- 运行 -python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 -服务端需要开放端口 tcp:8010; udp:1-65536 -客户端可以选用以下两种方式: -(1)用浏览器打开http://serverip:8010/webrtcapi.html , 先点‘start',播放数字人视频;然后在文本框输入任意文字,提交。数字人播报该段文字 -(2)用客户端方式, 下载地址 - -- 快速体验 - 用该镜像创建实例即可运行成功 - -如果访问不了huggingface,在运行前 ``` -export HF_ENDPOINT=https://hf-mirror.com -``` +### 2. 模型下载 + +#### 下载预训练模型 +项目需要下载预训练模型文件,您可以从以下地址下载: + +**夸克云盘**: https://pan.quark.cn/s/83a750323ef0 +**Google Drive**: https://drive.google.com/drive/folders/1FOC_MD6wdogyyX_7V1d4NDIO7P9NlSAJ?usp=sharing + +#### 模型文件放置 +下载完成后,请按以下步骤放置模型文件: + +1. 将 `wav2lip256.pth` 复制到项目的 `models/` 目录下,并重命名为 `wav2lip.pth` +2. 将 `wav2lip256_avatar1.tar.gz` 解压后,将整个文件夹复制到项目的 `data/avatars/` 目录下 + +### 3. 网络配置 + +**重要**: 服务端需要开放以下端口: +- **TCP端口**: 8010 (Web服务) +- **UDP端口**: 1-65536 (WebRTC通信) + +## 启动数字人 + +### 基本启动命令 + +```bash +# 激活环境 +conda activate livetalking + +# 启动数字人服务 +python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 +``` + +### 启动参数说明 + +- `--transport webrtc`: 使用WebRTC传输协议 +- `--model wav2lip`: 使用wav2lip模型 +- `--avatar_id wav2lip256_avatar1`: 指定数字人形象ID -## 3. More Usage -使用说明: - -## 4. Docker Run -不需要前面的安装,直接运行。 +### 其他启动选项 + +```bash +# 使用musetalk模型 +python app.py --transport webrtc --model musetalk --avatar_id your_avatar_id + +# 使用Ultralight模型 +python app.py --transport webrtc --model ultralight --avatar_id your_avatar_id + +# 指定端口 +python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 --port 8010 ``` + +## 客户端访问 + +### 方式一:浏览器访问 +1. 在浏览器中打开: `http://服务器IP:8010/webrtcapi.html` +2. 点击 'start' 按钮开始播放数字人视频 +3. 在文本框中输入任意文字并提交,数字人将播报该段文字 + +### 方式二:客户端软件 +- 下载地址: https://pan.quark.cn/s/d7192d8ac19b +- 安装客户端软件进行连接 + +## 快速体验 + +如果您想快速体验,可以使用以下云服务镜像: + +**UCloud镜像**: https://www.compshare.cn/images/4458094e-a43d-45fe-9b57-de79253befe4?referral_code=3XW3852OBmnD089hMMrtuU&ytag=GPU_GitHub_livetalking + +使用该镜像创建实例即可直接运行成功。 + +## Docker运行 + +如果您不想手动安装环境,可以直接使用Docker运行: + +```bash docker run --gpus all -it --network=host --rm registry.cn-beijing.aliyuncs.com/codewithgpu2/lipku-metahuman-stream:2K9qaMBu8v ``` -代码在/root/metahuman-stream,先git pull拉一下最新代码,然后执行命令同第2、3步 - -提供如下镜像 -- autodl镜像: -[autodl教程](https://livetalking-doc.readthedocs.io/en/latest/autodl/README.html) -- ucloud镜像: -可以开放任意端口,不需要另外部署srs服务. -[ucloud教程](https://livetalking-doc.readthedocs.io/en/latest/ucloud/ucloud.html) - - -## 5. 性能 -- 性能主要跟cpu和gpu相关,每路视频压缩需要消耗cpu,cpu性能与视频分辨率正相关;每路口型推理跟gpu性能相关。 -- 不说话时的并发数跟cpu相关,同时说话的并发数跟gpu相关。 -- 后端日志inferfps表示显卡推理帧率,finalfps表示最终推流帧率。两者都要在25以上才能实时。如果inferfps在25以上,finalfps达不到25表示cpu性能不足。 -- 实时推理性能 - -模型 |显卡型号 |fps -:---- |:--- |:--- -wav2lip256 | 3060 | 60 -musetalk | 3080Ti | 45 -wav2lip256 | 3080Ti | 120 - -wav2lip256显卡3060以上即可,musetalk需要3080Ti以上。 - -## 6. 商业版 -提供如下扩展功能,适用于对开源项目已经比较熟悉,需要扩展产品功能的用户 -1. 高清wav2lip模型 -2. 完全语音交互,数字人回答过程中支持通过唤醒词或者按钮打断提问 -3. 实时同步字幕,给前端提供数字人每句话播报开始、结束事件 -4. 每个连接可以指定对应avatar和音色,avatar图片加载加速 -5. 动作编排:不说话时动作、唤醒时动作、思考时动作 -6. 支持不限时长的数字人形象avatar -7. 提供实时音频流输入接口 -8. 数字人透明背景,叠加动态背景 - -更多详情 - -## 7. 声明 + +代码位于 `/root/metahuman-stream`,先执行 `git pull` 拉取最新代码,然后按照上述步骤启动。 + +## 性能参考 + +| 模型 | 显卡型号 | FPS | +|------|----------|-----| +| wav2lip256 | RTX 3060 | 60 | +| musetalk | RTX 3080Ti | 45 | +| wav2lip256 | RTX 3080Ti | 120 | + +**性能说明:** +- 不说话时的并发数取决于CPU性能 +- 同时说话的并发数取决于GPU性能 +- 后端日志中 `inferfps` 表示显卡推理帧率,`finalfps` 表示最终推流帧率 +- 两者都要在25以上才能实现实时效果 + +## 常见问题 + +### 1. 访问HuggingFace问题 +如果访问不了huggingface,在运行前设置: +```bash +export HF_ENDPOINT=https://hf-mirror.com +``` + +### 2. 视频连接问题 +如果遇到视频连接问题,请参考:https://mp.weixin.qq.com/s/MVUkxxhV2cgMMHalphr2cg + +### 3. 安装问题 +详细安装FAQ请参考:https://livetalking-doc.readthedocs.io/zh-cn/latest/faq.html + +## 技术支持 + +- **知识星球**: https://t.zsxq.com/7NMyO +- **微信公众号**: 数字人技术 +- **项目地址**: https://github.com/lipku/LiveTalking +- **国内镜像**: https://gitee.com/lipku/LiveTalking + +## 声明 + 基于本项目开发并发布在B站、视频号、抖音等网站上的视频需带上LiveTalking水印和标识,如需去除请联系作者备案授权。 --- -如果本项目对你有帮助,帮忙点个star。也欢迎感兴趣的朋友一起来完善该项目. -* 知识星球: https://t.zsxq.com/7NMyO 沉淀高质量常见问题、最佳实践经验、问题解答 -* 微信公众号:数字人技术 -![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/l3ZibgueFiaeyfaiaLZGuMGQXnhLWxibpJUS2gfs8Dje6JuMY8zu2tVyU9n8Zx1yaNncvKHBMibX0ocehoITy5qQEZg/640?wxfrom=12&tp=wxpic&usePicPrefetch=1&wx_fmt=jpeg&from=appmsg) +如果本项目对您有帮助,欢迎给项目点个star,也欢迎感兴趣的朋友一起来完善该项目。 \ No newline at end of file diff --git a/README.md.bac b/README.md.bac new file mode 100644 index 0000000..a3e5f5d --- /dev/null +++ b/README.md.bac @@ -0,0 +1,126 @@ + [English](./README-EN.md) | 中文版 + 实时交互流式数字人,实现音视频同步对话。基本可以达到商用效果 +[wav2lip效果](https://www.bilibili.com/video/BV1scwBeyELA/) | [ernerf效果](https://www.bilibili.com/video/BV1G1421z73r/) | [musetalk效果](https://www.bilibili.com/video/BV1gm421N7vQ/) +国内镜像地址: + +## 为避免与3d数字人混淆,原项目metahuman-stream改名为livetalking,原有链接地址继续可用 + +## News +- 2024.12.8 完善多并发,显存不随并发数增加 +- 2024.12.21 添加wav2lip、musetalk模型预热,解决第一次推理卡顿问题。感谢[@heimaojinzhangyz](https://github.com/heimaojinzhangyz) +- 2024.12.28 添加数字人模型Ultralight-Digital-Human。 感谢[@lijihua2017](https://github.com/lijihua2017) +- 2025.2.7 添加fish-speech tts +- 2025.2.21 添加wav2lip256开源模型 感谢@不蠢不蠢 +- 2025.3.2 添加腾讯语音合成服务 +- 2025.3.16 支持mac gpu推理,感谢[@GcsSloop](https://github.com/GcsSloop) +- 2025.5.1 精简运行参数,ernerf模型移至git分支ernerf-rtmp +- 2025.6.7 添加虚拟摄像头输出 +- 2025.7.5 添加豆包语音合成, 感谢[@ELK-milu](https://github.com/ELK-milu) + +## Features +1. 支持多种数字人模型: ernerf、musetalk、wav2lip、Ultralight-Digital-Human +2. 支持声音克隆 +3. 支持数字人说话被打断 +4. 支持全身视频拼接 +5. 支持webrtc、虚拟摄像头输出 +6. 支持动作编排:不说话时播放自定义视频 +7. 支持多并发 + +## 1. Installation + +Tested on Ubuntu 24.04, Python3.10, Pytorch 2.5.0 and CUDA 12.4 + +### 1.1 Install dependency + +```bash +conda create -n nerfstream python=3.10 +conda activate nerfstream +#如果cuda版本不为12.4(运行nvidia-smi确认版本),根据安装对应版本的pytorch +conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.4 -c pytorch -c nvidia +pip install -r requirements.txt +#如果需要训练ernerf模型,安装下面的库 +# pip install "git+https://github.com/facebookresearch/pytorch3d.git" +# pip install tensorflow-gpu==2.8.0 +# pip install --upgrade "protobuf<=3.20.1" +``` +安装常见问题[FAQ](https://livetalking-doc.readthedocs.io/zh-cn/latest/faq.html) +linux cuda环境搭建可以参考这篇文章 +视频连不上解决方法 + + +## 2. Quick Start +- 下载模型 +夸克云盘 +GoogleDriver +将wav2lip256.pth拷到本项目的models下, 重命名为wav2lip.pth; +将wav2lip256_avatar1.tar.gz解压后整个文件夹拷到本项目的data/avatars下 +- 运行 +python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 +服务端需要开放端口 tcp:8010; udp:1-65536 +客户端可以选用以下两种方式: +(1)用浏览器打开http://serverip:8010/webrtcapi.html , 先点‘start',播放数字人视频;然后在文本框输入任意文字,提交。数字人播报该段文字 +(2)用客户端方式, 下载地址 + +- 快速体验 + 用该镜像创建实例即可运行成功 + +如果访问不了huggingface,在运行前 +``` +export HF_ENDPOINT=https://hf-mirror.com +``` + + +## 3. More Usage +使用说明: + +## 4. Docker Run +不需要前面的安装,直接运行。 +``` +docker run --gpus all -it --network=host --rm registry.cn-beijing.aliyuncs.com/codewithgpu2/lipku-metahuman-stream:2K9qaMBu8v +``` +代码在/root/metahuman-stream,先git pull拉一下最新代码,然后执行命令同第2、3步 + +提供如下镜像 +- autodl镜像: +[autodl教程](https://livetalking-doc.readthedocs.io/en/latest/autodl/README.html) +- ucloud镜像: +可以开放任意端口,不需要另外部署srs服务. +[ucloud教程](https://livetalking-doc.readthedocs.io/en/latest/ucloud/ucloud.html) + + +## 5. 性能 +- 性能主要跟cpu和gpu相关,每路视频压缩需要消耗cpu,cpu性能与视频分辨率正相关;每路口型推理跟gpu性能相关。 +- 不说话时的并发数跟cpu相关,同时说话的并发数跟gpu相关。 +- 后端日志inferfps表示显卡推理帧率,finalfps表示最终推流帧率。两者都要在25以上才能实时。如果inferfps在25以上,finalfps达不到25表示cpu性能不足。 +- 实时推理性能 + +模型 |显卡型号 |fps +:---- |:--- |:--- +wav2lip256 | 3060 | 60 +musetalk | 3080Ti | 45 +wav2lip256 | 3080Ti | 120 + +wav2lip256显卡3060以上即可,musetalk需要3080Ti以上。 + +## 6. 商业版 +提供如下扩展功能,适用于对开源项目已经比较熟悉,需要扩展产品功能的用户 +1. 高清wav2lip模型 +2. 完全语音交互,数字人回答过程中支持通过唤醒词或者按钮打断提问 +3. 实时同步字幕,给前端提供数字人每句话播报开始、结束事件 +4. 每个连接可以指定对应avatar和音色,avatar图片加载加速 +5. 动作编排:不说话时动作、唤醒时动作、思考时动作 +6. 支持不限时长的数字人形象avatar +7. 提供实时音频流输入接口 +8. 数字人透明背景,叠加动态背景 + +更多详情 + +## 7. 声明 +基于本项目开发并发布在B站、视频号、抖音等网站上的视频需带上LiveTalking水印和标识,如需去除请联系作者备案授权。 + +--- +如果本项目对你有帮助,帮忙点个star。也欢迎感兴趣的朋友一起来完善该项目. +* 知识星球: https://t.zsxq.com/7NMyO 沉淀高质量常见问题、最佳实践经验、问题解答 +* 微信公众号:数字人技术 +![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/l3ZibgueFiaeyfaiaLZGuMGQXnhLWxibpJUS2gfs8Dje6JuMY8zu2tVyU9n8Zx1yaNncvKHBMibX0ocehoITy5qQEZg/640?wxfrom=12&tp=wxpic&usePicPrefetch=1&wx_fmt=jpeg&from=appmsg) +