データサイエンス

PythonとUnityの連携(AI開発とゲーム開発の融合)

PythonとUnityの連携の必然性

f:id:gri-blog:20201101183538j:plain

AI開発ではPythonがデファクト・スタンダードになっている。典型的なものとして

  • 画像解析
  • 動画解析
  • 音声解析
  • 自然言語処理
  • 感情推定
  • 物体認識
  • 姿勢推定
f:id:gri-blog:20201101192306j:plain

ゲーム開発ではUnityが、とてもよく使われている。プログラミングが分からなくても、ゲーム開発をはじめられる。ただし、細かい制御はC#などを使う必要あり。

  • オブジェクト
  • 背景
  • サウンド
  • ライティング
  • カメラワーク
  • 動作制御(物理エンジン)
  • ゲームシナリオ

AI開発側からするとゲーム開発の豊かな表現力がうらやましく、ゲーム開発からするとAI技術の利用はゲーム制御において魅力的なものです。両者の良いとこどりは、今後の趨勢なので、試しにUnitychan Live Assetをベースに、デモ機を作ってみました。

Unityちゃんライブステージ(PythonとUnity連携)

Unitychan Live StageにAIエフェクターを装備

Unitychan Live Stageは、ダウンロードするだけで素晴らしいステージングを再生できる。ただ、違う音楽を入れると、違和感がでてくる。理由は、音楽、ダンス、ステージがマッチしていないため。

f:id:gri-blog:20201101185052j:plain

AIエフェクターを作り、自分好みのステージングに自動で作成するようにした。AIエフェクターのメインでやっていることは、スピーカーエフェクトやライティングのタイミングを音楽に基づいて自動制御。さらにダンススピードも音楽に基づいて自動制御。カメラワークも制御したかったが時間が不足して一次断念。

もう少し、細かく書くと、メインでやっているのは、事前にMP3の楽曲ファイルをPythonで自作したMusic Recognizerへ投入し、音楽ごとに、こんなことを自動で行っている。

  • Beatのタイミングの検知
  • Harmonyのタイミングの検知
  • 音楽のテンポの推定(いわゆるBPM)
  • Keyの推定(調を推定。これを使って色の変化をさせたかったが時間の都合上、断念)
f:id:gri-blog:20201101185310j:plain

より全体像を記述すると、上記のような感じ。再生する音楽ごとに、Music Feature (Beat, Harmony, Tempo, Key)をPythonで取り出す。この取り出したデータをCSVファイルにして、UnitychanのC#の該当部分に対して、それぞれのタイミングを読み込めるように変更。Beatのタイミングでスピーカーのエフェクターが自動で切り替わる、と言った感じ。このプログラムをかませることによって、音楽の特徴量の取り出し方を変えるだけで、さらに複雑な制御やコンテンツの大量生成が可能になる。

また、リアルタイムでUnitychanのステージングを変えたい要望もあるため、Python側でマイクとカメラをベースにした入力信号を取り込むことにした。入力信号はリアルタイムで認識され、制御命令に変換してUDP通信でUnity側へ送信。Unity側で制御命令を理解してUnitychanのステージングを変更する。

Gotoイベント事業などで使える技術

今回、ご紹介した技術は、経済産業省主導のGotoイベント事業などを含めて使えそうだと思います。例えば、無観客ライブの配信などに対して演出効果の自動化などです。邪魔なエフェクトは本末転倒ですが、ステージセットの準備も難しい状況下であり、自動で素晴らしい演出ができるならば、視聴者の没入感を効率的に促進できる余地があります。上記に加え、こんなことにも使えそうです。

  • ミュージシャンのライブ配信でのエフェクト
  • ナイトクラブのライブ配信でのエフェクト
  • シチュエーションに応じた音楽再生
  • オープニング動画の自動生成

お問合せ等

デモや開発の依頼は、こちらのリンク先のフォームより、お気軽にお問合せください。

また、GRIに入って一緒に開発してみたい人、こちらより、お問合せください。

古幡征史