# MuseTalk 实时 Avatar 复用：固定一个形象生成三段新口播

把同一底片预处理为 avatar，后续复用缓存处理三段不同旁白，保存每条任务与真实结果。

## 本包身份

所有 reference 音轨是原创程序合成，旁白是 macOS Tingting 系统朗读，杯子/门是脚本绘制输入；头像是 AI 生成原创虚构成人。官方 driving.mp4 明确标源。未执行 MuseTalk 推理/账号生成，不包含伪造的模型成功音频或成片。

## 使用

1. 给一个形象建立独立任务目录

下载头像底片和 voice-1/2/3.wav。三段由系统朗读不同原创短句，每条有独立逐字稿；同一 avatar 的源片固定，不把不同人物素材写进同一缓存目录。

2. 核对实时配置与模型版本

官方 realtime.yaml 使用 preparation、video_path、audio_clips。复制本包 avatar-first.yaml，填绝对路径，保持 v15 模型及 25fps。实时路径需要先有合法缓存，不能一开始就将 preparation=False。

3. 首次准备 Avatar

第一次使用 preparation: True 运行 scripts.realtime_inference。将真实缓存目录、源片 hash、版本和完成时间记录进 avatar-record.json；不手工创建几个空文件伪装预处理完成。

4. 新增配音再关闭重复准备

首次真实成功后，保持 avatar ID 与源视频，改用 avatar-reuse.yaml 中的 preparation: False。只换 audio_clips；源脸或裁切变化就建立新 avatar 并重新准备，不能盲目复用旧缓存。

5. 分别保存三条输出和时间

运行后逐条关联音频 hash、结果路径与错误，记录真实预处理时间和后续生成时间；素材包 timing.csv 初始为空，不伪造节省百分比。一个任务失败不等于其余结果自动合格。

6. 检查连续片段的形象与口型

在三条片中选同一姿态帧与闭口音，比较脸部位置、肤色和接缝，再检查有没有残留上一条音频。缓存复用不代表支持无人值守直播，本页只验证三次独立口播。

```
# 在 MuseTalk 仓库，首次配置 preparation: True
python -m scripts.realtime_inference --inference_config /绝对路径/avatar-first.yaml --result_dir ./results/apizt --unet_model_path ./models/musetalkV15/unet.pth --unet_config ./models/musetalkV15/musetalk.json --version v15 --fps 25
# 首次真实成功后，同命令改用 avatar-reuse.yaml
```

## 离线检查

`python check.py --self-test` 实读并校验输入与坏文件；真正软件输出后用 `python check.py --result 实际文件` 检查格式并人工回听/看图。结果与已知输入/参考完全相同时会拒绝，不能改名充当生成。格式通过不证明模型调用和内容质量。

## 来源

- https://github.com/TMElyralab/MuseTalk
- https://github.com/TMElyralab/MuseTalk/blob/main/configs/inference/realtime.yaml
