cedro-blog

SadTalkerを使って、音声で顔画像を動かす

1.はじめに

 最近、D-IDという音声で顔画像を自然に動かすWebサービスが大流行りです。そんな中、今回ご紹介するのは、それと同様な機能を持つSadTalkerというオープンソース技術(CVPR 2023で発表予定)です。

*この論文は、2023.3に提出されました。

2.SadTalkerとは?

 下記は、SadTalkerのパイプライン(Pipeline)です。まず、顔画像(Single Input Image)から3Dの顔画像を再構築(Monocular 3D Face Recon.)し、表情係数(Expression Coefficients)と頭のポーズ係数(Head Pose Coefficients)を抽出します。

 次に、音声(Input Audio)から頭のポーズを学習するネットワーク(PoseVAE)と表情を学習するネットワーク(ExpNet)を用いて、これらの係数がどう変化するのかを求めます。

 最後に、係数を元に3D対応の顔のレンダリング(3D-Aware Face Render)で合成されフレーム(Generated Frames)を生成します。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。

 まず、セットアップを行い、モデルをダウンロードします。

 

 まず、顔画像と音声を指定して、音声で顔だけを動かしてみましょう。顔画像は、examples/source_imageの中から選んでimageに記入します。音声は、examples/driven_audioの中から選んでaudioに記入します。

 自分で用意した顔画像や音声を使いたい場合は、examples/source_imageexamples/driven_audioにアップロードして下さい。なお、作成した動画は、resultsにタイムスタンプ付きで保存されます。

 作成した動画を再生します。

https://cedro3.com/wp-content/uploads/2023/06/2023_06_07_01.43.14.mp4

 音声で顔だけを動かす場合は、頭の動きもあり割と自然に動かせます。

 次に、顔画像と音声を指定して、音声でポートレイトを動かしてみましょう。顔画像は、examples/source_imageの中から選んでimageに記入します。音声は、examples/driven_audioの中から選んでaudioに記入します。

 自分で用意した顔画像や音声を使いたい場合は、examples/source_imageexamples/driven_audioにアップロードして下さい。なお、作成した動画は、resultsにタイムスタンプ付きで保存されます。

 作成した動画を再生します。

https://cedro3.com/wp-content/uploads/2023/06/2023_06_07_01.45.57.mp4

音声でポートレイトを動かす場合は、頭の動きは比較的小さくなります。

(オリジナルgithub)https://github.com/OpenTalker/SadTalker

(Youtube投稿)

 SadTalkerを使った動画例です。楽曲からの音声抽出にはDemucs、画像生成にはDream Boothを使っています。