エンジニアの藤岡です。
指鉄砲を構えて「バン!」という遊び、誰しも一度はやったことがあるのではないでしょうか。
その動作で実際に遊べる体験コンテンツ「Cyber Bang」をリリースしました。
Hand Trackingで指の位置・向きに合わせて敵を狙い、マイクに向かって「バン」と声を出すと発射します。
単純にマイク音量に反応しているのではなく、機械学習を応用した音声認識を使って「バン」「ダダダ」「ドン」を言い分けることでショットの種類を変えられるようにしてあります。
さらに、Face Trackingも併用して、顔を動かすことで敵の攻撃を避けることができるようになっており、うまく攻撃を避けながら隙を見て狙って声で射撃するゲームになっています。
エンジニアリングを藤岡、ロゴ・UIデザイン・説明パネルを村井、ボス敵のCG・ステージ作成を中嶋の3人体制で製作しました。
Maker Faire Kyoto 2023への出展
「Cyber Bang」は2023年4月29日・30日に行われたMaker Faire Kyoto2023に出展しました。
元々「声でバンバンシューティング」という指鉄砲と音声認識で射撃ができる技術モックを以前に作っていました。
この技術をベースに体験コンテンツを仕上げたいと以前から思っており、Maker Faire Kyoto 2023のタイミングに合わせて内容を一新し、1-10ブースの一つとして「Cyber Bang」を公開しました。
Maker Faireで出展ということで、「ゲームやセンサー馴れしたユーザー」を想定し、遊び方の複雑さやゲーム難度を少し高めに想定して作ってみました。
….が、イベント当日は「 ゲームやセンサー馴れしたユーザー が連れてきた子ども」にかなりの人気がありました。
そのため、小さい子には操作感やボス戦が少し難しかったという結果も。
それでもうまく遊べた参加者はかなりの高得点を出す人もおり、結構楽しんでもらえたように思います。
今後も難易度はあまり変えず、やや難しめのゲームとして進めていく予定なので、どこかで体験される機会があればぜひ挑戦してみてください。
Cyber Bangの技術
「Cyber Bang」では主に3つの技術を併用してゲームを作っています。
- 指鉄砲で狙うHand Tracking
- 射撃を打ち分ける音声認識
- 敵の攻撃を回避するためのFace Tracking
指鉄砲で狙うHand Tracking
指鉄砲のトラッキングにはUltraleap 3Diを使っています。
最近はカメラ映像を使ったハンドトラッキングも性能が良くなってますが、3D空間的に指鉄砲の位置と向きを精度よく捉えたかったので、 Ultraleap 3Di を利用しました。
Ultraleap 3Di については以前に紹介記事を書いてあるので、良ければこちらもご覧ください。
射撃を打ち分ける音声認識
音声認識を使って「バン」「ダダダ」「ドン」を識別し、ショットを撃ち分けられるようにしてます。
- 「バン」:通常のショット
- 「ダダダ」:連射ショット
- 「ドン」:強力ショット
それぞれ残弾数と弾切れ時のリロード時間を設けてあり、同じショット撃ち続けられないようにして、撃ち分けを意識させるような体験設計にしました。
特に「ドン」の強力ショットは1発撃つとしばらく撃てないので、タイミングよく狙って使うことが重要になってます。
PyTorchを使ったローカルPC音声認識
音声認識にはPyTorchを使って、独自のモデルを構築し、ローカルPCで処理しています。
通常の音声認識だと、WhisperやVOSKなどローカルPCで動作できて精度の高いものもあるので、そちらを使うことも多いです。
ただ、これらの音声認識では声を出して認識結果が返ってくるまで数秒待つこともあります。会話体験に使うには大きな問題にはならないですが、「Cyber Bang」のような高速な音声インタラクションには不向きです。
そこで「Cyber Bang」ではマイク入力音を細かく分割しながら音声認識をローカルPCで高速処理させることにより、発声から発射までのラグがかなり短くなるようにしてあります。
音声や言葉の認識というより、音識別と言う方が近い手法になっており、およそ0.1秒ごと程度の間隔で処理が動いてます。精度よりも応答測速度を重視してこのような仕組みにしました。
音声の学習データは、自分の声や社内のメンバーに何人か協力してもらって録音・学習させています。
特に自分の声だと識別率もまぁまぁ良い結果になったのですが、Maker Faire Kyotoでは小さい子どもの体験も多く、子どもの声の学習データがあまりにも不足していて、子どもの声の識別率が低い結果になりました。
子どものショット撃ち分けの識別率は低かったですが、ショット自体は機能していたので(「ダダダ」の連続ショットと識別されることが多かった)、ゲーム進行への致命的な影響はなかったため、楽しんで遊んでもらえました。
音声認識と騒音環境
音声認識という仕組み上、騒音問題はどうしても避けられません。
Maker Faire Kyotoの時はマイク入力音の調整くらいで特別な騒音対策はしてないですが、実は、特別な騒音対策無しでどのくらい実用的か(または使い物にならないか)のテストをするという裏目的も兼ねていました。
Maker Faire Kyoto の会場は爆音が鳴ってなかったこともありますが、来場者が回りにいる程度であれば使えることが確認できました。
いざとなったらNVIDIA Broadcastなどのノイズ除去ツールの導入も考えてましたが、 Maker Faire Kyoto では使わずに済みました。
敵の攻撃を回避するためのFace Tracking
「Cyber Bang」は指鉄砲と声の射撃で遊べるゲームですが、さらにFace Trackingで顔の位置を検出しており、左右に顔(体)を動かすことで敵の攻撃を避けられるようにしてます。
特に最後に登場するボスは強めに設定してあり、うまく攻撃を避けないとゲームオーバーになりやすくしてます。
こうすることで、単純に敵を撃つだけではない緊張感やタイミングの駆け引きを感じながら遊んでもらえるのでは、という狙いを持ってこの機能をつけました。
遊び方の複雑さも上がるためFace Trackingを削る可能性もありましたが、実際に遊んでいる人の様子を見ていると白熱して楽しんでいるようで、うまく機能したように思います。
Face TrackingはMediapipeを使いました。
Mediapipe も含め、各種Face Trackingを検証し、制御用途で使ってみた記事もありますので、良ければこちらもご覧ください。
まとめ
技術モックで止まっていた指鉄砲と音声認識の仕組みを使ってコンテンツを仕上げたい、Maker Faire Kyotoの来場者に楽しんでもらいたい、という思いで今回の製作を始めましたが、まずは目的を果たせたかのではないかと思います。
また、裏目的として、イベント会場での騒音環境での音声認識の実用度合の調査というのもありました。
こちらもまずまずの結果だったので、今後に向けて良い経験になったと思います。
どこかでお目にかかることがあれば、ぜひ遊んでみてください。
今回は「Cyber Bang」のコンテンツ紹介と技術説明をしましたが、ロゴ・UIデザイン、CGモデルについてもまた次回詳しく紹介させていただきます!