Files
digital-human-lipsync-service/README.md
T
2026-06-20 17:16:11 +08:00

95 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Digital Human Lip-Sync Service
这是给 `aIzhinengti` 数字人 `自主算力机` 模式使用的独立服务项目。它提供 Gradio `/process_single` 接口,输入一段音频和一段人物视频,输出生成后的视频。
> 当前项目不内置或下载大模型权重。默认 `ffmpeg_mux` 后端只用于验证接入链路:把音频封装进原视频,不做真实口型同步。真实效果需要接入 Wav2Lip、MuseTalk、LstmSync 等模型推理命令。
## 开发接力入口
如果你在新窗口继续开发,建议按这个顺序看:
1. `AGENTS.md`:给开发 agent 的项目规则。
2. `PROJECT_SPEC.md`:项目目标、接口契约、成功标准。
3. `TASKS.md`:分阶段任务清单。
4. `docs/backend-adapter-guide.md`:如何接真实口型同步模型。
5. `docs/aizhinengti-integration.md`:如何接回主项目。
6. `docs/testing-and-acceptance.md`:测试和验收标准。
7. `docs/model-selection.md`:模型选型建议。
## 接口兼容性
主项目调用方式等价于:
```python
from gradio_client import Client, handle_file
client = Client("http://127.0.0.1:7860/")
result = client.predict(
audio_file=handle_file("C:/test/audio.wav"),
video_file={"video": handle_file("C:/test/avatar.mp4")},
api_name="/process_single",
)
```
期望返回:
```json
{"video": "生成后的视频文件路径", "subtitles": null}
```
## 快速启动
先安装 `uv`https://docs.astral.sh/uv/getting-started/installation/
```powershell
cd D:\WYF-project\digital-human-lipsync-service
uv sync
.\scripts\start.ps1
```
启动后访问:`http://127.0.0.1:7860/`
也可以直接运行模块:
```powershell
uv run python -m digital_human_lipsync_service
```
## 接入 aIzhinengti
1. 打开数字人页面设置。
2. `数字人模型` 选择 `自主算力机`
3. `数字人API地址``http://127.0.0.1:7860/` 或局域网 GPU 机器地址。
4. 如果不用 CompShare,只需手动启动本服务;服务器 ID 可先填一个占位值用于通过界面校验。
## 接入真实口型同步模型
设置 `command` 后端,让服务调用你自己的推理脚本:
```powershell
$env:LIPSYNC_BACKEND = "command"
$env:LIPSYNC_COMMAND_CWD = "D:\models\Wav2Lip"
$env:LIPSYNC_COMMAND_TIMEOUT_SECONDS = "1800"
$env:LIPSYNC_COMMAND_TEMPLATE = 'python inference.py --checkpoint_path D:\models\Wav2Lip\checkpoints\wav2lip_gan.pth --face {video_q} --audio {audio_q} --outfile {output_q}'
.\scripts\start.ps1 -Backend command
```
可用模板变量:
- `{audio}`:上传后的音频文件路径
- `{video}`:上传后的人物视频路径
- `{output}`:服务要求模型写入的输出视频路径
- `{workdir}`:临时工作目录
- `{cwd}`:命令执行目录,来自 `LIPSYNC_COMMAND_CWD`
- `{audio_q}` / `{video_q}` / `{output_q}` / `{workdir_q}` / `{cwd_q}`:适合直接放进命令行的已转义路径,Windows 路径含空格时建议优先使用
`command` 后端会校验模型命令退出码、输出文件是否存在且非空。失败时错误信息会包含退出码、耗时、命令和 `stderr` 尾部,方便定位 CUDA、ffmpeg、模型路径或人脸检测问题。
## 验证
```powershell
.\scripts\test-client.ps1 -Audio C:\test\audio.wav -Video C:\test\avatar.mp4
```
如果返回里有 `video` 字段,主项目就基本能拿到生成结果。