201 lines
5.1 KiB
Markdown
201 lines
5.1 KiB
Markdown
# Day 2 - MuseTalk 集成与服务器部署
|
||
|
||
**日期**:2026-01-14
|
||
**开发环境**:Windows 11 (本地) / Ubuntu 24.04 (服务器)
|
||
**目标平台**:Dell R730 (GPU1: RTX 3090 用于 MuseTalk)
|
||
|
||
---
|
||
|
||
## 🎯 今日目标
|
||
|
||
1. 端口配置(解决端口冲突)
|
||
2. MuseTalk 服务器部署
|
||
3. MuseTalk 完整集成测试
|
||
|
||
---
|
||
|
||
## 🔧 端口配置
|
||
|
||
### 问题描述
|
||
服务器上 8000 端口被 `xiaozhi-server` 占用,3000 端口被 `LunaTV` 占用。
|
||
|
||
### 解决方案
|
||
| 服务 | 原端口 | 新端口 |
|
||
|------|--------|--------|
|
||
| 后端 API | 8000 | **8006** |
|
||
| 前端 UI | 3000 | **3002** |
|
||
|
||
### 修改的文件
|
||
- `frontend/src/app/page.tsx` - API_BASE
|
||
- `frontend/src/app/publish/page.tsx` - API_BASE
|
||
- `frontend/next.config.ts` - rewrite destination
|
||
- `README.md` - 访问地址
|
||
- `Docs/DEPLOY_MANUAL.md` - 部署命令和验证步骤
|
||
|
||
**状态**:✅ 已完成
|
||
|
||
---
|
||
|
||
## 🔧 MuseTalk 服务器部署
|
||
|
||
### 环境配置
|
||
```bash
|
||
# 创建 conda 环境
|
||
conda create -n musetalk python=3.10 -y
|
||
conda activate musetalk
|
||
|
||
# 安装 PyTorch (CUDA 12.1)
|
||
pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cu121
|
||
pip install torchvision --index-url https://download.pytorch.org/whl/cu121
|
||
|
||
# 安装 MuseTalk 依赖
|
||
pip install -r requirements.txt
|
||
pip install openmim
|
||
mim install mmengine mmcv mmdet
|
||
|
||
# mmpose 安装问题 (chumpy 编译失败)
|
||
pip install mmpose --no-deps
|
||
pip install xtcocotools munkres json_tricks
|
||
```
|
||
|
||
### 模型权重下载
|
||
```bash
|
||
huggingface-cli download TMElyralab/MuseTalk --local-dir ./models/musetalk
|
||
huggingface-cli download stabilityai/sd-vae-ft-mse --local-dir ./models/sd-vae-ft-mse
|
||
huggingface-cli download openai/whisper-tiny --local-dir ./models/whisper
|
||
```
|
||
|
||
**状态**:✅ 完成(权重 ~7GB 已下载)
|
||
|
||
---
|
||
|
||
## 🔧 前端 API 请求问题
|
||
|
||
### 问题描述
|
||
前端请求 `http://127.0.0.1:8006` 失败,浏览器把 127.0.0.1 解析到本地机器而非服务器。
|
||
|
||
### 解决方案
|
||
改用动态 API 地址:
|
||
```typescript
|
||
const API_BASE = typeof window !== 'undefined'
|
||
? `http://${window.location.hostname}:8006`
|
||
: 'http://localhost:8006';
|
||
```
|
||
|
||
**状态**:✅ 已修复
|
||
|
||
---
|
||
|
||
## 🔧 venv/conda 环境隔离
|
||
|
||
### 问题描述
|
||
后端使用 Python venv,MuseTalk 使用 conda 环境,无法直接 import。
|
||
|
||
### 解决方案
|
||
重写 `lipsync_service.py`,通过 subprocess 调用 conda 环境:
|
||
```python
|
||
self.conda_python = Path.home() / "ProgramFiles" / "miniconda3" / "envs" / "musetalk" / "bin" / "python"
|
||
|
||
cmd = [str(self.conda_python), "-m", "scripts.inference", ...]
|
||
env["CUDA_VISIBLE_DEVICES"] = str(self.gpu_id) # 使用 GPU1
|
||
subprocess.run(cmd, cwd=str(self.musetalk_dir), env=env, ...)
|
||
```
|
||
|
||
**状态**:✅ 代码已完成
|
||
|
||
---
|
||
|
||
## 🔧 模型权重路径问题
|
||
|
||
### 问题描述
|
||
健康检查返回 `weights: False`。
|
||
|
||
### 原因
|
||
huggingface-cli 下载后目录结构是嵌套的:
|
||
- 期望:`models/musetalkV15/`
|
||
- 实际:`models/musetalk/musetalkV15/`
|
||
|
||
### 修复
|
||
```python
|
||
# 修复后
|
||
required_dirs = [
|
||
self.musetalk_dir / "models" / "musetalk" / "musetalkV15",
|
||
self.musetalk_dir / "models" / "whisper",
|
||
]
|
||
```
|
||
|
||
**状态**:✅ 已修复,健康检查返回 `ready: True`
|
||
|
||
---
|
||
|
||
## 🚨 遗留问题:MuseTalk 未被调用
|
||
|
||
### 现象
|
||
视频生成成功,但日志显示未调用 MuseTalk 推理。
|
||
|
||
### 诊断结果
|
||
|
||
1. **健康检查通过**:
|
||
```json
|
||
{"conda_env": true, "weights": true, "gpu": true, "gpu_name": "NVIDIA GeForce RTX 3090", "ready": true}
|
||
```
|
||
|
||
2. **代码逻辑问题**(已修复但未验证):
|
||
```python
|
||
# 之前 check_health() 返回字典,if 判断永远为 True
|
||
if await lipsync.check_health(): # 返回 dict,非 bool
|
||
|
||
# 修复后
|
||
health = await lipsync.check_health()
|
||
if health.get("ready", False): # 正确检查
|
||
```
|
||
|
||
3. **服务器代码同步问题**:
|
||
- 本地代码已修改
|
||
- 服务器可能未完全拉取最新代码
|
||
|
||
### 待验证
|
||
1. 重启后端进程(当前进程可能还在用旧代码)
|
||
2. 观察终端日志是否显示 `[LipSync] Starting MuseTalk inference...`
|
||
3. 如果日志显示但推理失败,检查 subprocess 调用错误
|
||
|
||
---
|
||
|
||
## ✅ 今日完成
|
||
|
||
1. ✅ 端口配置(8000→8006, 3000→3002)
|
||
2. ✅ MuseTalk conda 环境安装
|
||
3. ✅ 模型权重下载 (~7GB)
|
||
4. ✅ 前端动态 API 地址
|
||
5. ✅ lipsync_service.py subprocess 调用方式
|
||
6. ✅ 模型权重路径修复
|
||
7. ✅ 健康检查功能验证
|
||
8. ✅ videos.py check_health() 返回值检查修复
|
||
9. ✅ 服务器代码同步验证
|
||
|
||
---
|
||
|
||
## ❌ 未完成
|
||
|
||
1. ❌ MuseTalk 实际推理调用(代码已就绪,需重启后端验证)
|
||
2. ❌ 端到端唇形同步测试
|
||
3. ❌ 社交媒体发布测试
|
||
|
||
---
|
||
|
||
## 📋 明日首要任务
|
||
|
||
```bash
|
||
# 1. 重启后端
|
||
cd /home/rongye/ProgramFiles/ViGent/backend
|
||
source venv/bin/activate
|
||
uvicorn app.main:app --host 0.0.0.0 --port 8006
|
||
|
||
# 2. 生成视频,观察终端日志
|
||
# 应该看到:
|
||
# [LipSync] Health check: {'ready': True, ...}
|
||
# [LipSync] Starting MuseTalk inference...
|
||
|
||
# 3. 如果推理失败,检查 subprocess 输出
|
||
```
|