見出し画像

一枚の立ち絵イラストでVTuberに! Talking Head Anime 3 SW

アプリケーション説明

1枚のイラスト(上半身)を読み込ませて、モーションキャプチャをもとに表情を動かすことのできるソフトウェアをリリースしました。
Windows用のアプリケーションをこちらからダウンロードできます。

無料版とPlusとの違いは、PlusではNDIあるいはSpout2経由での背景透過出力が可能なことと個人での商用利用が可能としていることです。
(無料版は個人での使用かつ非営利・非商用限定です。)

詳細な使い方のドキュメントは整備していませんが、簡易な説明として同梱のREADMEの内容を以下に記載します。
(同梱のREADMEはmarkdown形式です。)
不明点などありましたら、コメントやリプライにてお寄せください。参考とさせていただきます。
→X(Twitter) あわいろ(@pale_color)https://x.com/pale_color

README - Talking Head Anime 3 SW

利用規約

1.本ソフトウェアは、個人かつ非営利・非商用の用途にのみお使いいただけます。

2.再配布は禁止とします。ただし、dataフォルダの中のファイルについては除きます(当該フォルダ内のライセンス表記に従ってください)。

3.使用する際は可能な限り下記の記載をお願いします。また、必要に応じて後述の権利表記の内容もご確認ください。

Talking Head Anime 3 SW
Copyright (c) 2023 pale_color

又は

Talking Head Anime from A Single Image 3 with Switchable Images
Copyright (c) 2023 pale_color

4.本ソフトウェアは現状のままで提供され、開発者はいかなる保証もしません。また、本ソフトウェアを利用したことによって生じる問題について、開発者は一切の責任を負わないものとします。

更新履歴・主な機能追加

ver20240610

  • 設定の自動保存に対応

  • モーションデータの受信状態を表示するインジケータを追加

  • iPhone/Android用のフェイストラッキングアプリであるVTube Studioに対応

  • VMC Protocol 対応を拡充

初期バージョン

  • Android用のフェイストラッキングアプリであるMeowFaceに対応

  • VMC Protocol 経由での動作に対応

  • PCでのトラッキングソフトウェアである、iFacialMocap Powered by NVIDIA BroadcastExpressionAppBridge等に対応

  • 正面向きの補正に対応(スマートフォンを顔の真正面に置く必要がなくなります)

  • 複数の画像の読み込み、切り替えに対応(表情差分などに活用いただけます)

  • GPUでの推論処理のスレッドを分離(若干ですがFPS向上が期待されます)

  • アニメーション間隔を指定するコマンドラインオプションを追加(フレームレートを制限してGPUの占有を避けることができます)

  • モーションデータを受信するポート番号の指定に対応

本ソフトウェアについて

これは、Pramook Khungurn氏の開発された「Talking Head(?) Anime from A Single Image 3: Now the Body Too」およびそのデモコード実装である「talking-head-anime-3-demo」(https://github.com/pkhungurn/talking-head-anime-3-demo) の派生として作られたソフトウェアプログラムです。

より配信等に活用しやすくなるよう、主にUI周りに変更を施しています。

無料版の Talking Head Anime 3 SW のソースコード(Launcherを除く)については、「Talking Head Anime 3 with Switchable Images」(https://gitlab.com/pale_color/talking-head-anime-3-with-switchable-images)にて公開しています。

動作環境

実用的な速度での動作には、CUDAの利用できるGPU(RTX2000番台以降を推奨)が必要です。CPUのみの環境でも動作自体は可能ですが、非常に低速(おそらく1FPS未満)です。
その場合は、差分の事前レンダリングの項の機能の利用をご検討ください。

また、フェイストラッキングを使用するには以下のいずれかが必要です。

*1 受信ポートの設定に留意してください。次のパラメータに対応しています。VSeeFaceTracking WorldXR Animatorにて動作確認しています。

# ボーン(頭部の向き、視線の向き)
/VMC/Ext/Bone/Pos "Head"
/VMC/Ext/Bone/Pos "RightEye"
/VMC/Ext/Bone/Pos "LeftEye"

# ブレンドシェイプ(表情)
# VRM0系
/VMC/Ext/Blend/Val "Fun"
/VMC/Ext/Blend/Val "Surprised"
/VMC/Ext/Blend/Val "A"
/VMC/Ext/Blend/Val "I"
/VMC/Ext/Blend/Val "U"
/VMC/Ext/Blend/Val "E"
/VMC/Ext/Blend/Val "O"
/VMC/Ext/Blend/Val "Blink"
/VMC/Ext/Blend/Val "Blink_L"
/VMC/Ext/Blend/Val "Blink_R"
# VRM1系
/VMC/Ext/Blend/Val "relaxed"
/VMC/Ext/Blend/Val "surprised"
/VMC/Ext/Blend/Val "aa"
/VMC/Ext/Blend/Val "ih"
/VMC/Ext/Blend/Val "ou"
/VMC/Ext/Blend/Val "ee"
/VMC/Ext/Blend/Val "oh"
/VMC/Ext/Blend/Val "blink"
/VMC/Ext/Blend/Val "blinkleft"
/VMC/Ext/Blend/Val "blinkright"

*2 受信ポートの設定に留意してください。ARKitで使われる52種のブレンドシェイプ名に対応しています。Puppetstringにて動作確認しています。

*3 いずれも、「Motion Capture Method」メニューでは「iFacialMocap (PC)」を選択します。

クイックスタート

  • 次のアプリケーションを起動してください。各アプリケーションをオプション指定の上で起動できるランチャーになります。

launcher.exe

設定項目は次の通りです。

``Select Model`` 使用する機械学習モデルを指定するオプションです。モデルは4種類が用意されており、``standard_float``, ``separable_float``, ``standard_half``, ``separable_half``が指定できます。いずれも機能はほぼ同じですが、サイズ、RAM使用量、動作速度、負荷、精度などが異なります。試行の上で適したものを使用してください。コマンドラインオプションでは``--model``に相当し、ランチャーを経由せずに起動する際に指定しない場合のデフォルトは``standard_float``です。

``Animation [ms]`` アニメーションの間隔を指定するオプションです。値はミリ秒(ms)単位で、5~2000の範囲の整数で指定します。5未満、または2000を超える値を指定した場合はこの範囲に丸められます。コマンドラインオプションでは``--timer``に相当し、ランチャーを経由せずに起動する際に指定しない場合のデフォルトは``20``です。

``Network Port`` モーションキャプチャデータの受信を待機するポート番号です。ポート番号については、iFacialMocap、MeowFace、その他iFacialMocap形式の出力を行うソフトウェアでは``49983``が、VTube Studioでは``11125``が、VMC Protocol形式の出力を行うソフトウェアでは``39539``または``39540``が基本となりますので、使うソフトウェアあるいはアプリによって適切な値を設定するようにしてください。コマンドラインオプションでは``--port``に相当し、ランチャーを経由せずに起動する際に指定しない場合のデフォルトは``49983``です。

``Preserve Settings`` このチェックボックスをONにすると、上記の起動オプションと、ソフトウェアの設定を自動で``tha3sw_config.json``ファイルに保存し、次回起動時に自動で再読み込みします(手動調整、差分の作成は除く)。なおこのオプションの設定自体は``tha3sw_config.json``の``save_config``に保存されます(値は``true``または``false``)。

機能説明 (512px Version)

読み込むイラストは512pixel×512pixelに対応しています。背景はあらかじめ切り抜いて透過させておく必要があります。

(手動調整)

manual_poser.exe --model standard_float

``--model``オプションの使用が可能です。

(モーションキャプチャ)

ifacialmocap_puppeteer.exe --model standard_float --timer 20 --port 49983

``--model``、``--timer``、``--port``の各オプションの使用が可能です

各オプションについては、ランチャー経由で起動する際には自動でオプションが付加されます。また、設定の保存が有効になっている際(``tha3sw_config.json``の``save_config``が``true``である場合)、モーションキャプチャ用では終了時に設定を同jsonファイル内に自動保存し、次回起動時に読み込みます。ウィンドウ内での設定項目のほか、上記コマンドラインオプションも記憶され、次回起動時にオプションを指定しなかった場合には保存された設定値が読み込まれます。

  • 操作説明

iFacialMocap、MeowFace、あるいはVTube Studioと接続する際には、スマートフォンのIPアドレスを入力した上で「START CAPTURE」を押してください。

その他のソフトウェアと接続する場合は、送信元のソフトウェアでIPアドレスを適切に設定してください。

「START CAPTURE」ボタンの右側に、「Status」として接続状態が表示されます。状態は ○ 部分の色で次の通り表されます。

  • 灰色  接続なし・受信データなし

  • 黄色  接続あり・受信データエラー

  • 緑色  接続あり・受信データ正常

灰色の場合はネットワークの設定、起動時のポート指定、ファイアウォールの設定等をご確認ください。
黄色の場合、あるいは緑色だが表情が変わらない場合は``Motion Capture Method``の選択が適切かご確認ください。

実験的機能 (1024px Version)

1024pixel×1024pixelの大きさの画像の入出力が可能なプログラムを起動できます(``--model``、``--timer``、``--port``の各オプションの使用も可能です)。

(手動調整)

manual_poser_1024.exe


(モーションキャプチャ)

ifacialmocap_puppeteer_1024.exe
  • 内部では、入力画像を間引くような形で4分割し、推論した出力画像を組み合わせる、といった処理を行っています。そのため、出力にずれやノイズが生じます。

  • 分割、合成の仕方が異なる4種類の手法を選択できます。

0.もっともシャープだが網状のノイズが出やすい
1.中間的(ややシャープ寄り)
2.中間的(ややソフト寄り)
3.ノイズは目立たないがややぼけが生じる

  • 実行にはフルHD以上の解像度を持つディスプレイが必要です。なお、入力画像は512pixel×512pixelにリサイズして表示されます。

  • 高負荷なため、特にフェイストラッキング用の``ifacialmocap_puppeteer_1024.exe``の場合、ハイエンドのGPUを推奨します。

実験的機能・差分の事前レンダリング (512px Pre-rendering Version)

表情差分を事前にレンダリングして作成する方式により、GPUに依存せずに実行可能なものになります。

(差分の作成)

prerendering_creator.exe

``--model``オプションが使用可能です。ただし、CUDA対応のGPUが利用できない環境では``standard_half``, ``separable_half``は正常に動作しないため指定しないでください。

``prerendering_creator.exe``を起動して「Load Image」ボタンを押して画像ファイルを読み込むと、その画像ファイルのあるディレクトリ下に``(拡張子を除いた画像ファイル名)_tha``というディレクトリが作成され、その中に差分が作成されます。100MB強の空き容量が必要です。なお、ファイルを移動させる際は元の画像ファイルと作成されたディレクトリを必ず一緒に移動するようにしてください。

ウィンドウ右下のメッセージに「Prerendering finished.」と表示されたら差分のレンダリングは終了です。すべての差分の作成には、CUDAが有効な環境の場合は数分程度、CPUのみ有効な環境では数十分程度かかります。途中で終了させた場合、再度同じ画像ファイルを指定して読み込むことで続きから差分の作成を行うことができます。

(モーションキャプチャ)

mocap_puppeteer_prerendering.exe

``--timer``、``--port``オプションが使用可能です。``--model``オプションは使用できません。

``mocap_puppeteer_prerendering.exe``を起動して、「Load Image」ボタンを押して差分作成の際の元となった画像ファイルを選択してください。自動的に差分を含めて読み込みが行われます。その他のUIは操作説明の項とほぼ共通です。ただし、「Iris Size」の変更には対応していないため、スライドバーは無効化されています。

権利表記

  • 本ソフトウェアはMITライセンスでリリースされた「talking-head-anime-3-demo」(https://github.com/pkhungurn/talking-head-anime-3-demo)を使用しています。

  • data/modelsフォルダ内の学習済みモデルは、クリエイティブコモンズ 表示 4.0 国際 (CC BY 4.0) ライセンスのもとでリリースされています。

Copyright (c) 2022 Pramook Khungurn

この記事が気に入ったらサポートをしてみませんか?