ONNX 模型库
返回模型

说明文档

🔉👄 Wav2Lip STUDIO 独立版

<img src="demo/demo.gif" width="100%">

demo/demo1.mp4

💡 简介

本仓库包含 Wav2Lip Studio 独立版本。

这是一个一站式解决方案:只需选择视频和语音文件(wav 或 mp3),工具就会生成口型同步视频、换脸、声音克隆以及带声音克隆的视频翻译(类似 HeyGen)。 它通过应用特定的后处理技术,提高了 Wav2Lip 工具 生成的口型同步视频的质量。

示意图 示意图

📖 快速索引

🚀 更新日志

2024.01.20 重大更新(仅限独立版本)

  • ♻ 项目管理:添加管理多个项目的功能
  • 👪 引入多人换脸:现在可以在一个镜头中换多个脸(参见使用方法部分)
  • ⛔ 可见人脸限制:即使帧中未检测到人脸,现在也可以完成整个流程!
  • 📺 视频尺寸:支持高分辨率视频输入(已测试 1980x1080,应该支持 4K 但速度较慢)
  • 🔑 关键帧管理器:添加关键帧管理器以更好地控制视频生成
  • 🍪 coqui TTS 集成:移除 bark 集成,改用 coqui TTS(参见使用方法部分)
  • 💬 对话功能:添加多人对话功能(参见使用方法部分)
  • 🔈 录制自己的声音:添加录制自己声音的功能(参见使用方法部分)
  • 👬 克隆声音:添加从视频中克隆声音的功能(参见使用方法部分)
  • 🎏 视频翻译:添加带声音克隆的视频翻译功能(参见使用方法部分)
  • 🔉 Wav2lip 音量放大器:添加放大 wav2lip 输出音量的功能(参见使用方法部分)
  • 🕡 在语音开始前添加延迟
  • 🚀 加速处理:提升处理速度

2023.09.13

  • 👪 引入换脸功能:facefusion 集成(参见使用方法部分)此功能处于实验阶段。

2023.08.22

  • 👄 引入 bark(参见使用方法部分),此功能处于实验阶段。

2023.08.20

  • 🚢 引入 GFPGAN 模型作为选项。
  • ▶ 添加恢复生成功能。
  • 📏 优化生成后释放内存。

2023.08.17

  • 🐛 修复紫嘴唇问题

2023.08.16

  • ⚡ 添加 Wav2lip 和增强视频输出,可选择下载最适合您的版本,通常是"生成的视频"。
  • 🚢 更新用户界面:引入 CodeFormer 保真度控制。
  • 👄 移除图片输入功能,SadTalker 更适合此用途。
  • 🐛 修复输入和输出视频之间导致遮罩位置不正确的差异问题。
  • 💪 优化质量流程以提高效率。
  • 🚫 中断时,如果流程已创建帧,仍会生成视频

2023.08.13

  • ⚡ 加速计算
  • 🚢 更改用户界面:添加隐藏参数控制
  • 👄 仅在需要时追踪嘴部
  • 📰 控制调试
  • 🐛 修复缩放因子问题

🔗 系统要求

  • FFmpeg:从 FFmpeg 官方网站 下载。按照适合您操作系统的说明进行安装,注意 ffmpeg 必须能从命令行访问。

💻 安装说明

Windows 用户

  1. 安装 Visual Studio。在安装过程中,确保在 Visual Studio 安装程序中包含 Python 和 C++ 包。 示意图 示意图

  2. 安装 python 3.10.11

  3. 安装 git

  4. 如果尚未安装,安装 Cuda 11.8 示意图

  5. 检查 python 和 git 安装

    python --version
    git --version
    nvcc --version
    

    应返回类似以下内容

    Python 3.10.11
    git version 2.35.1.windows.2
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2022 NVIDIA Corporation
    Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
    Cuda compilation tools, release 11.8, V11.8.89
    Build cuda_11.8.r11.8/compiler.31833905_0
    
  6. 如果您的计算机上有多个 Python 版本,编辑 wav2lip-studio.bat 并更改以下行:

    REM set PYTHON=\"your python.exe path\"
    
    set PYTHON=\"your python.exe path\"
    
  7. 双击 wav2lip-studio.bat,这将安装依赖项并下载模型

MACOS 用户

  1. 安装 python 3.9

    brew update
    brew install python@3.9
    brew install git-lfs
    git-lfs install
    
  2. 安装环境和依赖项

    cd /YourWav2lipStudioFolder
    /opt/homebrew/bin/python3.9 -m venv venv
    ./venv/bin/python3.9 -m pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2
    ./venv/bin/python3.9 -m pip install -r requirements.txt
    ./venv/bin/python3.9 -m pip install transformers==4.33.2
    ./venv/bin/python3.9 -m pip install numpy==1.24.4
    

    如果 pip install -r requirements.txt 不起作用或时间过长

    ./venv/bin/python3.9 -m pip install inaSpeechSegmenter
    ./venv/bin/python3.9 -m pip install gradio==4.14.0 imutils==0.5.4 numpy opencv-python==4.8.0.76 scipy==1.11.2 requests==2.28.1  pillow==9.3.0  librosa==0.10.0 opencv-contrib-python==4.8.0.76 huggingface_hub==0.20.2 tqdm==4.66.1 cutlet==0.3.0 numba==0.57.1 imageio_ffmpeg==0.4.9 insightface==0.7.3 unidic==1.1.0 onnx==1.14.1 onnxruntime==1.16.0 psutil==5.9.5 lpips==0.1.4 GitPython==3.1.36 facexlib==0.3.0 gfpgan==1.3.8 gdown==4.7.1 pyannote.audio==3.1.1 TTS==0.21.2 openai-whisper==20231117 resampy==0.4.0 scenedetect==0.6.2 uvicorn==0.23.2 starlette==0.35.1 fastapi==0.109.0 fugashii
    ./venv/bin/python3.9 -m pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2
    ./venv/bin/python3.9 -m pip install transformers==4.33.2
    ./venv/bin/python3.9 -m pip install numpy==1.24.4
    
  3. 安装模型

    git clone https://huggingface.co/numz/wav2lip_studio models
    
  4. 启动界面

    ./venv/bin/python3.9 wav2lip_studio.py
    

所有用户

  1. pyannote.audio:您需要同意共享您的联系信息以访问 pyannote 模型。 为此,请访问以下两个链接:

设置每个字段并点击"同意并访问仓库" 示意图

  1. 创建 Huggingface 访问令牌:
    1. 使用您的账户登录
    2. 进入设置中的访问令牌
    3. 以读取模式创建新令牌
    4. 复制令牌
    5. 将其粘贴到 api_keys.json 文件中
     {
       \"huggingface_token\": \"your token\"
     }
    

教程

🐍 使用方法

##参数

  1. 输入项目名称并点击回车。
  2. 选择视频(avi 或 mp4 格式)。注意 avi 文件不会显示在视频输入中,但处理仍然可以正常工作。
  3. 换脸(需要时间,请耐心等待):
    • 换脸:选择您想要与视频中人脸交换的人脸图像(现在支持多张人脸),左边的人脸是 id 0。
  4. 分辨率缩放因子:视频的分辨率将除以此因子。因子越大,处理越快,但输出视频的分辨率越低。
  5. 最小人脸检测宽度:要检测的人脸最小宽度。允许忽略视频中的小人脸。
  6. 对齐人脸:允许在发送到 Wav2Lip 处理之前校正头部。
  7. 说话人变化时生成关键帧:允许在说话人变化时生成关键帧。这使您可以更好地控制视频生成。
  8. 场景变化时生成关键帧:允许在场景变化时生成关键帧。这使您可以更好地控制视频生成。
  9. 设置上述参数后,点击生成关键帧,有关更多详细信息,请参阅关键帧管理器部分。
  10. 音频,3 个选项:
    1. 将音频文件放入"语音"输入框。或使用"录制"按钮录制一个。
    2. 使用文本转语音 coqui TTS 集成生成音频。
      1. 选择语言
      2. 选择声音
      3. 在"提示"文本区域中以文本格式或 json 格式写入您的语音:
        1. 文本格式:
          Hello, my name is John. I am 25 years old.
          
        2. Json 格式(您可以请 ChatGPT 为您生成对话):
          [
            {
              \"start\": 0.0,
              \"end\": 3.0,
              \"text\": \"Hello, my name is John. I am 25 years old.\",
              \"speaker\": \"arnold\"
            },
            {
              \"start\": 3.0,
              \"end\": 4.0,
              \"text\": \"Ho really ?\",
              \"speaker\": \"female_01\"
            },
            ...
          ]
          
      4. 输入视频:允许使用输入视频中的音频、声音克隆和翻译。有关更多详细信息,请参阅输入视频部分。
  11. 视频质量:
    • 低:原始 Wav2Lip 质量,速度快但效果不太好。
    • 中:通过对嘴部应用后处理获得更好的质量,速度较慢。
    • 高:通过应用后处理并提升嘴部质量获得更好的质量,速度较慢。
  12. Wav2lip 检查点:在 2 个 wav2lip 模型之间选择:
    • Wav2lip:原始 Wav2Lip 模型,速度快但效果不太好。
    • Wav2lip GAN:通过对嘴部应用后处理获得更好的质量,速度较慢。
  13. 人脸修复模型:在 2 个人脸修复模型之间选择:
    • Code Former:
      • 值为 0 提供更高的质量,但可能会显著改变人物的面部外观并导致帧之间明显的闪烁。
      • 值为 1 提供较低的质量,但更一致地保持人物的面部并减少帧闪烁。
      • 不建议使用低于 0.5 的值。调整此设置以获得最佳效果。建议从 0.75 开始。
    • GFPGAN:通常质量更好。
  14. 音量放大器:不是放大输出音频的音量,而是允许您在发送到 Wav2Lip 时放大音频音量。这使您可以更好地控制嘴唇动作。

关键帧管理器

示意图

全局参数:

  1. 仅追踪嘴部:此选项仅追踪嘴部,移除其他面部动作,如脸颊和下巴的动作。
  2. 仅显示说话人人脸:此选项允许您只关注说话人的人脸,其他人脸将被隐藏。
  3. 帧号:允许您在视频帧之间移动的滑块。
  4. 添加关键帧:允许在当前帧号添加关键帧。
  5. 移除关键帧:允许在当前帧号移除关键帧。
  6. 关键帧:所有关键帧的列表。

对于关键帧上的每个人脸:

  1. 人脸 Id:当前关键帧中所有人脸的列表。
  2. 说话人:复选框,用于将当前关键帧的当前人脸 Id 设置为说话人。
  3. 换脸 Id:复选框,用于在当前人脸 Id 上设置当前关键帧的换脸 id。
  4. 嘴部遮罩膨胀:这将膨胀嘴部遮罩以覆盖嘴部周围更多区域。取决于嘴部大小。
  5. 人脸遮罩腐蚀:这将腐蚀人脸遮罩以移除人脸周围的一些区域。取决于人脸大小。
  6. 遮罩模糊:这将模糊遮罩使其更平滑,尽量保持在嘴部遮罩膨胀值以下或相等。
  7. 填充滑块:这将向头部添加填充以避免在视频中切掉头部。

输入视频

示意图

如果翻译音频中没有声音,将使用输入视频中的音频。如果输入视频的口型同步不好,这可能很有用。

克隆声音:

  1. 说话人数量:视频中的说话人数量。帮助克隆知道要克隆多少个声音。
  2. 克隆前移除背景声音:在克隆前移除背景中的噪音/音乐。
  3. 克隆声音:从输入视频克隆声音。
  4. 声音:克隆的声音列表。

翻译:

  1. 语言:翻译输入视频的目标语言。
  2. Whisper 模型:用于翻译的 whisper 模型列表,在 5 个模型之间选择,模型越大质量越好但处理越慢。
  3. 翻译:将输入视频翻译为所选语言。
  4. 翻译结果:翻译后的文本。
  5. 翻译音频:翻译后的音频。
  6. 转换为音频:将翻译文本转换为翻译音频。

📺 示例

demo/demo2.mp4

demo/demo3.mp4

demo/demo4.mp4

demo/demo5.mp4

📖 工作原理

此扩展分几个阶段运行,以提高 Wav2Lip 生成视频的质量:

  1. 生成换脸视频:如果"换脸"字段中有图像,脚本首先生成换脸视频,此操作需要时间,请耐心等待。
  2. 生成 Wav2lip 视频:然后脚本使用输入视频和音频生成低质量的 Wav2Lip 视频。
  3. 视频质量增强:使用低质量视频,通过用户定义的增强器创建高质量视频。
  4. 遮罩创建:脚本在嘴部周围创建遮罩,并尝试保持其他面部动作,如脸颊和下巴的动作。
  5. 视频生成:然后脚本获取高质量的嘴部图像,并在嘴部遮罩的引导下将其叠加到原始图像上。

💪 质量技巧

  • 使用高质量视频作为输入
  • 使用具有一致帧率的视频。有时,视频可能表现出异常的播放帧率(不是标准的 24、25、30、60),这可能导致人脸遮罩问题。
  • 使用高质量音频文件作为输入,没有背景噪音或音乐。使用 https://podcast.adobe.com/enhance 等工具清理音频。
  • 膨胀嘴部遮罩。这将帮助模型保留一些面部动作并隐藏原始嘴部。
  • 遮罩模糊最多是嘴部遮罩膨胀值的两倍。如果您想增加模糊,请增加嘴部遮罩膨胀的值,否则嘴部会模糊,底层嘴部可能会可见。
  • 放大可以改善结果,特别是嘴部区域。但是,它会延长处理时间。使用 Olivio Sarikas 的此教程放大您的视频:https://www.youtube.com/watch?v=3z4MKUqFEUk。确保去噪强度设置在 0.0 到 0.05 之间,选择"revAnimated"模型,并使用批处理模式。我很快会为此创建一个教程。

⚠ 注意限制

  • 为了加速处理,尽量保持分辨率在 1000x1000px 以下,并在处理后进行放大。
  • 如果初始阶段过长,请考虑使用"缩放因子"来减小视频尺寸。
  • 虽然视频没有严格的大小限制,但较大的视频将需要更多的处理时间。建议使用"缩放因子"来最小化视频大小,然后在处理完成后放大视频。

📝 待办事项

  • ✔️ 独立版本
  • ✔️ 添加使用换脸图像的方法
  • ✔️ 添加使用视频作为音频输入的可能性
  • ✔️ 将 avi 转换为 mp4。Avi 不会显示在视频输入中,但处理工作正常
  • [ ] ComfyUI 集成

😎 贡献指南

我们欢迎对本项目的贡献。提交 pull request 时,请提供更改的详细描述。有关更多信息,请参阅 CONTRIBUTING。

🙏 致谢

☕ 支持 Wav2lip Studio

这个项目是一个开源项目,免费使用和修改。我依靠用户的支持来维持这个项目并帮助改进它。如果您想支持我,可以在我的 Patreon 页面捐款。任何贡献,无论大小,都非常感谢!

您的支持帮助我支付开发和维护成本,并允许我分配更多的时间和资源来增强这个项目。感谢您的支持!

Patreon 页面

📝 引用

如果您在文章、教程或演示中在自己的作品中使用此项目,我们鼓励您引用此项目以感谢其中付出的努力。

要引用此项目,请使用以下 BibTeX 格式:

@misc{wav2lip_uhq,
  author = {numz},
  title = {Wav2Lip UHQ},
  year = {2023},
  howpublished = {GitHub repository},
  publisher = {numz},
  url = {https://github.com/numz/sd-wav2lip-uhq}
}

📜 许可证

  • 本仓库中的代码按 LICENSE 文件 中的 MIT 许可证发布。

numz/wav2lip_studio

作者 numz

↓ 0 ♥ 35

创建时间: 2024-01-18 18:50:09+00:00

更新时间: 2024-02-11 23:09:19+00:00

在 Hugging Face 上查看

文件 (30)

.gitattributes
Codeformer/codeformer-v0.1.0.pth
Faceswap/README.md
Faceswap/inswapper_128.onnx ONNX
GFPGAN/GFPGANv1.4.pth
GFPGAN/detection_Resnet50_Final.pth
GFPGAN/parsing_parsenet.pth
README.md
Wav2lip/README.md
Wav2lip/lipsync_expert_.pth
Wav2lip/visual_quality_disc_.pth
Wav2lip/wav2lip.pth
Wav2lip/wav2lip_gan.pth
demo/cuda.png
demo/demo.gif
demo/demo.png
demo/demo1.mp4
demo/demo1.png
demo/demo2.mp4
demo/demo3.mp4
demo/demo4.mp4
demo/demo5.mp4
demo/hf_aggrement.png
demo/input-video.png
demo/keyframes-manager.png
demo/visual_studio_1.png
demo/visual_studio_2.png
facelib/detection_Resnet50_Final.pth
facelib/parsing_parsenet.pth
vocal_remover/baseline.pth