awawa

@awawaInu

VRChatのアバターを音声で操作する

はじめに

VRChatはいわゆるソーシャルVRアプリのひとつで、平たく言えばみんなでVR空間で集まって、現実みたいにおしゃべりしたり、VRならではの楽しいことしようぜ、というものです。 私もあまりの楽しさに完全に入り浸っています。

さてそんなVRChatにおよそ1週間前に非常に大きなアップデートがあって話題になっていました。 hello.vrchat.com VRCがAvatar OSCという機能を追加したというものです。詳細は多く記事が出ていると思うのでそちらに譲りますが、何がすごいかというと "任意の入力" を使ってアバターを操作することができるようになりました(操作に使える情報の量や頻度には限りがありますが...)。

なんでも入力にできるので、部屋の温度をセンサで取得して気温に適した服装をアバターにさせたり、もっと実用的なところで言うと、これまで対応していなかったVR機器やiPhoneのフェイストラッキング機能を使って、ユーザーの表情をアバターの表情にマッピングしたりすることができるようになりました。 すでに多く同様の例が公表されてはいますが、私も音声認識でのアバター操作を実装したので、記事に残そうと思います。

何ができたか

音声認識をして、認識結果に応じてアバターの衣装の変更ができるようになりました。

実装について

実装は整理したのちに公開予定です。

GCPのCloud Speech-to-Text APIで認識

音声認識の中間出力を使ってレスポンスの向上

  • 上のデモを見ると音声を発してからアバターに反映されるまでのレスポンスがかなり良いことがわかると思います。これは音声認識の中間出力を使用しているためです。
    • 音声認識結果は中間出力と、発話区間の終端が確定した段階で出力される最終結果があります。
    • 終結果の方が認識は正解になりやすいものの、音声が終了したことが分かった後で最終的な結果が出力されるため、最終結果を待って判定をすると認識から動作までの遅延が大きくなります。中間出力は入力されたところまでの音声情報を使って多少先読み的に認識結果を出すので、うまく使うとレスポンスをよくできます。 -上記のデモの実装では、中間出力に対して単語とのマッチングを行い、一度マッチングした単語はそれ以降の中間出力とはマッチングしないような実装をしました。

参考

  • OSCのセットアップについては、下記の記事が非常にまとまっていてわかりやすいです。(友人のたかくんが、私が音声認識アバターに服を脱がせようと必死な裏で頑張って書いていた記事です。)