SadTalker:任意の音声に合わせて口パクする動画を一枚絵から生成(Colab、Spaceあり)

入門/解説

1.SadTalker:任意の音声に合わせて口パクする動画を一枚絵から生成(Colab、Spaceあり)まとめ

・任意の音声に合わせて口パクする動画を一枚絵や動画から生成するAIであるSadTalkerが誰でも動かせる形で公開された
・SadTalkerはCVPR 2023で発表予定の最新AI技術でDocker、Colab、Spaceなど様々な形で動かす事ができる
・顔の認識に失敗すると動画ができないケースがあるがイラストなどでもかなり幅広く顔の認識はしてくれる

2.SadTalkerとは?

アイキャッチ画像は近未来型モーションキャプチャーでモーションを撮影している感じのアイキャッチ画像を作りたいんですよね、とchatGPT先生に相談して作成したプロンプトを元にカスタムStable Diffusion先生に作って貰ったイラスト。

任意の音声ファイルに合わせて一枚絵の口パク簡単に動画化して動かせる!

と聞いて、え、ほんと?と思ったのですが、まずは以下をご覧ください。

Stable Diffusionで作成したイラスト

SadTalkerで動画化(with 英語音声)

Stable Diffusionで作成したイラスト

SadTalkerで動画化(with 日本語音声)

Stable Diffusionで作成したイラスト

SadTalkerで動画化(横顔)

 

おっおー、凄いですね、ホントの動画と言われても信じてしまいそうなレベルです。現時点でも相当な水準ですが、これが出来るであれば、あれも出来そう、と様々な応用範囲を思いつきそうですね。

SadTalkerはCVPR 2023で発表予定の最新AI技術で、Docker(公式githubをご覧ください)、Colab+Gradio、Spaceなど様々な動かし方が発表されており、かなり気軽に動かす事ができるので、今後、インターネット上で大流行しそうです。

ただ、イラストの場合、顔の認識に失敗するケースがあるようで、以下の絵柄では動画の作成に失敗しました。チューニングすればどうにかなりそうではありますが、まだ深堀出来ていません。(顔と認識されるものが複数あるとダメ?)

SadTalkerのローカル環境での動かし方

基本、ほぼ公式の手順で動きます。かなりあっさり動いたので拍子抜けしたくらいです。

AUTOMATIC1111 stable-diffusion-webuiでの動かし方

Updateで、全身画像やAUTOMATIC1111の拡張機能として動作させる事ができるようになったそうです。

Extensionsタブ -> install from URL -> 「https://github.com/Winfredy/SadTalker」

でインストールできます。

linuxのconda環境でのSadTalkerのインストール

linuxのconda環境前提ですが、以下です。

git clone https://github.com/Winfredy/SadTalker.git
cd SadTalker/

conda create -n sadtalker python=3.8
conda activate sadtalker
conda install ffmpeg
pip install dlib-bin # [dlib-bin is much faster than dlib installation] conda install dlib

# 公式の手順と変えたのは以下だけです。
# pytorchのインストールは公式を見て自分の環境に合わせてインストールコマンドを確認した方が良いです
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

pip install -r requirements.txt
pip install git+https://github.com/TencentARC/GFPGAN

SadTalkerのセットアップ

一括ダウンロードコマンドも用意されているの以下で関連モデルを一括ダウンロードできます。全部で4Gくらいです。

bash ./scripts/download_models.sh

SadTalkerのサンプルスクリプト

これも公式サイトのサンプルでほぼそのまま動きます。「./sample/dummy1.wav」と「./sample/sample-1.png」は自分で用意するなり、examples配下にテスト用に使えるサンプルファイルが幾つかあるので.wavなどを用意するのが難しかったら適宜拝借しましょう。日本語の音声(examples/driven_audio/japanese.wav)もあったので本投稿でも拝借しています。

python inference.py --driven_audio ./sample/dummy1.wav \
--source_image ./sample/sample-1.png \
--batch_size 2 \
--expression_scale 1.0 \
--result_dir ./result1 \
--still \
--preprocess crop \
--enhancer gfpgan

成功すると–result_dirで指定したフォルダ以下に日付時刻名フォルダができ、その下に動画ファイルができます。

前述した通り、アニメ系イラストの場合、顔の認識に失敗するケースがあるようですが、その場合は以下のエラーが出ました。

x_full_frames, crop, quad = self.croper.crop(x_full_frames, xsize=pic_size)
TypeError: cannot unpack non-iterable NoneType object

このエラーの場合、最初のフレームの特定に失敗するためか、
–result_dir/YYYY_MM_DD.hh.mm.ss/first_frame_dir
に何もファイルが出来きませんでした。

ColabやSpaceもあり、シンプルなインタフェースで非常に強力なので、今後はこれを使ったエイプリルフールネタなどが激増しそうだな、と思います。

試してみたいと思ったは関連リンクよりhuggingface、またはColabをお試しください。

3.SadTalker:任意の音声に合わせて口パクする動画を一枚絵から生成(Colab、Spaceあり)関連リンク

1)arxiv.org
SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation

2)github.com
Winfredy / SadTalker

3)huggingface.co
vinthony/SadTalker (気軽に試してみたい方はこちら)

4)colab.research.google.com
SadTalker:quick_demo.ipynb (Colabに慣れている方はこちら)

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