【Mac】Webカメラと声で動く!「自作パペットシステム」を作りました〜無料配布〜

今回は、Webカメラとマイクを使って、自分の顔の動きや声に合わせて画面上の動作人形(パペット)を動かせる**「自作パペットシステム」**をご紹介します。

「自分専用のオリジナルアバターを、もっと手軽に動かしてみたい!」という思いからPythonで開発を進めていたシステムですが、前回の記事の内容に改良を加え、やっと誰でも簡単に使えるパッケージになりました。

この辺で、Adobeのパペットにバイバイして、Adobeのサブスクをキャンセルすることにします

今回はサンプルパペット付きのアプリ(ZIPファイル)を無料公開します。プログラミングが分からない方でもすぐに使えるように工夫したので、ぜひダウンロードして試してみてください。

字幕一覧(クリック)

(00:00:00) 〜自作パペットサンプル起動〜
(00:00:12) これがですね、ブログの記事に掲載しますサンプルパペットです。
(00:00:24) で、これそうですね、キャラを実行。
(00:00:29) うん、こんな風にですね、いくつもできちゃうんですね、面白いですね。
(00:00:34) 例えば、ここでimakat1号の方も起動させますとね。
(00:00:43) そうすると、ほら、これがなんと、
(00:00:46) キャラクターが、サンプルが2つと、同じものが2つと、
(00:00:58) もう1つ、imakat1号ですね。このキャラクターも動いていると。
(00:01:07) これはカメラとマイクを同じものを使っているものですから、3つとも同じ動作になっていますが。
(00:01:17) これはカメラもマイクも一応、キャラクターごとに設定できるようにしてあるので、
(00:01:27) やりようによってはですね、違うキャラクターが登場して違う人が操作すると、
(00:01:36) ということがですね、可能になるようになっています。
(00:01:42) それでは、この仕組みをどのように導入していくかということについて、
(00:01:50) ブログの記事をお読みいただきたいと思います。

✨ 自作パペットシステムの3つの特徴

1. Webカメラとマイクだけでスルスル動く

高価なトラッキング機材は不要です。Macの内蔵カメラ(またはWebカメラ)があなたの顔の傾きを認識し、マイクが声の大きさを拾って、パペットがリアルタイムに連動します。

「あいうえお」の口の形にも対応しており、まばたきや視線の移動も自動で行います。

2. 専用の設定画面(UI)でカンタン調整

以前はプログラムのコードを直接書き換える必要がありましたが、専用の「司令塔」となる設定画面を用意しました。

「マイクの感度」「パペットの大きさ」「顔の傾き具合」などを、数値で直感的に微調整できます。自分好みのセッティングを見つけたら、キャラクターごとに保存しておくことが可能です。

3. スペースキーでいつでも正面をリセット!

使っている途中で「ちょっと顔の向きがズレてきたな…」と思ったら、スペースキーをポンッと押すだけ。その瞬間のあなたの顔の位置を「真正面」として再設定(キャリブレーション)します。

📥 ダウンロードと使い方

以下のリンクから、一式がまとまったZIPファイルをダウンロードしてください。

👉ダウンロード(Macのみ)(無料・許諾不要)

使い方の手順(※Mac専用です)

使うためには、お使いのMacに「Python」が入っている必要があります。(入っていない方は公式サイトからインストールしてください)

  1. ダウンロードしたZIPを解凍し、フォルダを開きます。
  2. 初回のみ、フォルダ内の『はじめにお読みください.txt』の手順に従って、必要なAIパーツ(MediaPipeなど)をインストールします。(※ターミナルにドラッグ&ドロップするだけです!)
  3. 準備ができたら、**「自作パペット起動.command」**をダブルクリック!
  4. 設定画面が開くので、キャラクターに「サンプル」を選んで「起動」ボタンを押せば完了です。

※初回起動時はMacのセキュリティで弾かれることがあります。その場合はファイルを「右クリック」→「開く」を選択してください。カメラのアクセス、マイクのアクセスの許可を求められたら「許可」を選択してください。

🎨 応用編:オリジナルのパペットを自作しよう!

今回お配りしたフォルダの中には、run_assets/サンプル という場所に、パペットのデザインの元になった 「サンプル.pxd」 というファイルが入っています。

Macの画像編集ソフト「Pixelmator Pro」をお持ちの方は、このファイルを開いて自分の好きな絵に描き換えるだけで、完全オリジナルの自作パペットを作ることができます!

さらに、Pixelmator Proから画像を書き出してパペットを起動するまでを「ワンクリック」で全自動化する裏技(AppleScriptとAutomatorの連携)も開発しました。私は、サブスク版ではない、以前からある単発アプリを使っています。もしサブスク版で「パペット書き出し起動.app」がうまく動かなくなった場合は、Automatorで作成したAppleScript内の tell application “Pixelmator Pro” という1行を、新しいサブスク版の正確なアプリ名に書き換えるだけで解決します。

コードや詳しい仕組みに興味がある方は、こちらのページにスクリプトを公開していますので、ぜひ覗いてみてください。

要約:このシステムは、顔認識と音声入力を利用してリアルタイムで動作するデスクトップパペットを実現します。
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での画像編集からパペット起動までがスムーズに連携されます。
公開スクリプトに関するお問い合わせは以下へ↓

PixelmatorProによるパーツの変更をパペット起動アプリに即座に反映している動画を以下に掲載します。

字幕一覧(クリック)

(00:00:00) 〜パペット生成パイプライン〜PixelmatorProからPython連携〜
(00:00:11) このbodyの方がですね、選ばれて書き込まれるということになります。
(00:00:18) で、紺のbodyの方はちょっとこう、脇にですね、よけておきます。
(00:00:25) さあこれで、今これファイルをですね、保存します。
(00:00:30) そして、「パペットの書き出し起動」を起動させます。
(00:00:36) そうするとダダダダダッと動いていってですね、
(00:00:42) なんと、あっという間に、紺の服装からベージュの服装に、お着替えができました。
(00:00:56) さあそれではまた今度ですね、また紺の服装に戻ってみたいと思います。
(00:01:02) はい今度これをずらして、紺の服装に着替えて、
(00:01:11) で、bodyをこっちはベージュにします。
(00:01:22) で、紺の方をですね、これ紺のを取り外します。bodyだけにします。
(00:01:32) そうすると今度入れ替わるはずですよね。はい、それではプログラムを起動させます。
(00:01:45) はい、どうでしょうか。入れ替わりましたね。これで入れ替わったわけです。
(00:01:57) こんなように簡単にですね、入れ替わる事ができます。
(00:02:02) やり方としては、Pixelmator Proにファイルを作って、
(00:02:07) そのファイル上のパーツを入れ替えるということができます。
(00:02:11) そしてこのアプリを起動させることによって、サッと入れ替えができるという、
(00:02:19) 優れた仕組みができております。以上です。

💡 OBSでリアルタイム配信に使いたい方へ

このパペットシステムは、OBS Studioを使ってリアルタイム配信などの画面に合成することも可能です。

ウィンドウキャプチャでパペットの画面を取り込み、背景(グリーンバック等)を透過させればOKです。

【ワンポイントアドバイス:音ズレの直し方】

映像の処理には少し時間がかかるため、OBS上で「声(マイク)」に対して「パペットの口の動き(映像)」がわずかに遅れて見えることがあります。

その場合は、OBSの「オーディオの詳細プロパティ」から、マイクの「同期オフセット」を「200ms〜500ms」ほどプラスに設定して、声をわざと遅らせて映像に合わせると自然になります。私は今500msに設定しています。

おわりに

自分が描いたイラストが、自分の動きに合わせて滑らかに動く体験は、何度やっても感動します。それではご自由に利用ください。