用10秒视频克隆你自己:Duix-Avatar AI数字人本地部署教程
【免费下载链接】Duix-Avatar🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning.项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar
Duix-Avatar是一款全离线的开源AI数字人工具:上传一段10秒的说话视频,即可完成外貌和声音克隆,输入任意文案就能生成口型准确的口播视频,数据全程不离开你的电脑。本文带你走完三个Docker服务的本地部署流程,拆开"从一段视频到成片"的完整数据流,并附上避坑速查与本地API对接示例。
素材不出门:为什么数字人要跑在本地
想录一条口播视频,专业剪辑软件学不会;把形象和声音传到云端平台,又总担心素材被留着。Duix-Avatar把这事做反了:它相当于把影视后期棚搬进了本地电脑,你喂它一段10秒说话视频,它还你一个"数字分身",之后输入什么文字,它就用你的脸、你的声音念出来。形象、声音、成片,全部落在你的硬盘里。
整个流程只有三步:克隆形象 → 输入文案 → 拿成片。
它能干什么:一段视频 + 一段文字 = 一条会说话的视频
先花一分钟把它的能力盘清楚:
- 形象克隆:10秒左右、带人声的视频,一次克隆外观和声音
- 文字驱动视频:输入文案,自动用你的克隆音色合成语音并驱动口型
- 音频直驱:不走文字也行,直接上传音频文件驱动数字人
- 多音色管理:可以建多个数字人档案,做不同内容的视频时随意切换
- 八种语言:中、英、日、韩、法、德、阿拉伯语、西班牙语
- 本地API:服务跑在Docker里、暴露本地端口,能接进你自己的脚本
图:AI数字人本地部署的主界面,上半部分是视频创作入口,下半部分是"我的作品"和"我的数字人"两个档案区
能力看完了,第一步是把服务端拉起来。所有算力都在本机三个Docker容器里,所以部署比想象中简单——难的是你的硬盘和显卡。
半小时拉齐三个后端服务
先看一张环境表,不满足再往下看:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 系统 | Windows 10(19042.1526+)/ Ubuntu 22.04 | Windows 11 / Ubuntu 22.04 Desktop |
| 内存 | 16GB(偏紧,ASR可能起不来) | 32GB |
| 显卡 | NVIDIA,8GB显存(可用lite版) | RTX 4070,12GB显存 |
| 硬盘 | 装镜像的盘留100GB+,数据盘留30GB+ | 200GB SSD |
⚠️ 唯一硬门槛:必须有英伟达显卡且驱动装好。三个服务全部跑在CUDA上,CUDA简单说就是让显卡干AI运算的专用加速包,AMD或核显的服务根本起不来。先敲一下nvidia-smi,能看到显卡信息再继续。
🔧 第一步,拿到项目代码:
git clone https://gitcode.com/GitHub_Trending/he/Duix-Avatar cd Duix-Avatar这条命令把整个仓库拉到本地,并进入项目目录。
🔧 第二步,预拉三个Docker镜像(不拉也行,compose会自动拉,但预拉方便你看进度):
docker pull guiji2025/fun-asr docker pull guiji2025/fish-speech-ziming docker pull guiji2025/duix.avatar⚠️ 首次下载大约70GB流量,务必连Wi-Fi或网线。C盘空间不足100GB时,先在Docker Desktop设置里把镜像存储位置换到别的盘。
图:把Docker镜像存储位置换到剩余空间大于100G的磁盘,避免C盘被镜像占满
🔧 第三步,启动服务:
cd deploy docker-compose up -d等上半小时左右,打开Docker Desktop,看到duix-avatar-tts、duix-avatar-asr、duix-avatar-gen-video三个容器都是Running状态 ✅,服务端就算就绪。
不同环境的启动命令在 deploy/docker-compose.yml 旁边都有现成的:
- NVIDIA 50系列显卡(如5090):
docker-compose -f docker-compose-5090.yml up -d - Ubuntu 22.04:先装NVIDIA Container Toolkit,再
docker-compose -f docker-compose-linux.yml up -d - 8GB显存机器:
docker-compose -f docker-compose-lite.yml up -d,只启动视频合成这一个服务
客户端不用装:Windows装官方setup.exe,Ubuntu直接跑AppImage(root用户进桌面要加--no-sandbox参数)。三个服务各自负责什么,记住这张表:
| 服务 | 本地端口 | 干什么 |
|---|---|---|
| TTS语音合成(fish-speech-ziming) | 18180 | 把文字读成你克隆的音色 |
| ASR语音识别(fun-asr) | 10095 | 把视频里的人声转成文字 |
| 视频合成(duix.avatar) | 8383 | 按音频驱动数字人做口型 |
服务跑起来了,真正的活儿才开始。不过先别急着点按钮,把"生成"背后那条链路走一遍,理解了这个黑盒,后面报什么错你都不慌。
点一次"生成",黑盒里到底发生了什么
拆成两段看:建模型是一次性的,出片是每次的。
建模型。你输入一段10秒说话视频(注意:必须带清晰人声)。黑盒里:客户端先用ffmpeg把视频转成H.264、抽出WAV音频丢给TTS服务;TTS服务再调ASR服务把这段音频转成文字,最后返回两个字段——reference_audio_url(规整后的音频)和reference_audio_text(转写文本)。这两个字段就是你的"声音身份证",之后每次合成都靠它调出你的音色。输出:一个登记进"我的数字人"的形象档案。顺带说明,这里的"训练"其实是特征提取加登记,不是动辄几小时的模型训练。想深挖的话,转码、抽音、登记这一整条链路都在 src/main/service/model.js。
出片。你输入:选一个数字人 + 一段文案(或上传一段音频)。黑盒里走三步:
- TTS接口(18180的
/v1/invoke)用你的克隆音色把文案读成wav——temperature、topP这些参数都是写死的固定值,不用调 - 把音频和形象原视频POST给视频合成服务(8383的
/easy/submit),拿到一个任务code - 客户端每2秒轮询一次
/easy/query:状态1是生成中(带进度),2是完成,3是失败
你得到:成片落在数据目录(Windows是D:\duix_avatar_data\face2face,Ubuntu是~/duix_avatar_data),客户端"我的作品"里直接播放和导出。轮询、排队、状态机这些细节,想看源码就去 src/main/service/video.js。
搞懂链路后,挑几个最典型的用法:
- 口播短视频量产:一上午写好一天的文案,全部丢进队列排队,下午成片就能发
- 内部培训录屏:让部门负责人对着镜头说10秒自我介绍,之后的制度通知、流程讲解都不用再进录音棚
- 产品演示多语言版:同一段演示稿,切中英文各出一版,八种语言都支持
链路最顺的时候当然好,但真上手总会踩上一两个坑,下面这几个是社区里问得最多的。
六个常见坑,以及怎么修
1.docker-compose up -d报request canceled/context canceled?Docker Hub官方源不稳定。打开Docker Desktop → Settings → Docker Engine,在右侧JSON里加registry-mirrors配置国内镜像源,保存后Apply & restart。镜像源会随时间失效,搜一下最新的再用。
图:Docker Desktop里配置镜像加速的位置,在Docker Engine的JSON中填入registry-mirrors数组
2. 新建模特报错,日志里是file not exists?上传的视频必须有声音、且是人在说话。无声视频或纯BGM视频不行,因为程序正是拿这段声音去做声音克隆的。
3. 定制模特报Connection refused?ASR服务启动慢。三个服务都Running之后,再等三五分钟去建模特。另外16GB内存的机器可能直接起不来,这属于硬件不够,不是配置问题。
4. 5090这类50系列显卡起不来?用专门的compose文件(基于torch预览版):cd deploy然后docker-compose -f docker-compose-5090.yml up -d。30、40系列且CUDA 12.8的也可以用它。
5. C盘被镜像占爆了?100G级别的镜像默认落在C盘。装完Docker后,在Docker Desktop设置里把镜像存储位置改到别的盘(位置见上一节截图),再拉镜像。
6. 能不能商用?开源版本全球免费商用;但用户量超过10万、或年营收超1000万美元的企业,需要签署商业许可协议,仓库根目录的LICENSE里有完整条款。
如果你不想被客户端界面限制,想接自己的脚本,其实更简单——三个服务本身就是HTTP接口。
二次开发:两个本地接口就够
服务跑起来后,通过http://127.0.0.1就能直接调。只挑最常用的两个:
① 视频合成:POST http://127.0.0.1:8383/easy/submit
{ "audio_url": "D:/duix_avatar_data/face2face/temp/xxxx.wav", // TTS生成的或你自己上传的音频 "video_url": "D:/duix_avatar_data/face2face/temp/xxxx.mp4", // 数字人模型的原视频 "code": "自己生成一个唯一的uuid", // 查进度用 "chaofen": 0, // 固定值 "watermark_switch": 0, // 固定值,0表示不加水印 "pn": 1 // 固定值 }提交后轮询GET http://127.0.0.1:8383/easy/query?code=<上面的code>:data.status为1是生成中(带progress),2是成功(返回result路径),3是失败。
② 语音合成:POST http://127.0.0.1:18180/v1/invoke。真正要填的只有三个字段:text(要合成的文案)、reference_audio和reference_text(建模特时那两个返回字段,就是声音身份证);其余都是固定传参,直接抄 src/main/service/voice.js 里的现成值。
两个接口串起来,你甚至可以写个小工具:Excel里存一天的文案,脚本自动批量出片。
下一步建议:
- 先跑
nvidia-smi确认显卡被识别,再去拉三个服务——这是最省排查时间的顺序 - 服务起来后,先用一段10秒说话视频建模特,生成一句两句的测试片确认口型,再排真正的文案
- 用熟之后,把
8383的submit接口接进自己的脚本,让成片自己跑出来
【免费下载链接】Duix-Avatar🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning.项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考