1枚の画像からアニメーションを生成できるSadTalkerのインストール

1枚の画像からアニメーションを生成できるSadTalkerのインストール ツール

「音声と画像の合成アニメーションを生成したい」
「SadTalkerのGUIツールが欲しい」

このような場合には、この記事の内容が参考になります。
この記事では、SadTalkerのGUIツールをインストールする方法を解説しています。

本記事の内容

  • SadTalkerとは?
  • SadTalker GUIツールのシステム要件
  • SadTalker GUIツールのインストール
  • SadTalker GUIツールの動作確認

それでは、上記に沿って解説していきます。

SadTalkerとは?

SadTalkerとは、顔画像と音声からアニメーションを作成するAI技術です。
そのアニメーションは、次のような動画になります。

画像生成AIで生成した画像に話させる

これは、たった1枚の画像と音声ファイルから作成されています。
このような技術は、以前からもありました。

Wav2LipやMakeItTalkなどは、聞いたことがあるかもしれません。

それらと比較して、SadTalkerはワンランク上の次元です。
出来上がりのアニメーションが、他よりも自然になっています。

以下の比較動画を見れば、そのことがよくわかるでしょう。

SadTalkerと他技術の比較

「Ours」のSadTalkerは、自然で違和感を感じません。
他は大なり小なり不自然さを感じてしまいます。

SadTalkerについて、もっと知りたい場合は公式ページをご覧ください。

SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation
SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation

また、Hugging Face上でDemoが公開されています。

SadTalker - a Hugging Face Space by vinthony
Upload a source image and an audio file to create a video of the image's face moving and speaking to the audio. You can also use reference videos to enhance the...

上記Demoで画像と音声をUPすれば、実際にアニメーションを作成できます。
ただし、サーバーが混んでいる可能性があります。

ここでは、このDemoをSadTalke GUIツールと呼びます。
これをローカル環境にインストールできれば、待たされることなく自由に利用できます。

以上、SadTalkerについて説明しました。
次は、SadTalker GUIツールのシステム要件を説明します。

SadTalker GUIツールのシステム要件

SadTalker GUIツールのシステム要件を説明します。
システム要件は、以下の2点です。

  • PyTorch
  • Gradio

PyTorchは、GPU版をインストールしましょう。
PyTorch 1系か2系かで迷うかもしれません。

公式は、1系で検証を行っています。

でも、2系でも問題ありません。
検証済みです。

また、GradioはGUIとして機能させるために必要なライブラリになります。

システム要件の段階では、PyTorchのインストールだけは済ませておきます。

以上、SadTalker GUIツールのシステム要件を説明しました。
次は、SadTalker GUIツールのインストールを説明します。

SadTalker GUIツールのインストール

SadTalker GUIツールのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

検証は、次のバージョンのPythonで行います。

> python -V  
Python 3.10.4

そして、システム要件であるGPU版PyTorchをインストール済という状況です。
このような状況において、次の手順でSadTalker GUIツールのインストールを進めます。

  • SadTalker GUIツールの取得(Hugging Faceから)
  • requirements.txtを使った一括インストール

それぞれを下記で説明します。

SadTalker GUIツールの取得(Hugging Faceから)

vinthony/SadTalker at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

上記ページでファイルを確認できます。

これらをダウンロードするのに、huggingface_hubを利用します。

huggingface_hubを利用すると、自動的にファイルをダウンロードしてくれます。
huggingface_hubをインストールできたら、次のコードを実行します。

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="vinthony/SadTalker",
    repo_type="space",
    revision="main",
    cache_dir="./")

上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、すぐに終わります。

処理が完了すると、ディレクトリ上に「spaces–vinthony–SadTalker」を確認できます。

そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。

「ed7bb0bf46ff0c3f197901a11ef1e1d9f408994a」は、リポジトリのバージョンです。
バージョンが更新されれば、この値も変わってきます。

この長たらしいディレクトリより下のモノをコピーしましょう。
コピーしたファイルは、コンテンツルートに保存します。

requirements.txtを使った一括インストール

コンテンツルートには、コピーしたrequirements.txtが存在しています。

requirements.txt

torch==1.13.1
torchvision==0.14.1
torchaudio==0.13.1
numpy==1.21.6
face_alignment==1.3.5
imageio==2.19.3
imageio-ffmpeg==0.4.7
librosa==0.8.0
numba
resampy==0.3.1
pydub==0.25.1 
scipy==1.5.3
kornia==0.6.8
tqdm
yacs==0.1.8
pyyaml  
joblib==1.1.0
scikit-image==0.19.3
basicsr==1.4.2
facexlib==0.2.5
dlib-bin
gfpgan
TTS==0.13.0

requirements.txtに次の修正を加えます。

  • PyTorch関連(torch、torchvision、torchaudio)を対象外にする
  • Gradio(gradio)を追加する
  • バージョン指定を外す

バージョン指定のままだと、おそらくインストール途中でエラーになるはずです。
このようなバージョン指定は、個人的にはよろしくないと考えています。

よほどのことがない限り、バージョン指定は止めた方が無難です。
これらの修正を実施した結果、requirements.txtは次のようになります。

#torch==1.13.1
#torchvision==0.14.1
#torchaudio==0.13.1
numpy
face_alignment
imageio
imageio-ffmpeg
librosa
numba
resampy
pydub
scipy
kornia
tqdm
yacs
pyyaml
joblib
scikit-image
basicsr
facexlib
dlib-bin
gfpgan
TTS
gradio

変更後のrequirements.txtを利用して、必要なモノを一気にインストールします。
実行するのは、次のコマンドです。

pip install -r requirements.txt

処理完了までは、そこそこ時間がかかります。
処理が完了したら、SadTalker GUIツールのインストールは終了です。

以上、SadTalker GUIツールのインストールを説明しました。
次は、SadTalker GUIツールの動作確認を説明します。

SadTalker GUIツールの動作確認

SadTalker GUIツールの動作確認を行います。
コンテンツルートに配置したapp.pyを実行すれば、SadTalker GUIツールを起動できます。

初回起動時は、ファイルのダウンロードが実施されます。
しばらく待つことになります。
処理が完了したら、コンソールに以下のように表示されます。

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じような画面を確認できます。

画像と音声が用意できるなら、それをアップロードしましょう。
とりあえず、動作を確認するならサンプルを利用します。

「japanese.wav」の行を選択します。
そうすると、画像や音声などが自動的に設定されます。

あとは、「Generate」ボタンを押すだけです。
処理が完了すると、顔部分で「crop」された動画が表示されます。

以上、SadTalker GUIツールの動作確認を説明しました。

タイトルとURLをコピーしました