Voice2Videoの動画生成AIまとめ

生成AI業界では多くのオープンソースプロジェクトが乱立しており、その全てを把握するのは困難です。特に、何を入力して、どんなデータが出力されるのか、1発で理解するのは難しいです。

本記事では、顔面の生成AI技術を活用したオープンソースプロジェクトを用途ごとに整理し、わかりやすく紹介します。

# 技術の分類

顔面の動画生成といえど、その種類は多く存在します

- **音声 + ベースの顔画像**: 入力画像で、音声に合わせてリップシンクや適度に顔を動かす。
- **顔や頭の動きがある動画 + ベースの顔画像**: 元動画の口元や顔の動きをトレースし、ベースの顔画像で動画を生成。
- **表情画像 + 基本顔画像 + オーディオ**: "表情画像"の表情を反映させ、音声に合わせてリップシンクや顔の動きを生成。
- **顔向きの調整**: 音声に合わせて顔の向きを調整する。


# 音声＋ベースの顔画像→動画

## Sadtalker

とりあえず、一枚の顔面画像とオーディオから動画を生成するなら、**Sadtalker**が一番おすすめです。

自分の手元で動かしたデモ動画

<iframe width="560" height="315" src="https://www.youtube.com/embed/NTn5dgIedg0?si=nzJKDihVCTP81xHZ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

口だけが動いており少々違和感がありますが、「どれだけ頭を動かすか」は設定で調整できます。ただ、大きく動かすとその分、破綻が目立つようになります。例えば、顔周辺以外の髪の毛などは、顔の動きに追従して動いてくれたりはしません。

また、一番右の映像no瞬きやポーズを抽出して、映像に反映することができます。
![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679785/bce35eab-1f9a-9486-c4f1-4a060175fa22.gif)

そのほかにも、どれだけ頭が回転するかを指定して、オーディエンスに話しかけるように首を回すような仕草をさせたり、3Dのフェイスマスクを出力したりできます。詳しくは、[公式リファレンス](https://github.com/OpenTalker/SadTalker/blob/main/docs/best_practice.md)を参照ください。

機能以外の最大の特徴としては、**Stable Diffusion Web UI**に組み込んで使うことができるという点です。[外部の解説記事](https://chmod774.com/sadtalker/)があるので、それを参考に導入してみてください。

### MacOSで動く、軽量版も

基本的に機械学習のモデルはMacOSのMPS（Metal Performance shaders、MacにおけるGPU）に最適化されていませんが、SadtalkerではMacOSのための軽量版も用意されています。

顔画像のレンダリングを[PIRender](https://github.com/RenYurui/PIRender)に置き換えることで、開発者によると、CPUの場合で1**0倍**、GPUを使えばさらに**60倍**早くなるとのことです。詳しくは[GithubのDisccussion](https://github.com/OpenTalker/SadTalker/discussions/457?sort=new)をご覧ください。もしかしたら、今後解説するかもしれません。

>[Githubリンク]( https://github.com/OpenTalker/SadTalker)

## One-shot talking face colab

自分の手元で動かしたデモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/BtqRfVwa22E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


公式デモ


<iframe width="560" height="315" src="https://www.youtube.com/embed/HHj-XCXXePY?si=RafWRGIRVGFWpBZ2&amp;start=4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

かなり自然な動画になっているのがわかると思います。

Sadtalkerよりも一見クオリティーは高いのですが、SadtalkerのようにWebUIもなく、またOpen Faceというライブラリーを用いる必要があるので、環境構築の難易度は高めです。自分はM1 Macbook上でどうしても動かしたかったので、自分でバイナリファイルのビルドを試みましたが、諦めました…~~（誰かビルドできたらください）~~

>[Githubリンク](https://github.com/camenduru/one-shot-talking-face-colab)

### StyleHeat

公式デモ
<iframe width="560" height="315" src="https://www.youtube.com/embed/hqsTu0IeuIE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


老けさせたり、幼くしたりできることが特徴です。
<iframe width="560" height="315" src="https://www.youtube.com/embed/PkxI8BPvUg8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

Sadtalkerの開発もとである[OpneTalker](https://github.com/OpenTalker)が制作しているので、Sadtalkerのコードをベースに作られています。

>[Githubリンク](https://github.com/OpenTalker/StyleHEAT)

## MakeItTalk

自分の手元で動かしたデモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/mjguVC52JZ0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

少し顔面の周辺が不自然に動く癖があります。顔の周辺の動きが気になりにくい、カートゥーンアニメーションなどには使えそうです。

1. 顔の輪郭やパーツの形(Landmark)を探知
2. Audioの特徴から口の形や顎のラインを予測
3. 同時に、Audioの特徴からスピーカーの顔の向きを予測
4. それらの顔のLandmarkと1枚の元画像を用いて、image2image

のような流れで動いているようです。

実装を改正つしている[参考サイト](http://cedro3.com/ai/makeittalk/)

>[Githubリンク](https://github.com/yzhou359/MakeItTalk)

## EmoGen

公式デモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/Puc-ueGa_VQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

顔面の動画＋音声＋感情（Anger, happinessなど6択から選択）→感情にそった動画を生成

ただ、クオリティーはイマイチで、口元がぼやけたりぷるぷる震えたりしてしまいます。

> [Githubリンク](https://github.com/sahilg06/EmoGen)

## GeneFace

公式デモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/CMeurbM5E20" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
こちらもやはり顔の動きが安定せず、少々不自然に見えます。

>[Githubリンク](https://github.com/yerfor/GeneFace)

# 動きのある動画＋ベースの顔画像→モーションをトレース

## Thin plate spline motion model


公式デモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/EV9-4yZj9H8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

一番左のジャッキーチェンの動画が元動画です。そこから頭のモーションや瞬き、リップシンクなどの情報を取り出し、ベースの顔画像に反映します。すると、まるでその人が喋っているかのような動画を生成することができます。


<iframe width="560" height="315" src="https://www.youtube.com/embed/sP9wxX9PwKI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



また、顔だけでなく、体全体のモーションもトレースすることが可能です。一番左が元となる動画です。

>[Githubリンク](https://github.com/yoyo-nb/Thin-Plate-Spline-Motion-Model)

## DaGAN

公式デモ

<iframe width="560" height="315" src="https://www.youtube.com/embed/CqTZlVs-Rvw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

一番左下の女性の顔が元動画です。一つ前のThin plate spline motion modelと比較しても、クオリティーは非常に高いです。

>[Githubリンク](https://github.com/harlanhong/CVPR2022-DaGAN)

## PIRender

公式デモ
<iframe width="560" height="315" src="https://www.youtube.com/embed/gDhcRcPI1JU?si=gLMUStzP9ZfezK3Z&amp;start=107" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

一番左が元画像、左から２番目がリファレンスの動画、一番右がこのモデルの出力結果です。ひと昔前のモデルなので、前にあげた二つよりも結果は劣るかもしれません。

このモデル特有の特徴としては、**顔の回転**や**表情の操作**などできるそうです。
![68747470733a2f2f72656e79757275692e6769746875622e696f2f504952656e6465725f7765622f696e747569746976655f666173742e676966.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679785/9012cc15-d237-fdbf-fa64-a5af86e121de.gif)

>[Githubリンク](https://github.com/RenYurui/PIRender)

# その他の代替技術

以上のようにトーキングヘッドのモデルを見てきましたが、動画生成でなくとも代替技術はあるので、そちらも紹介します。

## Talking Head Anime from a Single Image 3



1枚の絵からVtuberのように、リップシンクや瞬き、体の動きなどのモーションを作れるライブラリーです。Live2Dのようにパーツ分けをして、メッシュをかけて、モーションを作るという一切作業をせずに、気軽にVtuberになれます。

![Talking Head Anime from a Single Image 3](https://github.com/pkhungurn/talking-head-anime-3-demo/raw/main/docs/input_spec.png)

詳しい実装については、[こちらの解説サイト](https://vtuber-guide.net/talking-head-anime3)を参照してください。

>[Githubリンク](https://github.com/pkhungurn/talking-head-anime-3-demo)

## Nvidia Omniverse Audio 2 Face

Nvidiaは、Omniverseという名称で、主にゲームや3Dモデルアニメーションの効率的な制作を支援するフレームワークを提供しています。

その一つのソリューションとして、音声データを利用して、3Dアバターのリップシンクや顔の感情表現を自動生成する「**Audio2Face**」を提供しています。これによって、手動でキーフレームを打って表情を作成する必要なく、音声データだけでリップシンクと感情の表現を実現することが可能になります。

<iframe width="560" height="315" src="https://www.youtube.com/embed/h3xT_F_tEuU?si=3xRrC0K1BRww6FI_&amp;start=5" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

>[公式サイトリンク](https://www.nvidia.com/en-us/omniverse/apps/audio2face/)


:::note info
弊社Passinate Geniusでは一緒に働く仲間を募集しています！興味をお持ちいただける方は、[ホームページ](https://passionategenius.com/)まで！
:::

:::note info
役に立った場合は、励みになるのでいいねとコメントよろしくお願いします！
:::