0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oculus Integration の LipSync 機能で、マイクで話した音素を直接取得する

Posted at

Unityを使ってVRでアレなゲームを作成しています。
VRのゲームってコントローラーで操作するのが結構煩わしいので、「音声認識で操作出来たらいいなー」などと思いいろいろ調べたことを備忘録程度に書きます。

やりたいこと/やったこと

Unity で Oculus Integration を使って Oculus Quest2 用のゲームを開発しています。
その際に喋った言葉を解析して操作をさせたいです。
喋った言葉を全部ひらがなに直すのは結構難しそうなので、簡易的に音素を取得して代用することにしました。

Oculus VR での音声認識に関して

まず前提として、Oculus Quest2 のVRゲームで音声認識(喋った言葉をひらがなに変換する)はどうも結構難しそうです。

以下参考にした記事など

ということで途方に暮れていましたが、「LipSyncって音素は取得できているみたいだし、これの数値直接取得したら何とかなるのでは?」と思ってやってみたら音素の取得自体は結構簡単でした。

LipSyncの音素取得

LipSyncの基本機能はデモシーン(Oculus > LipSync > Scenes > LipSync_Demo シーン)を参考にしました。
このシーンの中で重要なオブジェクトは InputType_Microphone で、僕のやりたいことはほぼここに詰まっているようです。

  • OVRLipSyncContext
    • マイクで取得した音声の音素を解析して、frameにぶち込みます。解析の細かい内容は不明。とりあえずframeを抜き出せば音素量が数値で取得できる。
    • ご丁寧に GetCurrentPhonemeFrame という関数でほかのスクリプトから frame をそのまま取得させてくれる。
  • OVRLipSyncContextMorphTarget
    • OVRLipSyncContextのframeの内容を、SkinnedMeshRendererに反映して口の動きを制御する。
    • 今回は誰かを喋らせるわけではなく、音素量を取得したいだけなので、特に必要ない。
      というわけで、外から OVRLipSyncContext の frame を取得して音素を解析します。

自作スクリプト

LipSyncContextGetter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LipSyncContextGetter : MonoBehaviour
{

    private OVRLipSyncContextBase lipsyncContext = null;
    OVRLipSync.Frame frame;

    // Start is called before the first frame update
    void Start()
    {
        lipsyncContext = GetComponent<OVRLipSyncContextBase>();
    }

    // Update is called once per frame
    void Update()
    {
        // sil、PP、FF、TH、DD、kk、CH、SS、nn、RR、aa、E、ih、oh、ou
        frame = lipsyncContext.GetCurrentPhonemeFrame();
        for (int i = 0; i < 15; i++)
        {
            Debug.Log(frame.Visemes[i]);
        }
    }
}

今回はとりあえずここまで。
この方法で操作できたかどうかまた記事書く予定です。

せっかくだから前作のリンクを置きたいのだけど、QiitaってDLSiteのR18作品のリンクとか載せたら怒られるのかな、、、

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?