
如何通过 Duix.Avatar 开放 API 调用 /easy/submit 与 /easy/query 完成数字人视频合成【免费下载链接】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-AvatarDuix.Avatar 部署本地 Docker 服务端后除了使用图形客户端还开放了一组基于http://127.0.0.1的 API其中最关键的是视频合成接口/easy/submit提交合成任务与/easy/query查询任务进度。本文的目标是在你已经按 README_zh.md 完成服务端部署的前提下直接用这两个接口提交一段“音频 模特视频”的数字人口型合成任务并轮询拿到最终视频文件。整个流程不依赖客户端界面适合把视频合成能力集成到自己脚本或后端服务中。前置条件服务端已启动且数据目录已挂载调用http://127.0.0.1:8383/easy/...的前提是duix-avatar-gen-video容器已运行它同时决定了输入输出文件放在哪里。在仓库的 deploy 目录下启动服务端Windows 用docker-compose.ymlUbuntu 22.04 用 docker-compose-linux.yml50 系列显卡用 docker-compose-5090.ymlcd /deploy docker-compose up -d确认三个 Docker 服务都处于 Running 状态lite 版本只有一个服务Duix.Avatar-gen-video。README 的“提问前自查步骤”明确指出所有算力都在本地没有英伟达显卡或未安装驱动时这些服务起不来。启动后注意 deploy/docker-compose.yml 中duix-avatar-gen-video服务给出的两个约定它们决定了后面参数怎么传端口映射8383:8383即宿主机上通过http://127.0.0.1:8383访问合成服务卷挂载把本地face2face数据目录Windows 为d:/duix_avatar_data/face2faceLinux 为~/duix_avatar_data/face2face映射进容器的/code/data输入音频、模特视频和合成结果都通过这个目录交换。准备输入文件音频与模特视频/easy/submit需要两个文件见 README_zh.md “视频合成”一节video_url模特视频路径即一段 10 秒左右的、用于克隆外貌的视频audio_url驱动口型的音频路径。在客户端的实现中src/main/config/config.js 的assetPath.model这两个参数传的是相对路径Windows 相对D:\duix_avatar_data\face2face\tempLinux 相对~/duix_avatar_data/face2face/temp。也就是说把文件放到上述temp目录后传文件名即可该目录位于被映射进容器的face2face卷内服务在容器内才能读到。如果你手头没有现成音频可以通过同一服务端的 TTS 接口生成README 中“音频合成”一节http://127.0.0.1:18180/v1/invoke这一步依赖已完成的“模特训练”http://127.0.0.1:18180/v1/preprocess_and_tran返回的asr_format_audio_url与reference_audio_text。如果只需要合成口型视频而音频已有可跳过 TTS 分支直接把音频文件放入temp目录。调用 /easy/submit 提交合成任务向http://127.0.0.1:8383/easy/submit发送 POST 请求请求体按 README 给出的参数{ audio_url: xxxx.wav, video_url: yyyy.mp4, code: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, chaofen: 0, watermark_switch: 0, pn: 1 }参数说明均来自 README_zh.mdaudio_url音频路径video_url视频路径code唯一 key客户端使用crypto.randomUUID()生成见 src/main/service/video.js 的makeVideoByF2F保证每个任务一个唯一值即可chaofen、watermark_switch、pnREADME 标注为固定值保持0、0、1。提交后的判断方式以客户端实现为准src/main/api/f2f.js 的makeVideo发起请求后src/main/service/video.js 检查返回结果——code 10000表示任务提交成功任务进入pending状态等待轮询否则视为失败失败原因在返回的msg字段中。轮询 /easy/query 直到拿到结果视频提交成功后用code轮询进度GET http://127.0.0.1:8383/easy/query?code${taskCode}GET 请求参数taskCode就是提交入参中的code。客户端每 2 秒轮询一次src/main/service/video.js 的loopPending你可以按同样节奏轮询。返回结果怎么读README 没有给出示例响应以下判断规则来自客户端loopPending的实际处理逻辑src/main/service/video.js顶层code为10000时再看data.status1合成中data.progress与data.msg记录当前进度继续轮询2合成成功data.result是生成视频的相对路径客户端用它拼接本地数据目录WindowsD:\duix_avatar_data\face2face\tempLinux~/duix_avatar_data/face2face/temp后读取视频文件3合成失败失败原因在data.msg顶层code为9999、10002或10003时任务失败原因在msg字段。也就是说一个完整可核对的任务闭环是/easy/submit返回code: 10000→ 轮询/easy/query直到data.status变为2→ 在face2face数据目录容器内为/code/data对应目录下根据data.result取出视频文件。限制与排查服务未全部 Running 时接口不可用按 README 的“提问前自查步骤”先检查三个服务状态并确认机器有英伟达显卡且已正确安装驱动。lite 版本的边界docker-compose-lite.yml只启动一个服务Duix.Avatar-gen-video没有 TTS/ASR 服务因此前文“用 TTS 接口生成音频”的可选分支在 lite 部署下不可用音频必须由你自行提供。任务失败时/easy/query返回的msg或data.msg即失败描述README 建议查看服务端日志——在 Docker 中打开对应容器的日志操作并确认服务端/客户端是否为最新版本服务端可重新执行docker-compose up -d更新。接口字段含义以仓库中客户端源码src/main/api/f2f.js、src/main/service/video.js、src/main/service/voice.jsREADME“开放 API”一节列出的参考实现为准仓库未提供独立 API 文档。【免费下载链接】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),仅供参考