はじめに
ZoomがSDKを提供しはじめたということで盛り上がりを見せている昨今ですが、Qiitaでも盛り上げイベントが開催されています。SDKでいろいろ遊ばせてもらえる上に、アイテムもゲットできるかも、ということで参加するしかないですね。
ということで、これを機にいろいろ実験してみたのですが、面白そうなことがたくさんできそうだったので、いくつか連投する予定です。ご興味を持たれましたら、後続の投稿もご覧ください。
第1回の記事はこちら⇒Zoom Meeting SDKでタイムキーパーちゃんを作る
第2回の記事はこちら⇒Zoom Meeting SDKでアバターにいろいろしゃべらせる
第3回の記事はこちら⇒Zoom Meeting SDKをつかって会議にアバターで参加する ←本記事
第4回の記事はこちら⇒Zoom Meeting SDKでなんちゃってボイスチェンジャー
番外編の記事はこちら⇒Zoom Meetingにアバターで参加するぞ。番外編
第5回の記事はこちら⇒Zoom Meeting SDKとVosk browserでZoom会議のリアルタイム文字起こし
前回までは時報ちゃんはボットとして会議に参加していたのですが、今回はユーザの表情をキャプチャして時報ちゃんの動きに同期させるようにします。これで、アバターを使って会議に参加できますね。
完成品は↓こんな感じです。今回は音声を使わずハウリングの心配がないので、参加者の画面を横に並べてみました。
(ここでは、カメラ映像の代わりに動画を用いてます。カメラ映像と動画の両方サポートしています)。
AIで表情やポーズを認識しているのでアラはありますが、それなりによく動いていると思います。特に顔の表情の読み取りはかなりよくできているので、顔だけキャプチャするようにしてもいいかもしれません。
とりあえず、Dockerイメージにしているので、ダウンロードして使ってみてください。
なお、音声を使いたい場合は引き続き、VoiceVoxとOpenTTSも起動してください。詳細は前回の記事を参照ください。
$ docker run -p 8888:8888 dannadori/zoom-meeting-plus:v03
# ↓オプション
$ docker run --rm -it -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-ubuntu20.04-latest
$ docker run -it -p 5500:5500 synesthesiam/opentts:en
http://localhost:8888/ にアクセスすれば使えるようになります。
なお、httpで起動しているのでローカルで使用する必要があります。
操作は次の通りです。
構成
前回までにご紹介してきた構成に画像処理機能を追加しました。画像処理の結果をAvatarに反映させています。画像処理ではMediapipeのモデルを使用しています。ただし、公式のMediapipe JavaScript Solutionsは現時点ではWebWorkerでは動きません(参考)。このため、独自にWebWorkerで動かす部分を作成しています。(この処理については、こちらのリポジトリをご参照ください。)実装は公式からは公開されていないため、一部推測で実装しているところがあります。これが少し画像認識の結果がぶれる原因の一つかと考えています。要改善ですね。(というか、公式で出してほしい。)
デモ
記事の冒頭で示した通りです。
リポジトリ
ここで紹介したデモは次のリポジトリで公開しています。
https://github.com/w-okada/zoom-meeting-plus
どんどんアップデートしていくので最新版は安定しない可能性があります。
次のタグでcloneして使ってください。
$ git clone https://github.com/w-okada/zoom-meeting-plus -b v03
宣伝
弊社 FLECT は、Salesforce を中心に AWS, GCP, Azure を用いたマルチクラウドシステムの提案、開発を行っております。 また、ビデオ会議システムについては、Zoom SDK, Amazon Chime SDK, Twillio など各種ビデオ会議用 SDK を用いたシステムの開発しており、サービス化の実績も多数あります。 ご興味をお持ちいただけたら是非ご相談ください。