基于 SelfTalk 的说话人脸生成对话系统 (Talking Face Generation System)
本项目基于 SelfTalk 实现,提供了一个完整的 Web 界面,支持:
- 🎓 模型训练:在线训练 SelfTalk 模型,实时查看训练日志
- 🎬 视频生成:根据语音生成 3D 说话人脸动画视频
- 💬 人机对话:与 AI 进行语音对话并生成虚拟人视频
- 🕑 实时对话:与 AI 进行实时语音对话
- 操作系统:Linux / WSL2 (Windows Subsystem for Linux)
- GPU:NVIDIA GPU (支持 CUDA 11.3)
- 内存:建议 16GB+
- 磁盘空间:建议 20GB+ (包含数据集和模型)
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y \
ffmpeg \
libboost-dev \
libgl1-mesa-glx \
libgl1-mesa-dev \
libegl1-mesa \
libegl1-mesa-dev \
libosmesa6 \
libosmesa6-dev \
libgles2-mesa \
libgles2-mesa-dev \
portaudio19-dev \
libsndfile1 \
freeglut3-devgit clone https://github.com/laonuo2004/TFG-SelfTalk.git
cd TFG-SelfTalkconda create -n selftalk python=3.8.8
conda activate selftalkpip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113pip install -r requirements.txt# 克隆 mesh 库
git clone https://github.com/MPI-IS/mesh.git
cd mesh
pip install .
cd ..- 从 Google Drive 下载
vocaset.pth - 将文件放置到
SelfTalk/vocaset/vocaset.pth
- 下载 FLAME_sample.ply,存放到
SelfTalk/vocaset/templates/目录 - 从 VOCA 官网 申请并下载数据集,包括 Template Meshes 与 Training Data
- 将
templates.zip解压到SelfTalk/vocaset/templates/目录 - 将以下文件放入
SelfTalk/vocaset/目录:data_verts.npyraw_audio_fixed.pkltemplates.pklsubj_seq_to_idx.pkl
- 处理数据:
cd SelfTalk/vocaset python process_voca_data.py cd ../..
python app.py访问 http://localhost:6009 即可使用。
本项目需要 GPU 支持。WSL2 + Docker Desktop 无需额外配置,Docker Desktop 已内置 GPU 支持;原生 Linux 需安装 NVIDIA Container Toolkit。
在构建之前,请确保你已经完成了手动部署当中的步骤 7 (可选) 与步骤 8。
# 构建并启动
docker-compose up -d --build
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down# 构建镜像
docker build -t tfg-selftalk .
# 运行容器
docker run -d \
--gpus all \
-p 6009:5000 \
-p 8765:8765 \
-v $(pwd)/SelfTalk/vocaset/wav:/app/SelfTalk/vocaset/wav:ro \
-v $(pwd)/SelfTalk/vocaset/vertices_npy:/app/SelfTalk/vocaset/vertices_npy:ro \
-v $(pwd)/SelfTalk/vocaset/vocaset.pth:/app/SelfTalk/vocaset/vocaset.pth:ro \
-v $(pwd)/SelfTalk/vocaset/save:/app/SelfTalk/vocaset/save \
-v $(pwd)/SelfTalk/vocaset/output:/app/SelfTalk/vocaset/output \
-v $(pwd)/models.json:/app/models.json \
--name tfg-selftalk \
tfg-selftalk启动后访问 http://localhost:6009
注意:首次使用需下载 Hugging Face 模型。Docker 镜像构建时已通过国内镜像 (hf-mirror.com) 预下载,无需额外配置。手动部署的用户如遇网络问题,可设置环境变量:
export HF_ENDPOINT=https://hf-mirror.com
- 访问「模型训练」页面
- 选择训练设备 (GPU/CPU)
- 配置训练参数 (Epochs、训练集、验证集等)
- 点击「开始训练」
- 实时查看训练日志和进度
- 访问「视频生成」页面
- 选择已训练的模型
- 上传音频文件 (.wav 格式)
- 选择目标人物 (Subject)
- 点击「生成视频」
- 访问「人机对话」页面
- 点击麦克风开始录音
- 与 AI 进行语音对话
- 系统自动生成虚拟人视频回复
- 访问「实时对话」页面
- 系统会自动连接语音对话服务(需要麦克风权限)
- 直接与 AI 进行实时语音交流
- AI 会以语音形式实时回复
TFG-SelfTalk/
├── app.py # Flask 主应用
├── requirements.txt # Python 依赖
├── models.json # 已注册模型列表
├── SelfTalk/ # SelfTalk 核心代码
│ ├── main.py # 训练入口
│ ├── demo_voca.py # 推理 Demo
│ └── vocaset/ # 数据集目录
│ ├── vocaset.pth # 预训练模型
│ ├── wav/ # 音频文件
│ ├── vertices_npy/ # 顶点数据
│ └── save/ # 训练模型保存目录
├── backend/ # 后端逻辑
│ ├── model_trainer.py # 训练调度
│ ├── selftalk_trainer.py # SelfTalk 训练
│ ├── selftalk_generator.py # 视频生成
│ └── model_registry.py # 模型注册管理
├── templates/ # HTML 模板
└── static/ # 静态资源
本项目基于 SelfTalk 开发,遵循 CC-BY-NC 4.0 许可证。
- SelfTalk - 核心算法
- VOCASET - 数据集
- MPI-IS/mesh - 网格处理库
