LiveTalking icon indicating copy to clipboard operation
LiveTalking copied to clipboard

经验分享

Open kangye87 opened this issue 4 months ago • 7 comments

1、项目地址 https://gitee.com/lipku/LiveTalking.git 或 https://github.com/lipku/LiveTalking.git 2、部署环境 作者给的是:Tested on Ubuntu 24.04, Python3.10, Pytorch 2.5.0 and CUDA 12.4 实际测试验证发现: 操作系统GLIBC 2.27+即可(否则服务启动会报错),比如Ubuntu 22、centos8等,验证命令:

Image

显卡型号用:T4、A30也可以,占用4g左右显存即可运行起来

Image

显卡驱动用:CUDA 12.0及以上即可,无需做其他更改。

docker镜像:作者给的docker镜像无法拉取了,我打了新的镜像,适配各种不同的操作系统,如果需要可以找我提供 3、部署过程

  1. 安装依赖: #安装conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh sh Miniconda3-latest-Linux-x86_64.sh #按提示阅读许可协议,输入 yes 同意。 #确认安装路径(默认:~/miniconda3 或 ~/anaconda3)。 #安装完成后,询问是否初始化conda,选择 yes(会修改~/.bashrc自动添加环境变量)。

#激活conda软件功能 source ~/.bashrc # 或重新打开终端 #验证安装: conda --version #创建环境: conda create -n nerfstream python=3.10 #激活环境: conda activate nerfstream #安装py依赖。如果cuda版本不为12.4(运行nvidia-smi确认版本),根据https://pytorch.org/get-started/previous-versions/安装对应版本的pytorch——实际验证,12.0不修改也行 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" 2. 下载模型 夸克云盘https://pan.quark.cn/s/83a750323ef0 GoogleDriver https://drive.google.com/drive/folders/1FOC_MD6wdogyyX_7V1d4NDIO7P9NlSAJ?usp=sharing 将wav2lip256.pth拷到本项目的models下, 重命名为wav2lip.pth; 将wav2lip256_avatar1.tar.gz解压后整个文件夹拷到本项目的data/avatars下 3. 运行 python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 服务端需要开放端口 tcp:8010; udp:1-65536 客户端可以选用以下两种方式: (1)用浏览器打开http://serverip:8010/webrtcapi.html , 先点‘start',播放数字人视频;然后在文本框输入任意文字,提交。数字人播报该段文字 (2)用客户端方式, 下载地址https://pan.quark.cn/s/d7192d8ac19b 4、外网访问 4.1、作者给的外网访问方案: https://livetalking-doc.readthedocs.io/en/latest/autodl/README.html 4.2、frp内外穿透方案

4.3、企业公网发布方案

4.4、水友给的方案 环境准备

Image
  • 阿里云服务器: 外网IP:1.2.3.4 内网IP:192.168.1.100
  • 自有机房: 外网:113.1.1.2
  • 数字人服务器 内网IP:172.16.10.30 step1: 安装Coturn服务器 Coturn服务器的安装比较简单,我是使用docker安装的。 第一步创建turnserver.conf,内容如下: listening-ip=192.168.1.100 listening-port=3478 #tls-listening-port=5349 relay-ip=192.168.1.100 external-ip=1.2.3.4 realm=1.2.3.4 allowed-peer-ip=0.0.0.0

relay-threads=10 lt-cred-mech #cert=pem/turn_server_cert.pem #pkey=pem/turn_server_pkey.pem pidfile=/var/run/turnserver.pid min-port=49152 max-port=65535 user=admin:passwd123456 #密码建议复杂一点 cli-password=passwd123456 #密码建议复杂一点

verbose fingerprint syslog 具体参数说明请参考Coturn官网Docker说明。 第二步启动Coturn服务器,命令如下: docker run -d --network=host --name=coturn
-v /root/turnserver.conf:/etc/coturn/turnserver.conf
coturn/coturn network=host,这样就可以直接用内网IP访问了。 step2: Coturn服务器防火墙配置 开启端口防火墙,我的防火墙情况: To Action From


3478/udp ALLOW Anywhere
3478/tcp ALLOW Anywhere
5349/tcp ALLOW Anywhere
49152:65535/udp ALLOW Anywhere
22 ALLOW Anywhere
3478/udp (v6) ALLOW Anywhere (v6)
3478/tcp (v6) ALLOW Anywhere (v6)
5349/tcp (v6) ALLOW Anywhere (v6)
49152:65535/udp (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6) step3: 阿里云管理后台的安全组 也需要放行端口,这里比较简单,跟Coturn服务器的端口一致即可。 至此,Coturn服务器就可以外网访问了。你可以使用火狐浏览器(必须火狐)打开 Trickle ICE 去做测试。参考我的测试结果,Done表示OK了。

Time Type Foundation Protocol Address Port Priority URL (if present) relayProtocol (if present) 0.002 host 0 udp 60ef3317-e18c-49eb-820b-63f2271b57bb.local 57429 126 | 32512 | 255
0.002 host 2 tcp 60ef3317-e18c-49eb-820b-63f2271b57bb.local 9 125 | 32704 | 255
0.002 host 0 udp 60ef3317-e18c-49eb-820b-63f2271b57bb.local 57430 126 | 32512 | 254
0.002 host 2 tcp 60ef3317-e18c-49eb-820b-63f2271b57bb.local 9 125 | 32704 | 254
0.018 srflx 1 udp 1.2.3.4 2537 100 | 32543 | 255
0.048 Done step4: 本地数字人配置 在数字人服务器上,修改配置文件,修改app.py代码: 搜索:async def offer(request) 接口

#ice_server = RTCIceServer(urls='stun:stun.l.google.com:19302')

改为Coturn服务器的地址端口、用户名密码

ice_server = RTCIceServer(urls='turn:1.2.3.4:3478',username='admin', credential = 'passwd123456') 然后再启动数字人,用webRTC启动的,就是默认的启动命令: 启动命令: CUDA_VISIBLE_DEVICES=2 python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1_0704 --batch_size 32 --max_session 100 --customvideo_config data/custom_config.json --tts tencent --REF_FILE 101008 这里很重要,包括如果你自己制作客户端来对接,也需要配置如上,比如我安卓的客户端代码: PeerConnection.IceServer.builder("turn:1.2.3.4:3478") .setUsername("admin") .setPassword("passwd123456") .createIceServer() step5: 本地防火墙配置 因为本地防火墙放行情况不归属我们部门管理,就告诉网管吧,让他们自己去配置吧。 X哥,我们现在做一个项目,搭建了一个流媒体服务器在本地,另外再阿里云服务器做了转发的,帮我们设置一下白名单。

172.16.10.30的外网IP,对阿里云1.2.3.4 IP开通1-65535 端口的 udp 协议。 那么 113.1.1.2 就跟 阿里云1.2.3.4 做了白名单端口放行。 至此,Coturn服务器都配置好了,可以外网访问了。 5、其他虚拟人项目部署 本人还调研了其他一些虚拟人项目,感兴趣的可以一起讨论。

kangye87 avatar Aug 24 '25 00:08 kangye87

企业公网发布方案

如果数字人服务器有多台,是不是也是一样的操作,我理解这里部署一样。 如果数字人服务,前面接入弹性 VIP 这里是不是不可行? 这里有试验过吗?

swinghu avatar Aug 26 '25 10:08 swinghu

有一点,无法输入音频时候注意检查浏览器是否对网站开放了麦克风权限。

我在尝试数字人说话的同时按照语音内容做自定义动作和表情。目前我能想到的方式是: 1、保持面部不动,这样可以复用原始形象模型,然后其他动作按照要求录制或者调整,然后转为图片帧,这里两个问题:如何保证面部不动的同时改变动作,表情改变了之前的形象模型大该是无法复用会变脸。 2、全部动作和表情都用模型加载为形象模型,然后通过插入中间过渡帧,这样需要简单调一下代码,切换时后也把形象切换过去而不是只是切换图片帧,这里的问题是为了保证流畅全部加载到了内存中,numpy参数化图片帧还会膨胀,整体内存可能会吃不消。 欢迎讨论

heyyyyou avatar Aug 27 '25 01:08 heyyyyou

可以帮忙分享一下你打的 Python3.10 的镜像么,我用Python3.10安装的 mmcv>=2.0.1会报错:ModuleNotFoundError: No module named 'mmcv._ext'

LuoLuo0101 avatar Aug 29 '25 08:08 LuoLuo0101

你好 可以分享一下镜像么

h0539028 avatar Sep 02 '25 09:09 h0539028

你好,请问可以分享一下镜像吗

pjj1234 avatar Sep 25 '25 02:09 pjj1234

你好,请问可以分享一下镜像吗

Zha-Miku avatar Oct 17 '25 06:10 Zha-Miku

可以帮忙分享一下你打的 Python3.10 的镜像么,我用Python3.10安装的 mmcv>=2.0.1会报错:ModuleNotFoundError: No module named 'mmcv._ext'

你好,我是windows系统,也是安装不上mmcv,请问你解决了吗

vsss3 avatar Nov 20 '25 13:11 vsss3