自作パペット(アバター)を作ってみました〜改良前〜脱Adobeを目指して!

今回は、これからの動画作成で活躍してくれる**「新しく作った自作のパペット(アバター)」**について紹介したいと思います。
これまで私の動画には、画面の左下に「Adobe Dr. Apple Smith」というキャラクターが頻繁に登場していました。顔の向きに合わせて首が動き、目や口もスムーズに動く非常に素晴らしいパペットだったのですが……実はそろそろ、彼から「卒業」をしたいと思います。

動画をご覧ください。

動画はまだ準備中です。

自作パペット_py.pub.txt
要約:
このシステムは、顔認識と音声入力を利用してリアルタイムで動作するデスクトップパペットを実現します。
run_ui.pyは、パペットの各種設定を行うGUIアプリケーションです。キャラクターの新規作成、複製、選択、そしてボリューム閾値、グローバルスケール、顔の傾き制限、目の感度、カメラ/マイクIDといったパラメータ調整機能を提供します。これらの設定はキャラクターごとにJSONファイルとして保存されます。
run_puppet.pyは、UIで選択・設定されたキャラクターとパラメータに基づき、実際のパペット動作を制御するスクリプトです。OpenCVとMediaPipe Face Meshを用いてカメラ映像から顔の傾き、目の動き、口の形を検出し、マイクからの音声ボリュームと連携させてアバターの頭の回転、視線、口の動きをリアルタイムで再現します。キャリブレーションデータもキャラクターごとに保存されます。
Automatorスクリプトは、これらのPythonスクリプトの実行を補助します。「自作パペット起動.app」は設定UIを立ち上げ、「パペット書き出し起動.app」はPixelmator Proで開いているドキュメントの各レイヤーをPNG画像として書き出し、キャラクターごとの設定JSONを自動生成した後、該当するパペットを起動する一連の処理を行います。これにより、Pixelmator Proでの画像編集からパペット起動までがスムーズに連携されます。
公開スクリプトに関するお問い合わせは以下へ↓

なぜパペットを自作しようと思ったのか?

最大の理由は**「コスト」**です。
Adobeの素晴らしいパペットを使うためには、当然ながらAdobeのサブスクリプションに加入する必要があります。一番安いプランの組み合わせでも、月額1,200円ほどかかってしまいます。
「このキャラクターを使うためだけに、毎月課金し続けるのはどうなんだろう?」と悩んでいました。今は生成AI(画像生成AIやテキスト生成AI)がこれだけ発達し、メディアの加工やプログラムの作成まで何でもできる時代です。「それなら、AIの力を借りて自分で作ってしまおう!」と思い立ったのがきっかけです。

新キャラクター「いまかっちゃん(仮)?」

というわけで、完全自前で作り上げたのがこちらのパペットです。(※名前は暫定で「いまかっちゃん」と思いつきましたが、ちょっと変な感じもしています。)
Adobeのパペットと比べてしまうと多少見劣りする部分はありますが、動画用としては十分な機能を持っています。
音声連動: 私が話す声に連動して口がパクパクと動きます。
目の動き: 上目遣いなど、視線も動きます。
首の動き: 多少ですが顔の向きも変わります。(※現状、少し不安定な動きになることがあり、今後の課題です)
動画を作る上での「使い物」にはなんとか仕上がったかなと、個人的には割り切って満足しています。

Google Geminiに丸投げ!?

「どうやって作ったの?」と疑問に思うかもしれませんが、実はプログラミングの大部分は**AI(Google Gemini)**にお願いしました。
Geminiに質問する: 日本語で「こういう動きをするプログラムを書いて」と質問し、Pythonのコードを書いてもらいます。Geminiは非常に賢く、どんどんコードを生成してくれました。
パーツ画像の用意: 目(上・下・右・左)、口(開・閉)、体、頭など、パーツごとに細かく分けた画像(PNG形式)を用意します。
フォルダ構成: Macの中に専用フォルダ(mypuppet_systemなど)を作り、Pythonの実行ファイル(run_puppet.py)と、先ほどの画像パーツ群(assetsフォルダ)を格納して連動させました。

Mac「Automator」で起動を劇的にラクにする方法

自作プログラムの弱点として、「毎回ターミナル(黒い画面)を開いてコマンドを打ち込まないと起動しない」という厄介な問題がありました。これでは面倒ですよね。
そこで、Mac標準アプリの**「Automator」**を使って、ワンクリックで起動できるように一工夫しました。
手順: Automatorを立ち上げ、「シェルスクリプトを実行」を選択。そこにターミナルで打ち込んでいた短いコマンドをコピペするだけ。
アプリ化: これをアプリケーションとして保存すれば、**「自作パペット起動.app」**の完成です!
これからは、このアプリアイコンをダブルクリックするだけで、サクッとパペットを呼び出せるようになりました。

OBSへのパペット設定

OBSへのパペットの組み込みですが、OBSのソース→ウインドウキャプチャ、この中から、パペットのあるウインドウを選択します。

STREAM DECKがあると便利です。マルチアクションにて、OBS.app→自作パペット起動.app、と設定すればラクです。

さてと。。

その後の改善として、Pixelmator Proとの連携を作っています。形になったら紹介します。
生成AIを活用すれば、プログラミングの深い知識がなくても、日常の「ちょっと不便」「コストを削りたい」を解決できるツールが作れてしまいますよね。便利な時代になりました。