SadTalker on Ubuntu — 音声から口パク動画を自動生成するAIツール

AI/MLツール

SadTalker は、1枚の顔写真と音声ファイルを渡すだけで、口パクしながら話しているような動画を自動生成する AI ツールです。CVPR 2023 で発表された研究で、Gradio ベースの WebUI も付属しているのでコマンド操作が苦手でも試しやすいのが特徴です。この記事では Ubuntu 22.04 LTS 環境への実際のセットアップ手順と、インストール時に出くわしがちな互換性エラーの対処法を紹介します。

この記事のポイント

  • SadTalker はローカル GPU があれば無料で動く口パク動画生成 AI
  • Ubuntu 22.04 LTS / Python 3.10 / PyTorch(CUDA または CPU)で動作確認
  • torchvision の新しいバージョンと basicsr の間で互換性エラーが出るので対処法を紹介
  • モデルダウンロードは scripts/download_models.sh で実行(256モデル84MB・512モデル338MB・GFPGANv1.4 336MB)

目次

  1. SadTalker とは何か
  2. 動作要件と確認済み環境
  3. システム依存パッケージのインストール
  4. リポジトリのクローンと Python 依存パッケージ
  5. モデルファイルのダウンロード
  6. Gradio WebUI の起動と使い方
  7. CLI(コマンドライン)での実行
  8. よくあるエラーと解決策
  9. まとめ

SadTalker とは何か

SadTalker(Stylized Audio-Driven Talking Face)は、中国科学技術大学のチームが CVPR 2023 に発表したオープンソースのモデルです。顔写真 1 枚と WAV/MP3 の音声ファイルを入力すると、音声に合わせて口や頭が動く MP4 動画を生成します。

使い道として多いのは、自分の顔写真を読み込んでナレーション動画を作ったり、キャラクター画像に台詞を読ませたりするケースです。GPU がなくても CPU モードで動きますが、生成速度は GPU の有無で大きく変わります。

SadTalker Gradio WebUI メイン画面(UI 再現)
SadTalker Gradio WebUI メイン画面(UI 再現)

動作要件と確認済み環境

私が確認した環境は Ubuntu 22.04.5 LTS / Python 3.10.12 / PyTorch 2.5.1+cu118 です。公式の requirements.txt に記載されている主な依存パッケージは以下のとおりです。

SadTalker Pythonパッケージ依存関係
SadTalker Pythonパッケージ依存関係

PyTorch は requirements.txt に含まれておらず、CUDA バージョンに合わせて別途インストールする必要があります。GPU なしで動かす場合は CPU 用の torch を使います。

注意:torchvision のバージョン

torchvision 0.14 以降で内部 API(functional_tensor モジュール)が削除されたため、basicsr との組み合わせでエラーが出ます。後述のトラブルシューティングを参照してください。

手順1:システム依存パッケージのインストール

まず Ubuntu に必要なシステムパッケージを入れます。ffmpeg は動画の変換に、libgl1-mesa-glx は OpenCV が内部で使います。




ubuntu@linuxlab: ~
$ sudo apt-get update
$ sudo apt-get install -y python3 python3-pip git \
ffmpeg libgl1-mesa-glx libglib2.0-0 wget unzip
Reading package lists… Done
Setting up ffmpeg (7:4.4.2-0ubuntu0.22.04.1) …
Setting up libgl1-mesa-glx:amd64 …
Processing triggers for libc-bin …
$ python3 –version
Python 3.10.12

正直、libgl1-mesa-glx を入れ忘れると OpenCV のインポート時に謎のエラーが出るので注意が必要です。

手順2:リポジトリのクローンと Python 依存パッケージ

①リポジトリをクローンする




ubuntu@linuxlab: ~
$ git clone –depth=1 https://github.com/OpenTalker/SadTalker.git
Cloning into ‘SadTalker’…
remote: Enumerating objects: 182, done.
Receiving objects: 100% (182/182), 1.21 MiB | 4.52 MiB/s, done.
$ cd SadTalker
$ ls
app_sadtalker.py inference.py launcher.py requirements.txt
scripts/ src/ webui.sh …

--depth=1 を付けると git の履歴を省いて取得するので、ダウンロードが早く終わります。

②PyTorch をインストールする

PyTorch は CUDA バージョンに合わせて公式コマンドを選びます。CUDA 11.8 環境の場合は次のとおりです。




ubuntu@linuxlab: ~/SadTalker
# GPU 環境(CUDA 11.8)
$ pip3 install torch torchvision torchaudio \
–index-url https://download.pytorch.org/whl/cu118
# CPU のみ(GPU なし環境)
$ pip3 install torch torchvision torchaudio \
–index-url https://download.pytorch.org/whl/cpu

③その他の依存パッケージをインストールする

SadTalkerセットアップ手順
SadTalkerセットアップ手順



ubuntu@linuxlab: ~/SadTalker
$ pip3 install -r requirements.txt
Requirement already satisfied: numpy (1.26.4)
Collecting face_alignment==1.3.5
Collecting gradio

Successfully installed face_alignment-1.5.0 gradio-6.19.0
imageio-2.19.3 scipy-1.15.3 pydub-0.25.1 …

私が確認した時点では pip3 が新しいバージョンを解決して face_alignment 1.5.0 をインストールしました(requirements.txt 指定は 1.3.5 ですが動作します)。

手順3:モデルファイルのダウンロード

SadTalker は学習済みモデルを GitHub Releases から別途ダウンロードする必要があります。リポジトリ内のスクリプトを実行するだけで完了します。

モデルファイルダウンロード手順
モデルファイルダウンロード手順



ubuntu@linuxlab: ~/SadTalker
$ bash scripts/download_models.sh
mkdir ./checkpoints
Saving to: ‘./checkpoints/SadTalker_V0.0.2_256.safetensors’
84.0M ████████████████████ 100% 2.31 MB/s 0:00:36
Saving to: ‘./checkpoints/SadTalker_V0.0.2_512.safetensors’
338M ████████████████████ 100% 2.28 MB/s 0:02:28

$ ls checkpoints/
mapping_00109-model.pth.tar SadTalker_V0.0.2_256.safetensors
mapping_00229-model.pth.tar SadTalker_V0.0.2_512.safetensors

download_models.sh に記載されているファイルサイズは、256 モデルが 84 MB、512 モデルが 338 MB、GFPGANv1.4.pth が 336 MB です(スクリプト記載値)。ダウンロードにかかる時間はネットワーク環境によって大きく異なります。

手順4:Gradio WebUI の起動と使い方

モデルのダウンロードが終わったら、Gradio ベースの WebUI を起動します。ブラウザで操作できるので、コマンドが苦手な人にも使いやすい方法です。




ubuntu@linuxlab: ~/SadTalker
$ python3 app_sadtalker.py
Running on local URL: http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.

ブラウザで http://127.0.0.1:7860 を開くと次のような UI が表示されます。

SadTalker Gradio WebUI メイン画面
SadTalker Gradio WebUI メイン画面

使い方は単純です。左側に顔写真をアップロードし、音声ファイル(WAV/MP3)をセットして「Generate」ボタンを押すだけです。

①設定パネルの使い方

SadTalker 設定パネル
SadTalker 設定パネル

設定パネルの主な項目を説明します。

設定項目 デフォルト 説明
Pose style 0 頭の動き方(0〜46)。数値を変えると動きのスタイルが変わる
face model resolution 256 256 は高速、512 は高品質。GPU メモリに余裕があれば 512 推奨
preprocess crop 顔の前処理方法。crop(顔を切り出し)が通常モード
Still Mode OFF 頭の動きを抑えたいとき ON にする。full モードと組み合わせて使う
GFPGAN as Face enhancer OFF 顔の品質向上フィルター。ON にすると処理時間が増えるが画質が上がる

CLI(コマンドライン)での実行

WebUI なしでコマンドラインから直接実行することもできます。バッチ処理や自動化に向いています。




ubuntu@linuxlab: ~/SadTalker
$ python3 inference.py \
–driven_audio examples/driven_audio/japanese.wav \
–source_image examples/source_image/front.png \
–result_dir ./results \
–preprocess crop \
–size 256
SadTalker Audio2Coeff…
SadTalker FaceRenderer…
Video generated at: results/xxxxxx/front_japanese.mp4

--size を 512 にすると出力解像度が上がりますが、GPU メモリが多く必要です(RTX 3060 以上推奨)。CPU モードで動かす場合は --still フラグを付けると頭の揺れを抑えて処理が軽くなります。

よくあるエラーと解決策

①torchvision の互換性エラー

SadTalker セットアップで最もよく遭遇するのがこのエラーです。私の環境(torchvision 0.20.1)でも実際に発生しました。

torchvision互換性エラー(実測)
torchvision互換性エラー(実測)



ubuntu@linuxlab: ~/SadTalker
ModuleNotFoundError: No module named
‘torchvision.transforms.functional_tensor’

原因は basicsr 1.4.2 が torchvision 0.14 以前の内部 API(functional_tensor モジュール)を使っているためです。torchvision 0.14 以降でこのモジュールが削除されました。

対処法は 2 つあります。

対処法A:basicsr のパッチ版をインストールする(推奨)

pip3 install "basicsr>=1.4.2" --upgrade または、torchvision の削除されたコードを手動でパッチする方法があります。GitHub Issue にパッチが公開されています。

対処法B:torchvision を 0.13.x にダウングレードする

pip3 install "torchvision==0.13.1" で旧バージョンに戻す方法です。ただし PyTorch のバージョンと揃える必要があり、CUDA 対応環境では他への影響が出る場合があります。

②No face is detected エラー

入力画像に顔が検出されない場合は次のようなエラーが出ます。




ubuntu@linuxlab: ~/SadTalker
AttributeError: No face is detected

解決策:顔が画像の中央付近にあり、正面向きで十分な解像度(最低 256×256 ピクセル以上)の写真を使ってください。横顔や遠距離の顔写真では検出が失敗しやすいです。

③メモリ不足(CUDA out of memory)

--size 512--enhancer gfpgan を使うと GPU メモリを多く消費します。4 GB 以下の GPU では OOM になりやすいです。




ubuntu@linuxlab: ~/SadTalker
RuntimeError: CUDA out of memory
# –size 256 に下げて試す
$ python3 inference.py –size 256 –source_image face.png …

まとめ

SadTalker は Ubuntu 上で比較的簡単にセットアップできます。躓きやすいのは torchvision の互換性エラーとモデルダウンロードの時間だけで、手順どおりに進めれば動画生成まで辿り着けます。

  • Ubuntu 22.04 + Python 3.10 で動作確認済み
  • GPU があれば 10〜20 秒で生成、CPU のみなら数分かかる
  • torchvision 0.14 以降 + basicsr 1.4.2 の組み合わせは要注意
  • Gradio WebUI から操作するのが一番かんたん
著者アイコン
著者アイコン

SadTalker のモデルは積極的にメンテナンスされていないため、依存パッケージのバージョン問題は今後も出やすいです。GPU 環境を持っているならクラウド GPU(RunPod 等)で動かすほうが環境の汚れがなくておすすめです。

VPS でも動かせますが、GPU 付きインスタンスが必要です。Vultr や DigitalOcean の GPU プランを比較してみてください。

関連記事:Ubuntu に Docker をインストールする

コメント

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