本地部署 MuseTalk 数字人(windows)

目录

[🖥️ Windows 系统本地部署 MuseTalk 教程](#🖥️ Windows 系统本地部署 MuseTalk 教程)

[🛠️ Windows 专属优化设置](#🛠️ Windows 专属优化设置)

[💡 高级技巧](#💡 高级技巧)

关于长视频训练出错问题解决方案

解决方案

[1. 修改代码避免全加载(推荐)](#1. 修改代码避免全加载(推荐))

[2. 降低输入视频规格](#2. 降低输入视频规格)

[3. 增加系统虚拟内存(临时方案)](#3. 增加系统虚拟内存(临时方案))

[4. 分段处理长视频(终极方案)](#4. 分段处理长视频(终极方案))

调试建议

额外优化


🖥️ Windows 系统本地部署 MuseTalk 教程

bash 复制代码
# 1. 打开命令提示符(管理员)
cmd 管理员打开

# 2. 克隆仓库
git clone https://github.com/TMElyralab/MuseTalk
cd MuseTalk

# 3. 创建虚拟环境
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process   # 在当前PowerShell会话中临时允许脚本运行,不会影响其他会话:
python -m venv musetalk_venv

musetalk_venv\Scripts\activate (windows激活方式)
source musetalk_venv/bin/activate  (linux激活方式)

# 4. 安装依赖(关键步骤!)


pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 卸载当前版本
pip uninstall torch torchvision torchaudio -y

# 安装依赖这里会出现很多问题,这里着重说明下

  # 永久设置镜像源
  pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  
  # 设置长超时时间
  pip --default-timeout=1000 install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121

  # 在当前PowerShell会话中临时允许脚本运行,不会影响其他会话:
  Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

  # 安装MMLab软件包
pip install --no-cache-dir -U openmim -i https://pypi.tuna.tsinghua.edu.cn/simple
mim install mmengine -i https://pypi.tuna.tsinghua.edu.cn/simple
mim install "mmcv==2.0.1" -i https://pypi.tuna.tsinghua.edu.cn/simple
mim install "mmdet==3.1.0" -i https://pypi.tuna.tsinghua.edu.cn/simple
mim install "mmpose==1.1.0" -i https://pypi.tuna.tsinghua.edu.cn/simple
  
# 5. 下载权重
  # 下载预训练模型(手动)
  访问 https://huggingface.co/TMElyralab/MuseTalk/tree/main
  下载所有 .pth 文件到 MuseTalk/weights 文件夹
  
  您还可以从以下链接手动下载权重:
  所有权重:https://huggingface.co/hengtuibabai/MuseTalk.models/tree/main
  sd-vae-ft-mse  			https://huggingface.co/stabilityai/sd-vae-ft-mse/tree/main
  whisper  						https://huggingface.co/openai/whisper-tiny/tree/main
  dwpose  						https://huggingface.co/yzd-v/DWPose/tree/main
  syncnet  						https://huggingface.co/ByteDance/LatentSync/tree/main
  face-parse-bisent  	https://huggingface.co/ManyOtherFunctions/face-parse-bisent/tree/main
  resnet18  					https://download.pytorch.org/models/resnet18-5c106cde.pth

  # 下载预训练模型(自动脚本)
  # Run the script
  download_weights.bat

  sh ./download_weights.sh  (linux)


  #手动下载模型:在浏览器中访问链接 https://www.adrianbulat.com/downloads/python-fan/s3fd-619a316812.pth,直接下载文件。
  #放置到指定目录:将下载的文件保存到 C:\Users\Administrator/.cache\torch\hub\checkpoints\ 路径下,覆盖或替换现有文件。
  
# 6. 启动服务
python app.py 
python app.py --use_float16 --ffmpeg_path ffmpeg-master-latest-win64-gpl-shared\bin
python app.py --ffmpeg_path C:\ffmpeg-master-latest-win64-gpl-shared\bin
python app.py --use_float16 --ffmpeg_path C:\ffmpeg-master-latest-win64-gpl-shared\bin

# 7. 浏览器访问
http://localhost:6006

# 修改代码,检查cpu还是gpu输出,CUDA是否可用
# load model weights
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA版本: {torch.version.cuda}")
print(f"设备: {torch.cuda.get_device_name(0)}")
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"Using device: {device}") # 打印最终设备:
  
# 权重应该组织在models如下所示

./models/
├── musetalk
│   └── musetalk.json
│   └── pytorch_model.bin
├── musetalkV15
│   └── musetalk.json
│   └── unet.pth
├── syncnet
│   └── latentsync_syncnet.pt
├── dwpose
│   └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│   ├── 79999_iter.pth
│   └── resnet18-5c106cde.pth
├── sd-vae
│   ├── config.json
│   └── diffusion_pytorch_model.bin
└── whisper
    ├── config.json
    ├── pytorch_model.bin
    └── preprocessor_config.json

🛠️ Windows 专属优化设置

  1. 解决显存不足
  • 编辑 configs/inference.yaml

    resolution: 720 # 从1080改为720
    batch_size: 1 # 8GB显存设为1
    use_sr: false # 关闭超分辨率

  1. 加速模型加载
  • 下载 CUDA加速DLL
  • 解压到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
  1. 开机自启脚本(创建 MuseTalk.bat):

    @echo off
    cd /d D:\AI_Projects\MuseTalk
    call musetalk_venv\Scripts\activate
    python app.py

  • 将此bat文件放入开机启动文件夹:Win+R 输入 shell:startup

💡 高级技巧

  1. 实时摄像头驱动

    修改 app.py 添加:

    video_source = 0 # 0=默认摄像头

  2. 接入 ChatGPT

💎 提示:首次生成需10-30分钟(模型初始化),后续生成约1-2分钟/分钟视频。推荐使用 NVIDIA Studio 驱动提升稳定性。


如果遇到任何问题,可查看日志文件:MuseTalk/logs/runtime.log

关于长视频训练出错问题解决方案

用 5 分钟视频,2G 大小,帧率: 50fps,分辨率: 2160x3840(4K 竖屏)

  1. 高分辨率视频处理
  • 您的视频分辨率是 2160x3840(4K竖屏),每帧图像需要约 24.8MB 内存(2160×3840×3 字节)
  • 5分钟视频(300秒)在 50fps 帧率下共 15,000帧
  • 全加载需要:15,000 × 24.8MB ≈ 372GB 内存
  • 远超您的 32GB 内存容量
  1. 代码设计缺陷
  • 错误发生在 app.pycheck_video() 函数中:

    frames = [im for im in reader] # 试图一次性加载所有帧到内存

  • 这种实现方式不适合处理长视频

解决方案

1. 修改代码避免全加载(推荐)

编辑 app.py 文件,优化视频处理逻辑:

复制代码
# 找到 check_video() 函数中的以下代码(约第461行):
frames = [im for im in reader]

# 替换为逐帧处理逻辑:
valid_frames = []
for i, im in enumerate(reader):
    # 添加必要处理逻辑
    valid_frames.append(im)
    # 每处理100帧释放一次内存
    if i % 100 == 0: 
        gc.collect()
2. 降低输入视频规格
复制代码
# 使用FFmpeg预处理视频(在Musetalk外执行)
ffmpeg -i input.mp4 \
  -vf "scale=960:-1,fps=25" \  # 缩小分辨率并降低帧率
  -crf 23 \                    # 保持合理质量
  output.mp4
3. 增加系统虚拟内存(临时方案)
  1. 打开Windows设置 → 系统 → 高级系统设置
  2. 性能设置 → 高级 → 虚拟内存 → 更改
  3. 取消"自动管理",选择C盘 → 自定义大小:
  • 初始大小:32768 (32GB)
  • 最大值:65536 (64GB)
  1. 设置后重启系统
4. 分段处理长视频(终极方案)
复制代码
# 在app.py中添加分段处理逻辑
segment_length = 30  # 30秒一段

for start_time in range(0, total_duration, segment_length):
    end_time = min(start_time + segment_length, total_duration)
    
    # 用FFmpeg切割视频片段
    subprocess.run(f"ffmpeg -i input.mp4 -ss {start_time} -to {end_time} segment.mp4")
    
    # 处理片段
    process_video("segment.mp4")
    
    # 合并结果
    subprocess.run("ffmpeg -f concat -i filelist.txt final_output.mp4")

调试建议

  1. 优先尝试 方案1(代码修改),这是最根本的解决方法

  2. 监控内存使用:

    在app.py中添加内存监控

    import psutil

    def check_memory():
    mem = psutil.virtual_memory()
    print(f"Memory used: {mem.used/1024/1024:.2f}MB")

    在循环中调用

    for i, frame in enumerate(reader):
    if i % 50 == 0:
    check_memory()

  3. 安装内存监控工具:

    pip install memory_profiler
    mprof run python app.py

额外优化

  1. 启用GPU加速解码:

    在视频读取时使用GPU加速

    import cv2
    cap = cv2.VideoCapture(video_path, cv2.CAP_FFMPEG)
    cap.set(cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY)

  2. 使用内存映射文件:

    import numpy as np

    创建内存映射文件

    mmap_file = np.memmap('temp.dat', dtype='uint8', mode='w+', shape=(num_frames, height, width, 3))

    for i in range(num_frames):
    mmap_file[i] = reader.get_data(i)

这些解决方案应该能帮助您处理长视频。建议从代码修改(方案1)开始,这是最直接有效的方法。如果仍有问题,可以结合使用视频预处理和分段处理方案。

相关推荐
机器小乙2 小时前
【开源】2 分钟在 Windows 上搭建 AI Agent 运行环境:MachineY Engine 使用指南
人工智能·windows·ai·开源·openclaw
李子红了时2 小时前
Win10一键禁用自动更新和Windows Defender安全中心
windows·安全
一个人旅程~3 小时前
intel的哪几代酷睿芯片存在“缩缸”缺陷?你的电脑受影响了吗?
windows·经验分享·电脑
芥子沫5 小时前
Memos捷径(Shortcuts)用法介绍
linux·服务器·windows
脸红ฅฅ*的思春期5 小时前
Windows内核攻防—利用RTCore64驱动绕过Windows签名校验
windows·windows内核·dse绕过·rtcore64
white-persist5 小时前
【CTF线下赛 AWD】AWD 比赛全维度实战解析:从加固防御到攻击拿旗
网络·数据结构·windows·python·算法·安全·web安全
小云小白6 小时前
OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)
windows·ai助手·oepncowork
武藤一雄15 小时前
C# 引用传递:深度解析 ref 与 out
windows·microsoft·c#·.net·.netcore
qiuyuyiyang19 小时前
MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
windows·mysql·adb