cedro-blog

FaceTalkで、音声から顔の3Dアニメーションを作成する

1.はじめに

 以前からこのブログでは、音声から顔画像を動かす技術(Live Speech PortraitsMakeitTalk)をご紹介して来ましたが、それらはいずれも出力が2次元でした。今回ご紹介するのは、音声から顔の3Dアニメーションを作成するFaceTalkという技術です。

2.FaceTalkとは?

 下記がシステムの概要です。まず、顔の3Dメッシュ・テンプレート(template mesh)をエンコードして特徴量に変換し、それをデコードしてアニメーションした顔の3Dメッシュ(animated mesh) に復元するU -Netを用意します。

 そして、音声(Speech signal)と顔の3Dキャプチャ信号(expression signal)をそれぞれエンコードしたものを融合し、カテゴリの潜在的な表現空間(Categorical latent space)にマッピングして、U -Netの特徴量に作用させます。

 それでは、早速コードを動かしてみましょう。

3.コード

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

 まず、セットアップを行います。pytorch3dのインストールはpipでは上手く行かず、Building wheelsで行う必要がありセットアップに20分位かかりますので、しばらくお待ちください。

 animete_face.py で音声からFaceMash動画を作成します。audioに、audioフォルダにある音声ファイル(wav)のどれを使用するか記入します。自分の用意した音声を使用する場合は事前にaudioフォルダにアップロードしておいて下さい。

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

https://cedro3.com/wp-content/uploads/2022/01/mix.mp4

 作成した動画をダウンロードする場合は、下記を実行します。

 では、また。

(オリジナルgithub)https://github.com/facebookresearch/meshtalk