Files
ViGent2/Docs/implementation_plan.md
Kevin Wong 661a8f357c 更新
2026-01-29 12:16:41 +08:00

12 KiB
Raw Blame History

数字人口播视频生成系统 - 实现计划

项目目标

构建一个开源的数字人口播视频生成系统,功能包括:

  • 上传静态人物视频 → 生成口播视频(唇形同步)
  • TTS 配音或声音克隆
  • 字幕自动生成与渲染
  • 一键发布到多个社交平台

技术架构

┌─────────────────────────────────────────────────────────┐
│                    前端 (Next.js)                        │
│         素材管理 | 视频生成 | 发布管理 | 任务状态         │
└─────────────────────────────────────────────────────────┘
                            │ REST API
                            ▼
┌─────────────────────────────────────────────────────────┐
│                   后端 (FastAPI)                         │
├─────────────────────────────────────────────────────────┤
│  异步任务队列 (asyncio)                                 │
│  ├── 视频生成任务                                        │
│  ├── TTS 配音任务                                        │
│  └── 自动发布任务                                        │
└─────────────────────────────────────────────────────────┘
        │               │               │
        ▼               ▼               ▼
  ┌──────────┐   ┌──────────┐   ┌──────────┐
  │LatentSync│   │  FFmpeg  │   │Playwright│
  │ 唇形同步  │   │ 视频合成  │   │ 自动发布  │
  └──────────┘   └──────────┘   └──────────┘

技术选型

模块 技术选择 备选方案
前端框架 Next.js 14 Vue 3 + Vite
UI 组件库 Tailwind + shadcn/ui Ant Design
后端框架 FastAPI Flask
任务队列 Celery + Redis RQ / Dramatiq
唇形同步 LatentSync 1.6 MuseTalk / Wav2Lip
TTS 配音 EdgeTTS CosyVoice
声音克隆 Qwen3-TTS 0.6B GPT-SoVITS
视频处理 FFmpeg MoviePy
自动发布 social-auto-upload 自行实现
数据库 SQLite → PostgreSQL MySQL
文件存储 本地 / MinIO 阿里云 OSS

分阶段实施计划

阶段一:核心功能验证 (MVP)

目标:验证 MuseTalk + EdgeTTS 效果,跑通端到端流程

1.1 环境搭建

# 创建项目目录
mkdir TalkingHeadAgent
cd TalkingHeadAgent

# 克隆 MuseTalk
git clone https://github.com/TMElyralab/MuseTalk.git

# 安装依赖
cd MuseTalk
pip install -r requirements.txt

# 下载模型权重 (按官方文档)

1.2 集成 EdgeTTS

# tts_engine.py
import edge_tts
import asyncio

async def text_to_speech(text: str, voice: str = "zh-CN-YunxiNeural", output_path: str = "output.mp3"):
    communicate = edge_tts.Communicate(text, voice)
    await communicate.save(output_path)
    return output_path

1.3 端到端测试脚本

# test_pipeline.py
"""
1. 文案 → EdgeTTS → 音频
2. 静态视频 + 音频 → MuseTalk → 口播视频
3. 添加字幕 → FFmpeg → 最终视频
"""

1.4 验证标准

  • MuseTalk 能正常推理
  • 唇形与音频同步率 > 90%
  • 单个视频生成时间 < 2 分钟

阶段二:后端 API 开发

目标:将核心功能封装为 API支持异步任务

2.1 项目结构

backend/
├── app/
│   ├── main.py              # FastAPI 入口
│   ├── api/
│   │   ├── videos.py        # 视频生成 API
│   │   ├── materials.py     # 素材管理 API
│   │   └── publish.py       # 发布管理 API
│   ├── services/
│   │   ├── tts_service.py   # TTS 服务
│   │   ├── lipsync_service.py  # 唇形同步服务
│   │   └── video_service.py    # 视频合成服务
│   ├── tasks/
│   │   └── celery_tasks.py  # Celery 异步任务
│   ├── models/
│   │   └── schemas.py       # Pydantic 模型
│   └── core/
│       └── config.py        # 配置管理
├── requirements.txt
└── docker-compose.yml       # Redis + API

2.2 核心 API 设计

端点 方法 功能
/api/materials POST 上传素材视频
/api/materials GET 获取素材列表
/api/videos/generate POST 创建视频生成任务
/api/tasks/{id} GET 查询任务状态
/api/videos/{id}/download GET 下载生成的视频
/api/publish POST 发布到社交平台

2.3 Celery 任务定义

# tasks/celery_tasks.py
@celery.task
def generate_video_task(material_id: str, text: str, voice: str):
    # 1. TTS 生成音频
    # 2. MuseTalk 唇形同步
    # 3. FFmpeg 添加字幕
    # 4. 保存并返回视频 URL
    pass

阶段三:前端 Web UI

目标:提供用户友好的操作界面

3.1 页面设计

页面 功能
素材库 上传/管理多场景素材视频
生成视频 输入文案、选择素材、生成预览
任务中心 查看生成进度、下载视频
发布管理 绑定平台、一键发布、定时发布

3.2 技术实现

# 创建 Next.js 项目
npx create-next-app@latest frontend --typescript --tailwind --app

# 安装依赖
cd frontend
npm install @tanstack/react-query axios

阶段四:社交媒体发布

目标:集成 social-auto-upload支持多平台发布

4.1 复用 social-auto-upload

# 复制模块
cp -r SuperIPAgent/social-auto-upload backend/social_upload
# 用户通过浏览器登录 → 保存 Cookie → 后续自动发布

4.3 支持平台

  • 抖音
  • 小红书
  • 微信视频号
  • 快手

阶段五:优化与扩展

功能 实现方式
声音克隆 集成 GPT-SoVITS用自己的声音
批量生成 上传 Excel/CSV批量生成视频
字幕编辑器 可视化调整字幕样式、位置
Docker 部署 一键部署到云服务器

阶段六MuseTalk 服务器部署 (Day 2-3)

目标:在双显卡服务器上部署 MuseTalk 环境

  • Conda 环境配置 (musetalk)
  • 模型权重下载 (~7GB)
  • Subprocess 调用方式实现
  • 健康检查功能

阶段七MuseTalk 完整修复 (Day 4)

目标:解决推理脚本的各种兼容性问题

  • 权重检测路径修复 (软链接)
  • 音视频长度不匹配修复
  • 推理脚本错误日志增强
  • 视频合成 MP4 生成验证

阶段八:前端功能增强 (Day 5)

目标:提升用户体验

  • Web 视频上传功能
  • 上传进度显示
  • 自动刷新素材列表

阶段九:唇形同步模型升级 (Day 6)

目标:从 MuseTalk 迁移到 LatentSync 1.6

  • MuseTalk → LatentSync 1.6 迁移
  • 后端代码适配 (config.py, lipsync_service.py)
  • Latent Diffusion 架构 (512x512 高清)
  • 服务器端到端验证

阶段十:性能优化 (Day 6)

目标:提升系统响应速度和稳定性

  • 视频预压缩优化 (1080p → 720p 自动适配)
  • 进度更新细化 (实时反馈)
  • 常驻模型服务 (Persistent Server, 0s 加载)
  • GPU 并发控制 (串行队列防崩溃)

阶段十一:社交媒体发布完善 (Day 7)

目标:实现全自动扫码登录和多平台发布

  • QR码自动登录 (Playwright headless + Stealth)
  • 多平台上传器架构 (B站/抖音/小红书)
  • Cookie 自动管理
  • 定时发布功能

阶段十二:用户体验优化 (Day 8)

目标:提升文件管理和历史记录功能

  • 文件名保留 (时间戳前缀 + 原始名称)
  • 视频持久化 (历史视频列表 API)
  • 素材/视频删除功能

阶段十三:发布模块优化 (Day 9)

目标:代码质量优化 + 发布功能验证

  • B站/抖音登录+发布验证通过
  • 资源清理保障 (try-finally)
  • 超时保护 (消除无限循环)
  • 完整类型提示

阶段十四:用户认证系统 (Day 9)

目标:实现安全、隔离的多用户认证体系

  • Supabase 云数据库集成 (本地自托管)
  • JWT + HttpOnly Cookie 认证架构
  • 用户表与权限表设计 (RLS 准备)
  • 认证部署文档 (Docs/SUPABASE_DEPLOY.md)

阶段十五:部署稳定性优化 (Day 9)

目标:确保生产环境服务长期稳定

  • 依赖冲突修复 (bcrypt)
  • 前端构建修复 (Production Build)
  • PM2 进程守护配置
  • 部署手册更新 (Docs/DEPLOY_MANUAL.md)

阶段十六HTTPS 全栈部署 (Day 10)

目标:实现安全的公网 HTTPS 访问

  • 阿里云 Nginx 反向代理配置
  • Let's Encrypt SSL 证书集成
  • Supabase 自托管部署 (Docker)
  • 端口冲突解决 (3003/8008/8444)
  • Basic Auth 管理后台保护

阶段十七:声音克隆功能集成 (Day 13)

目标:实现用户自定义声音克隆能力

  • Qwen3-TTS HTTP 服务 (独立 FastAPI端口 8009)
  • 声音克隆服务封装 (voice_clone_service.py)
  • 参考音频管理 API (上传/列表/删除)
  • 前端 TTS 模式选择 UI
  • Supabase ref-audios Bucket 配置
  • 端到端测试验证

项目目录结构 (最终)

TalkingHeadAgent/
├── frontend/                # Next.js 前端
│   ├── app/
│   ├── components/
│   └── package.json
├── backend/                 # FastAPI 后端
│   ├── app/
│   ├── MuseTalk/            # 唇形同步模型
│   ├── social_upload/       # 社交发布模块
│   └── requirements.txt
├── docker-compose.yml       # 一键部署
└── README.md

开发时间估算

阶段 预计时间 说明
阶段一 2-3 天 环境搭建 + 效果验证
阶段二 3-4 天 后端 API 开发
阶段三 3-4 天 前端 UI 开发
阶段四 2 天 社交发布集成
阶段五 按需 持续优化

总计:约 10-13 天可完成 MVP


验证计划

阶段一验证

  1. 运行 test_pipeline.py 脚本
  2. 检查生成视频的唇形同步效果
  3. 确认音画同步

阶段二验证

  1. 使用 Postman/curl 测试所有 API 端点
  2. 验证任务队列正常工作
  3. 检查视频生成完整流程

阶段三验证

  1. 在浏览器中完成完整操作流程
  2. 验证上传、生成、下载功能
  3. 检查响应式布局

阶段四验证

  1. 发布一个测试视频到抖音
  2. 验证定时发布功能
  3. 检查发布状态同步

硬件要求

配置 最低要求 推荐配置
GPU NVIDIA GTX 1060 6GB RTX 3060 12GB+
内存 16GB 32GB
存储 100GB SSD 500GB SSD
CUDA 11.7+ 12.0+

下一步行动

  1. 确认你的 GPU 配置 - MuseTalk 需要 NVIDIA GPU
  2. 选择开发起点 - 从阶段一开始验证效果
  3. 确定项目位置 - 在哪个目录创建项目

Important

请确认以上计划是否符合你的需求,有任何需要调整的地方请告诉我。