見出し画像

Diff Motion APIでAIキャラの感情をもとに表情変化させてみよう!

今回はPNGTuberツール「Diff Motion」のAPIを使ってAIキャラの感情をもとに表情変化までの方法を解説していきます!

こちらのAPIを活用すればAIが回答するタイミングで、感情に合わせた表情だったりポーズなどのビジュアルに切り替えることが可能です。
AIキャラやAIVtuber開発などの参考になれば嬉しく思います!

※本記事の最終更新:2026/2/14


Diff Motion APIで出来ること

まずはDiff Motion APIでどんなことができるか紹介します!
本ソフトDiff Motionを立ち上げている間は、ローカル環境で動作するAPI(REST API)を使うことが可能です。

Diff Motion起動中にhttp://localhost:37264/docs にアクセスすると参照できるAPIドキュメントも用意しています。


プリセット一覧の取得(GET /presets)

まず、Diff Motionで登録されているプリセットの取得です。

  • 起動しているウインドウ

  • それぞれのプリセット

を取得することができます。

プリセット取得コードサンプル:https://github.com/yuki-dev26/diff-motion-api-playground/blob/main/misc/get_presets.py

こちらを実行すると現在起動しているDiff Motionのプリセット一覧が取得できます。

--- プリセット一覧 ---

[Window 1]
  - Name: シロハナちゃん通常 (ID: preset-1770141167922-0-0xxec9d)
  - Name: シロハナちゃん嬉しい (ID: preset-1770141167922-2-sw3xcco)

[Window 2]
  - Name: yuki-P通常 (ID: preset-1770142856747)
  - Name: yuki-P嬉しい (ID: preset-1770143085552)

この例はDiff Motionを2ウィンドウで起動しており、それぞれにyuki-Pとシロハナちゃんの通常と嬉しいの差分をプリセット登録しています。


プリセット切り替え(POST /preset/switch)

プリセットをAPIで切り替えることが可能です。
これを活用することで、AIキャラの感情に合わせて自動で表情(ポーズ等)を自動切り替えをすることが出来るわけですね。

プリセット切り替えコードサンプル:https://github.com/yuki-dev26/diff-motion-api-playground/blob/main/misc/switch_presets.py

こちらを実行して、Diff Motionに登録してあるプリセット名を入力することでそのプリセットに切り替わる処理の流れになります。

--- プリセット切り替え ---
切り替え先のプリセット名を入力してください: シロハナちゃん嬉しい

リクエストを送信中...: http://localhost:37264/preset/switch
メッセージ: ウィンドウ 1 のプリセットを "シロハナちゃん嬉しい" に切り替えました

上記ではシロハナちゃんの通常プリセットからAPIで嬉しいプリセットに切り替わったことが確認できました。


感情分析と表情切り替え

ビジュアル側の切り替えのイメージは出来たかと思うので、どのようにしてAIキャラ側で感情を判断して、該当プリセットに切り替えるのかを解説していきます!(今回はシンプルな手法であくまで一例です)

AIキャラクターの表情制御システム「Diff Motion」の仕組みを説明する図解画像。
左上には「プリセット(差分)設定」画面があり、キャラクターの立ち絵と感情リスト(通常、嬉しい、照れなど)が表示されている。右上にはAIへの指示として「[[感情名]]という形式で回答に感情タグを付与すること(例:回答~~~[[嬉しい]])」と記されている。
中央の矢印を辿ると、AIの回答に含まれる「[[嬉しい]]」タグとプリセットが一致することで、左下のキャラクターが「笑顔の差分」に切り替わる仕組みが示されている。右下には実際のチャットUIでの動作例が配置されている。
  1. ビジュアル側(Diff Motion等)で差分をセットする

  2. システムプロンプト等でAIに感情タグを都度付与するように指示を入れる(例:[[感情名]])

  3. AIキャラが回答時に感情タグを都度判断して回答に付与

  4. そのタグを検知して一致する差分に切り替えるようにする

こんな感じのフローでAIキャラの感情をもとにビジュアルの差分(Diff Motionならプリセット)を切り替えることができるわけですね。

Diff Motionに限らず、VTubeStudioなどでも同様に差分切り替えができるロジックなので色々応用は出来ると思います。


Diff Motion API Playground

https://github.com/yuki-dev26/diff-motion-api-playground

先ほどの表情切り替えの処理をすぐに試せるDiff Motion API Playgroundを用意しましたので、より実践的にイメージを掴みたい方はこちらをお試しください!

OpenAI APIとDiff Motion APIをもとに、AIとのチャットを感情タグ付きで返すのでDiff Motionプリセット切り替えが動的に行われます。

環境構築や使い方などの詳細はREADMEを参照して頂けると幸いです。


さいごに

今回はDiff Motion APIについて紹介と、関連するAIキャラの表情切り替えの簡単な仕組み解説をしてみました!

Diff Motionでの活用はもちろん、他ツールや別用途でも応用できる仕組みだと思うので参考になったら幸いです。
感情タグの検知・出力等に関してはStructured Outputsで構造化して認識するなど、今回紹介したやり方の他にも色々あるので試行錯誤してみると面白いかと思います。

また、配信パートナーAIシステムにおいてもDiff Motionとの連携を実現しており、同期ボタン1つでAIキャラが感情に応じた表情切り替えを実現しています。(Diff MotionはSpout2出力に対応しているので配信にも有用です)

上記システムに限らず、ご自身のAIVtuberツールなどにも開発者はDiff Motion APIを連携してもらって問題ないです。

本記事を参考に是非お試しと検討を!
以上、それでは👋

いいなと思ったら応援しよう!