wwdok / SadTalker_ModelScope

Use one line code to call SadTalker API with modelscope
18 stars 3 forks source link
audio-driven-talking-face gradio modelscope python3 pytorch sadtalker talking-head

SadTalker within modelscope

For English Reader, please refer to README-EN.md

本仓库是基于 https://github.com/OpenTalker/SadTalker (ed419f275f8a5cae7ca786349787ffebce5bd59e)改编而来,目标是为了将sadtalker仓库封装成modelscope library,这样就能便用几行代码调用sadtalker的能力,方便集成到其他项目里,且本仓库支持使用文本生成语音(edge tts和sambert),无需用户自己上传音频,方便用户快速试玩。

modelscope托管的仓库:https://modelscope.cn/models/wwd123/sadtalker (是本github仓库的精减版,两处的代码有轻微的不同。)

该仓库主要分为两种使用方式,第一种运行时跑的是本仓库根目录下的代码,入口文件是gradio_app.py。另一个是通过modelscope调用、运行时跑的是modelscope cache目录下的代码,入口文件是gradio_app_ms.py、demo.ipynb、ms_wrapper.py。

第一种使用方式

配置环境

以Linux为例,考虑到在安装过程中可能会出现某些pypi包会覆盖安装的问题,安装上讲究顺序。

  1. 如果你还没安装pytorch,先安装pytorch:注意pytorch版本要跟cuda版本对应。
  2. 首先安装kantts:pip install kantts -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html, kantts会重装最新版的numpy,这会导致错误,所以下面我们在requirements.txt里重新安装较低版的numpy。这个是为了使用sambert TTS而安装的依赖,如果你不需要sambert TTS的功能,可以不安装它。
  3. 然后安装其他pypi包:pip install -r requirements.txt
  4. 下面是原SadTalker里没有但我发现我本机需要安装的:
    tb-nightly
    pytorch_wavelets
    tensorboardX
    typing-extensions==4.3.0
  5. 上面的安装过程中很可能会重装opencv python,而我的服务器没有GUI,所以我需要再重装一下opencv python headless,如果你的电脑有GUI,则跳过这一步。
  6. 安装ffmpeg。首先通过ffmpeg -version检查你的电脑是否已经安装过ffmpeg,没有的话,通过以下两行命令安装:
    sudo apt update
    sudo apt install ffmpeg

    windows安装ffmpeg会有所不同,请百度一下。

  7. 下载预训练模型权重:bash download_models.sh。这一步会可能耗时,你也可以把里面的链接粘贴到其他下载器下载,下载完再移动到指定文件夹下。完成后会生成checkpoints和gfpgan/weights文件夹,里面分别有4个模型权重文件。

运行

第二种使用方式

配置环境

配置环境教程

运行

from modelscope.pipelines import pipeline

inference = pipeline('talking-head', model='wwd123/sadtalker', model_revision='v1.0.0') # 请使用最新版的model_revision
# 两个必须参数
source_image = 'examples/source_image/man.png' # 请修改成你的实际路径
driven_audio = 'examples/driven_audio/chinese_poem1.wav' # 请修改成你的实际路径
# 其他可选参数
out_dir = './results/' # 输出文件夹
kwargs = {
    'preprocess' : 'full', # 'crop', 'resize', 'full'
    'still_mode' : True,
    'use_enhancer' : False,
    'batch_size' : 1,
    'size' : 256, # 256, 512
    'pose_style' : 0,
    'exp_scale' : 1,
    'result_dir': out_dir
}

video_path = inference(source_image, driven_audio=driven_audio, **kwargs)
print(f"==>> video_path: {video_path}")

本仓库也提供了基于modelscope封装好的sadtalker库的webui:python gradio_app_ms.py。 你可以在Colab上试玩:Open In Colab,也可以在本地试玩demo.ipynb

参数说明