【Cubism SDKのバージョン】Cubism SDK for Unity R4 6.2
【OS名・バージョン】macOS Ventura 13.3.1
【開発使用ツール】Unity 2021.3.23f1
【不具合の状況】
◯発生事象
Unity SDK - Script経由でリップシンクがなかなか実現しないためご質問です。
◯詳細情報
・Live2dで制作したモデルをWebGLでビルドしてWebアプリケーションに組み込んでいます。
・音声はVoicevoxを使ってTypeScriptを経由してUnity Scriptへ渡すように設定しています。
・Unity Editor上ではこちらのドキュメントの設定は行っており、サンプルの音声をつけるときちんとリップシンクすることは確認済みです。
・SDKの中身を見て、CubismAudioMouthInputのメソッドのUpdate()の中にリップシンクさせる処理が入っているのではないかと推察して、同じ処理をするPublicUpdate()を作ってUnity Scriptで処理するようにしています。
・音声の再生はWebGLビルドして組み込んだUnityからできていることは確認済みです。
◯Unity Scriptの情報
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Live2D.Cubism.Core;
using Live2D.Cubism.Framework;
using Live2D.Cubism.Framework.MouthMovement;
using UnityEngine.UI;
using UnityEngine.Networking;
public class speakWithUrl : MonoBehaviour
{
private AudioSource audioSource;
private CubismMouthController mouthController;
private CubismAudioMouthInput audioMouthInput;
private void Start()
{
GameObject audioObject = GameObject.Find("Audio");
if (audioObject)
{
audioSource = audioObject.GetComponent<AudioSource>();
}
else
{
Debug.LogError("Audio object not found in the scene.");
}
mouthController = GetComponent<CubismMouthController>();
audioMouthInput = GetComponent<CubismAudioMouthInput>();
}
public void PlayVoiceFromUrl(string audioUrl)
{
if (!string.IsNullOrEmpty(audioUrl))
{
StartCoroutine(DownloadAndPlayAudio(audioUrl));
}
}
private IEnumerator DownloadAndPlayAudio(string audioUrl)
{
UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(audioUrl, AudioType.WAV);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.LogError(www.error);
}
else
{
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);
audioMouthInput.AudioInput.clip = audioClip;
audioMouthInput.AudioInput.Play();
}
}
private void Update()
{
if (audioMouthInput.AudioInput.isPlaying)
{
audioMouthInput.PublicUpdate();
}
}
}
上手い対処法がありましたら教えていただきたいです!!
よろしくお願いいたします。