OVRLipsynkの再生音遅延について
OVRLipsyncには実際再生する音と口パクには時間差がある.もともと雑音があるとうまく動かないOVRLipsyncだがOVRLipSyncContextでループバック再生をしたときのディレイがあることによる違和感が半端ない.そこで別のAudio Sourceを用意して口パクと時間差をつけて再生することで違和感を減らしてみた.
機器
●Unity:2019.4.18f1
●Oculus Integration:29.0.0
●Avatar:ミサキ(ユニティちゃんシリーズ)
●PC
OS:Windows 10 Education
CPU:Intel Core i5
Memory:16GB
状態
オブジェクトは基本構成にミサキを置いたのみ.見栄えのためにユニティちゃんについてくるアニメーションwait00を適用.ミサキには,OVR Lip Sync Context Morph TargetとOVR Lip Sync Contextを適用.OVR Lip Sync ContextのAudio Loopbackはオフにし,実際に聞こえるようのオーディオはミサキの子オブジェクトにアタッチしたAuido Sourceを用いて再生.これらAudio SourceはどれもPlay On Awakeをオフにしている.以下に今回オーディオを制御するのに使ったスクリプトMasterを添付する.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Master : MonoBehaviour
{
public AudioSource lipsyncsound;
public AudioSource outputsound;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
lipsyncsound.Play();
outputsound.PlayDelayed(0.27f);
}
}
}
キーボードでAを押すと,Publicで宣言されたLipsync用Auido Sourceが再生され実際に聞こえるoutputsoundが遅れて再生される.
結果
スクリプトにも記載があるが,0.27秒遅れて再生するのがちょうどよかった.これは機種に依存するのか,Unityの世代に依存するのかわからないがUnityでLipsyncを実装するときに再生音を遅らせることでリップシンクと整合がとれることがわかった.一応自分が同じ発話をしたときの口の動きを見ながらやったがどうだろうか.